テクニカル分析って面白い!! MACDを使った株式トレードに挑戦

記事
マネー・副業

TradingViewでテクニカル分析に基づく株式トレードのアイデアが評価できます

今回は、MACDを使った株式トレードをTradingViewのストラテジーテスターで評価します。

過去に行った、テクニカル分析に基づく株式トレードについては、下記の記事を参照ください。

MACDに基づく株式トレードのストラテジー

今回評価するストラテジーは、以下の通りです。

■買いトレードのエントリー条件
MACDがMACDシグナルを下から上にクロスしたタイミング

■買いトレードのイグジット条件
MACDがMACDシグナルを上から下にクロスしたタイミング(空売りトレードのエントリー条件と同じ)

■空売りトレードのエントリー条件
MACDがMACDシグナルを上から下にクロスしたタイミング

■空売りトレードのイグジット条件
MACDがMACDシグナルを下から上にクロスしたタイミング(買いトレードのエントリー条件と同じ)

MACD, 等を算出する期間は、以下の通りです。

- 短期: 12日
- 中期: 26日
- シグナル: 9日

また、建玉を保有している状況では、新たな売買は行わないものとします。

TradingViewのストラテジーテスター向けPineスクリプトのソースコード

上記のストラテジーをPineスクリプトで記述したものが、下記となります。

//@version=6
strategy("MACD", overlay = false, process_orders_on_close = true)

// バックテストの期間を設定
StartTime = input.time(defval = timestamp("01 Jan 2005 00:00 +0600"), title = "テスト開始年月日")
EndTime = input.time(defval = timestamp("31 Dec 2024 00:00 -1200"), title = "テスト終了年月日")

// 期間の条件式
bool CondTime = StartTime <= time and time <= EndTime

// MACDの各種設定
float MACDSource = input.source(close, title = "MACD Source")
int MACDFastLength= input.int(12, title = "MACD短期")
int MACDSlowLength = input.int(26, title = "MACD長期")
int MACDSigLength = input.int(9, title = "MACDシグナル期間")

// MACDの算出
[MACD, MACDSig, MACDHist] = ta.macd(MACDSource, MACDFastLength, MACDSlowLength, MACDSigLength)

// プロット
plot(MACD, title = "MACD", linewidth = 2, color = color.red, precision = 2)
plot(MACDSig, title = "MACDSig", linewidth = 1, color = color.blue, precision = 2)
plot(MACDHist, title = "MACDHist", color = MACDHist < 0 ? color.blue : color.red, style = plot.style_columns, precision = 2)

// 売買ID
const string IDLong = "Long Entry"
const string IDShort = "Short Entry"

// 売買条件の設定
// 買いトレードのエントリー条件
bool CondLongIn = MACD[1] < MACDSig[1] and MACDSig <= MACD

// 空売りトレードのエントリー条件
bool CondShortIn = MACDSig[1] < MACD[1] and MACD <= MACDSig

// 買いトレードのイグジット条件
bool CondLongOut = CondShortIn

// 空売りトレードのイグジット条件
bool CondShortOut = CondLongIn

// 株式トレードの実行
// 買いトレードの決済
if (CondTime and CondLongOut)
    strategy.close(IDLong, comment = "返売")

// 空売りトレードの決済
if (CondTime and CondShortOut)
    strategy.close(IDShort, comment = "返買")

// 買いトレード
if (CondTime and CondLongIn)
    strategy.entry(IDLong, strategy.long, comment = "買")

// 空売りトレード
if (CondTime and CondShortIn)
    strategy.entry(IDShort, strategy.short, comment = "売")

上記のPineスクリプトにおいて、一つだけ修正すべき点があります。

■Pineスクリプトの修正内容
1行目の「@」を半角のアットマークに置き換えてください

coconalaブログは、半角のアットマークを記述することができない仕様であるため、このような対応を行っています。

TradingViewのストラテジーテスターによるストラテジーの評価結果 概要

今回は、日経平均株価を対象として、TradingViewのストラテジーテスターを使用したストラテジーの評価結果(概要)を以下に示します。

TradingView_MACD_評価結果.jpg
ストラテジーテスターによる評価結果 概要(出典: TradingView)

評価期間は、2005年1月1日から2024年12月31日の20年間としました。

また、株式トレードにおける手数料や税金、等は考慮していません。

- 純利益: 7,841.21円(1株単位)
- プロフィットファクター: 1.077
- トレード合計: 381
- トレード勝率: 33.33%

純利益は、100株単位に換算すると784,121円となります。

このため、1年平均では39,206.05円です。

純利益が少なすぎるからダメということではありません。

株式トレードの詳細を日足チャートで確認し、問題点を改善する条件を抽出し、結果をストラテジーに反映し、評価を行うプロセスを繰り返すことで、より良いストラテジーが完成します。

もし、試してみたいストラテジーがあるけど、自分でPineスクリプトを作成するのは面倒、等であれば、私の方でPineスクリプトを作成致します。
あるいは、私がストラテジーを作成するサービスも提供しています。
ご興味のある方は、お気軽にお問い合わせください。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら