この戦略は,MACD指標の二重移動平均値のクロスオーバーを計算することによって,購入・販売信号を識別する.取引信号を示すために,チャートに矢印をプロットする.
この戦略はまず,高速線 (12期EMA),スローライン (26期EMA) とMACD差を計算し,高速線とスローラインのクロスオーバー,およびMACD差のプラス/ネガティブな値に基づいて,ロングとショートシグナルを決定します.
偽信号をフィルタリングするために,コードは以前のキャンドルスタイクの信号もチェックします.現在の信号は,以前のキャンドルスタイクに反対の信号 (購入対販売またはその逆) がある場合にのみトリガーされます.
さらに,チャートには 購入・販売の信号を示す矢印が描かれています.
この戦略の利点は以下の通りです.
この戦略のリスクは
戦略を改善する方法:
二重移動平均クロスオーバー矢印戦略は,かなりシンプルで実用的です.二つの移動平均値とMACD差フィルタリングのクロスオーバーを使用して,中期および長期的トレンドの間にエントリーと出口を特定し,見逃した価格逆転を回避します.矢印信号はまた,明確な運用指針を提供します.パラメータチューニング,追加のフィルター,適応最適化によって安定性と収益性のさらなる改善を達成することができます.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //Daniels stolen code strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0) //Define MACD Variables fast = 12, slow = 26 fastMACD = ema(hlc3, fast) slowMACD = ema(hlc3, slow) macd = fastMACD - slowMACD signal = sma(macd, 9) hist = macd - signal currMacd = hist[0] prevMacd = hist[1] currPrice = hl2[0] prevPrice = hl2[1] buy = currPrice > prevPrice and currMacd > prevMacd sell = currPrice < prevPrice and currMacd < prevMacd neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd) //Plot Arrows timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1)) timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1)) plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup) plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown) //plotshape(neutral, color=black, location=location.belowbar, style=shape.circle) //Test Strategy // strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high // strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01)) strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01)) strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01)) // strategy.entry(id = "Short", long = false, when = enterShort()) // strategy.close(id = "Short", when = exitShort()) //strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high // strategy.exit("exit", "long", profit = 10, loss = 5) // ge