Strategi perdagangan penembusan EMA berganda adalah strategi pengesanan trend yang menggunakan dua garis EMA yang berbeza untuk menilai isyarat jual beli. Ia juga menggabungkan penapis isyarat dagangan dengan petunjuk EMA tambahan untuk mendapatkan masa masuk yang lebih baik dalam pasaran trend.
Strategi ini menggunakan EMA (siklus 9) dan EMA (siklus 21) untuk menentukan masa membeli dan menjual. Isyarat beli dihasilkan apabila EMA bergerak perlahan di atas EMA dan isyarat jual dihasilkan apabila EMA bergerak perlahan di bawah EMA. Untuk menapis isyarat palsu, strategi ini juga memperkenalkan EMA tambahan (siklus 5) dan dua EMA tambahan (siklus 1 dan 4). Isyarat dagangan sebenar hanya akan dicetuskan apabila EMA tambahan berada di antara EMA yang perlahan dan satu EMA lebih tinggi daripada EMA 4 siklus.
Apabila isyarat dagangan dipicu, strategi akan menetapkan paras stop loss dan stop loss berdasarkan nilai ATR. TP1 adalah 6 kali ganda ATR untuk mendapatkan sebahagian keuntungan pada kelajuan yang lebih cepat. Jika harga tidak memicu TP1, ia akan langsung meratakan kedudukan apabila EMA garis cepat melintasi EMA tambahan semula, mencapai TP2 stop loss.
Arah pengoptimuman:
Strategi perdagangan penembusan EMA berganda menggunakan persilangan dua EMA untuk membuat penilaian trend, ditambah dengan penapis EMA berganda dan ATR stop loss, yang dapat menjejaki keuntungan trend dengan berkesan. Tetapi masalah seperti penyesuaian kurva EMA, risiko stop loss memerlukan perhatian. Dengan pengoptimuman parameter, pengurusan risiko, dan lain-lain, prestasi dagangan yang lebih stabil dapat diperoleh. Strategi ini sesuai untuk digunakan oleh peniaga yang mempunyai asas tertentu dalam pasaran trend untuk mendapatkan penggunaan dana yang lebih tinggi.
Strategi perdagangan silang EMA berganda menggunakan dua garis EMA dari tempoh yang berbeza untuk menjana isyarat beli dan jual dengan mengenal pasti arah trend.
Strategi ini menggunakan garis EMA pantas (9 tempoh) dan garis EMA perlahan (21 tempoh) untuk menentukan kemasukan. Salib emas di mana EMA pantas melintasi di atas EMA perlahan menghasilkan isyarat beli, sementara salib kematian dengan EMA pantas melintasi di bawah EMA perlahan menghasilkan isyarat jual. Untuk menapis isyarat palsu, strategi ini juga menggunakan EMA tambahan (5 tempoh) dan dua lagi EMA (1 tempoh, 4 tempoh). Isyarat perdagangan sebenar hanya dicetuskan apabila EMA pantas dan perlahan melintasi sementara EMA tambahan berada di antara keduanya, dan EMA 1 tempoh di atas EMA 4 tempoh.
Apabila isyarat dagangan dicetuskan, strategi menggunakan nilai ATR untuk menetapkan paras stop loss dan mengambil keuntungan. TP1 ditetapkan pada 6 x ATR untuk mengambil keuntungan yang lebih cepat. Jika harga tidak mencapai TP1, strategi akan menutup kedudukan secara langsung apabila EMA cepat melintasi semula EMA tambahan, merealisasikan TP2.
Arahan penambahbaikan:
Strategi silang EMA berganda memanfaatkan persilangan EMA untuk arah trend, bersama dengan penapisan EMA berganda dan pengambilan stop loss / keuntungan ATR dinamik. Ini membolehkan trend yang berkesan mengikuti dan menuai keuntungan. Walau bagaimanapun, batasan pemasangan EMA dan risiko stop loss memerlukan berhati-hati. pengoptimuman yang betul, pengurusan risiko dll. boleh membawa kepada prestasi yang lebih kukuh. Strategi ini sesuai untuk pedagang berpengalaman untuk mencapai kecekapan modal yang tinggi di pasaran trend.
[/trans]
/*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")