MACDとストキャスティクスは、テクニカル分析において最も一般的に使用されるオシレーターです。この記事では、MACDとストキャスティクスを使用して、逆張り取引を行う方法について説明します。
また、実際にこの組み合わせは儲ける事が出来るのか?、PineScriptでプログラムを作ってバックテストしてみました。結構参考になると思います。
逆張りで有効なオシレーターの組み合わせ
有効的なオシレーターの組み合わせは、こちらに過去に記事を書きました。
MACDとCCIのオシレーターの組み合わせで売買
主な戦略
MACDとストキャスティクスを組み合わせた逆張り戦略では、ストキャスティクスが80以上または20以下に達したときに、売りまたは買いのサインが発生すると考え、MACDの線がシグナル線を下回った場合に売りシグナルが発生し、MACDの線がシグナル線を上回った場合に買いシグナルが発生するような取引を行います。
具体的には、ストキャスティクスが80以上に達した場合は「売り」、20以下に達した場合は「買い」のシグナルを待ちます。そして、MACDの線がシグナル線を下回った場合には、ショートポジションを取ります。逆に、MACDの線がシグナル線を上回った場合には、ロングポジションを取ります。
ChatGPTで基本形を作成
最近はゼロからコードを組むのが面倒になりました。流行りのChatGPTで原型を組んでみました。ChatGPTに質問した内容はこちら。コツはロジックについて詳しく述べる事です。儲かるトレードとか、曖昧だと曖昧な結果しか出ません。
ChatGPTに質問した内容
ChatGPTが出したソースコード
ソースコード
エラーだらけだったので、かなり修正しました。バージョン5指定したのですが、バージョン4の書き方の箇所がかなり出ていました。AIではその部分は理解出来ていないのかもしれません。
//@version=5
strategy("Sth and MACD Reversal", overlay=true)
// Stochastic settings
length = input(14, title="Stochastic Length")
sth_smoothK = input(3, title="Stochastic K")
sth_smoothD = input(3, title="Stochastic D")
overbought = input(80, title="Overbought Level")
oversold = input(20, title="Oversold Level")
// MACD settings
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
[MACD, MACD_signal, MACD_histLine] = ta.macd(close, fastLength, slowLength, signalLength)
// Entry conditions
stoch = ta.stoch(close, high, low, sth_smoothK)
buySignal = ta.crossover(MACD, MACD_signal) and (stoch < oversold)
sellSignal = ta.crossunder(MACD, MACD_signal) and (stoch > overbought)
// Position management
stopLoss = input(20, title="Stop Loss (pips)")
takeProfit = input(20, title="Take Profit (pips)")
longSL = low - stopLoss * syminfo.mintick
shortSL = high + stopLoss * syminfo.mintick
longTP = high + takeProfit * syminfo.mintick
shortTP = low - takeProfit * syminfo.mintick
// Place orders
if buySignal
strategy.entry("Buy", strategy.long)
if sellSignal
strategy.entry("Sell", strategy.short)
// クローズの実行
strategy.exit("Exit", "Buy", limit=close + takeProfit)
strategy.exit("Exit", "Sell", limit=close - stopLoss)
バックテストした結果
いくつかエラーが出たので修正して実行した結果です。ドル円、5分足、0.1ロットでトレード。期間は2023年のデータ(1月〜2月)の結果です。何もパラメーターをいじっていない状態で、かなり良い結果でびっくりです。
初期設定でのパラメーター
設定値は以下のとおり。これを細かく調整していけば、もっとトレード回数が上がりそうです。意外と初期値でもいけますね。
パラメーターを調整した結果
スキャルピングっぽい形になり、勝率が6割と下がりましたが、純益が約3倍。プロフィットファクターも1.4と上出来です。
ドローダウンが異様に高いので、そのへんの工夫は必要かも。ですが、AIでざっと出してくれたソースコードでここまで確認出来たので
結論
MACDとストキャスの組み合わせでの逆張りは、かなり使えそうです。パラメーターの設定次第にはなりますが、スキャルピングっぽくなって、うまーく使えばですが利益が積み重なりそうです。
コメント