双EMA突破取引戦略は,二つの異なる周期のEMA平均線を利用して,売り切りの信号判断を行う傾向追跡戦略である.この戦略は,トレンド市場の良いエントリータイミングを得るために,追加のEMA指標を組み合わせて取引信号をフィルタリングする.
この戦略は,快線EMA (9サイクル) とスローラインEMA (21サイクル) の金叉死叉を使用して,買いと売るタイミングを判断する.快線がスローラインを通過すると買い信号が発生し,快線がスローラインを通過すると売る信号が発生する.偽の信号を過濾するために,補助EMA (5サイクル) とさらに2つのEMA (1サイクル,4サイクル) が導入される.高速線がスローラインで金叉死叉が発生すると同時に,補助EMAが高速ラインの間にあり,1サイクルが4サイクルEMAより高い場合にのみ,真の取引信号が発生する.
トレーディング・シグナルがトリガーされたとき,戦略はATR値に基づいて止損位と止損位を設定する. TP1はATRの6倍で,より速い速度で部分的な利益を得るために使用される.価格がTP1をトリガーしない場合,快線EMAが補助EMAを再び横切ると,直接ポジションを平らにする.
優化方向:
双EMA突破トレード戦略は,複数のEMAフィルタとATR動的ストップ・ロストが加わり,複数のEMAを交差してトレンド判断を行う.しかし,EMA曲線適合,ストップ・ロストリスクなどの問題には注意が必要である.パラメータ最適化,リスク管理などの手段により,より安定したトレードパフォーマンスを得ることができる.この戦略は,トレンド市場での高い資金利用率を得るために,ある基礎を持つトレーダーに適している.
デュアル EMAクロスオーバー・トレーディング戦略は,トレンド方向を特定することで,異なる期間の2つの EMAラインを利用して買取・売却シグナルを生成する.また,シグナルフィルタリングのための追加の EMAインジケーターを組み込み,トレンド市場へのより良いエントリータイミングを可能にする.
この戦略は,エントリを決定するために,高速EMA線 (9期) と遅いEMA線 (21期) を使用する.高速EMAが遅いEMAの上に横断する黄金十字は購入信号を生成し,遅いEMAの下の高速EMAが横断する死亡十字は販売信号を生成する.偽信号をフィルタリングするために,戦略はまた補助EMA (5期) とさらに2つのEMA (1期,4期) を採用する.補助EMAが2つの間に交差し,1期EMAが4期EMAの上にあるときのみ,高速EMAと遅いEMAが交差するときに実際の取引信号が起動される.
トレーディング・シグナルが起動すると,戦略はATR値を活用してストップ・ロスを設定し,利益を上げます. TP1は6×ATRで設定され,より迅速な利益を得ることができます.価格がTP1に達しない場合,戦略は迅速なEMAが補助EMAを横切ると直接ポジションを閉じ,TP2を実現します.
改善方向:
双 EMA クロスオーバー戦略は,複数の EMA フィルタリングと動的な ATR ストップ損失/利益採取とともに,トレンド方向のために EMA クロスを利用する. これにより,効果的なトレンドフォローと利益の収穫が可能になる.しかし,EMA 適正な制限とストップ損失リスクは注意が必要です.適切な最適化,リスク管理などによりより強力なパフォーマンスにつながる可能性があります.この戦略は,トレンド市場で高い資本効率を達成するために経験豊富なトレーダーに適しています.
[/トランス]
/*backtest start: 2022-10-09 00:00:00 end: 2023-04-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @author ADHDCRYPT0 //@version=4 strategy(title = "EMA double crossover", shorttitle = "(TEST) double cross over", overlay = true, default_qty_value = 100, initial_capital = 1000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true) // Variables ema_len1 = input(9 , title="Fast EMA") ema_len2 = input(21, title="Slow EMA") ema_len3 = input(5, title="Exit EMA") ema_len4 = input(1, title="FastConf EMA") ema_len5 = input(4, title="SlowConf EMA") fastEMA = ema(open, ema_len1) slowEMA = ema(open, ema_len2) exitEMA = ema(open, ema_len3) conf1EMA = ema(open, ema_len4) conf2EMA = ema(open, ema_len5) plot(fastEMA, title='fastEMA', transp=0, color=color.green) plot(slowEMA, title='slowEMA', transp=0, color=color.red ) plot(exitEMA, title='exitEMA', transp=0, color=color.orange) plot(conf1EMA, title='conf1EMA', transp=0, color=color.blue) plot(conf2EMA, title='conf2EMA', transp=0, color=color.black) vol = volume volma = sma(volume,7) vol_cond = vol>volma atr = atr(5) // Entry Conditions and vol_cond long = crossover(fastEMA, slowEMA) and (conf1EMA > conf2EMA) and (fastEMA < exitEMA) short= crossunder(fastEMA, slowEMA) and (conf1EMA < conf2EMA) and (fastEMA > exitEMA) tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"]) pos = 0.0 if tradeType=="BOTH" pos:= long? 1 : short? -1 : pos[1] if tradeType=="LONG" pos:= long? 1 : pos[1] if tradeType=="SHORT" pos:=short? -1 : pos[1] longCond = long and (pos[1]!= 1 or na(pos[1])) shortCond = short and (pos[1]!=-1 or na(pos[1])) // EXIT FUNCTIONS // sl = input(1, title="Stop Loss (ATR)", minval=0) tp = input(6, title="Take Profit 1 (ATR)", minval=0) // Simple Stop Loss + 2 Take Profits sl_long = valuewhen(longCond , low - atr * sl, 0) sl_short = valuewhen(shortCond, high+ atr * sl, 0) tp_long = valuewhen(longCond , high + atr * tp, 0) tp_short = valuewhen(shortCond, low - atr * tp, 0) long_exit = crossover(fastEMA, exitEMA) and pos[1]==1 short_exit= crossover(exitEMA, fastEMA) and pos[1]==-1 if long_exit or short_exit pos:=0 // Position Adjustment long_sl = low <sl_long [1] and pos[1]==1 short_sl = high>sl_short[1] and pos[1]==-1 if long_sl or short_sl pos:=0 // Strategy Backtest Limiting Algorithm i_startTime = input(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time", type = input.time) i_endTime = input(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time", type = input.time) timeCond = true // Make sure we are within the bar range, Set up entries and exit conditions if strategy.equity >0 strategy.entry("long" , strategy.long , when=longCond and timeCond and tradeType!="SHORT" , alert_message="INSERT MESSAGE HERE") strategy.entry("short", strategy.short, when=shortCond and timeCond and tradeType!="LONG" , alert_message="INSERT MESSAGE HERE") strategy.exit("SL/TP1", from_entry = "long" , stop=sl_long , limit=tp_long , alert_message="INSERT MESSAGE HERE") strategy.exit("SL/TP1", from_entry = "short", stop=sl_short, limit=tp_short, alert_message="INSERT MESSAGE HERE") strategy.exit("SL", from_entry = "long" , stop=sl_long, alert_message="INSERT MESSAGE HERE") strategy.exit("SL", from_entry = "short", stop=sl_short, alert_message="INSERT MESSAGE HERE") strategy.close("long", when=long_exit , comment="TP2", alert_message="INSERT MESSAGE HERE") strategy.close("short", when=short_exit, comment="TP2", alert_message="INSERT MESSAGE HERE")