Terobosan Oscillasi - Strategi Pergeseran Struktur Pasaran (ICT_MSS) adalah strategi trend berikut yang mengenal pasti perubahan struktur pasaran menggunakan hubungan antara jangka masa yang berbeza. Strategi ini menggunakan hubungan jangka masa sebagai isyarat untuk perubahan struktur pasaran untuk menangkap arah trend baru.
Logik utama strategi ini adalah menggunakan corak peluh jangka masa pendek ke bawah dan ke atas sebagai isyarat untuk perubahan struktur pasaran jangka masa yang lebih lama. Khususnya, strategi secara serentak memantau jangka masa yang lebih lama (contohnya bar 60m) dan jangka masa yang lebih pendek (contohnya bar 15m). Apabila bar merah peluh ke bawah muncul pada jangka masa yang lebih pendek sementara bar jangka masa yang lebih lama berwarna hijau, ia ditentukan bahawa struktur pasaran telah berlaku dan kedudukan pergeseran panjang diambil. Apabila bar hijau peluh ke atas muncul pada jangka masa yang lebih pendek sementara bar jangka masa yang lebih lama berwarna merah, ia ditentukan bahawa perubahan struktur pasaran telah berlaku dan kedudukan pendek diambil.
Selepas memasuki kedudukan arah, strategi menggunakan jangka masa pendek tinggi / rendah untuk menetapkan stop loss untuk mengawal risiko. Apabila harga penutupan bar jangka masa yang lebih lama mencapai tahap mengambil keuntungan, strategi akan menutup kedudukan untuk keuntungan.
Kelebihan strategi ini ialah:
Penggunaan hubungan jangka masa mengelakkan ditipu oleh bunyi bising dari satu jangka masa.
Memutuskan arah trend baru secara automatik. Perubahan struktur pasaran secara automatik mencetuskan entri panjang / pendek tanpa memerlukan penilaian manual.
Kawalan risiko yang berkesan. Jangka masa pendek tinggi/rendah yang digunakan untuk kawalan risiko membantu mengurangkan kerugian perdagangan tunggal.
Menggunakan jangka masa yang singkat untuk masuk dan hentikan kerugian boleh membantu mengawal pengeluaran hingga tahap tertentu.
Risiko utama strategi ini ialah:
Risiko penilaian struktur pasaran yang salah. Isyarat mungkin gagal apabila bunyi jangka masa pendek tinggi. Parameter jangka masa perlu diselaraskan.
Risiko pembalikan trend. Strategi berjuang untuk mengawal penurunan semasa pembalikan berbentuk V. Algoritma stop loss perlu disesuaikan.
Risiko ketidakcocokan parameter. Kombinasi jangka masa panjang / pendek yang salah membawa kepada kualiti isyarat yang buruk dan memerlukan ujian pengoptimuman.
Arah pengoptimuman lanjut untuk strategi termasuk:
Tambah penapis trend untuk mengelakkan isyarat yang salah semasa pembalikan trend.
Mengoptimumkan pemadan parameter jangka masa untuk meningkatkan kualiti isyarat.
Menggunakan pembelajaran mesin untuk mengambil keuntungan / berhenti rugi yang optimum.
Tambah penapis tambahan seperti trend jangka masa yang lebih besar.
Memperluas varian strategi untuk membentuk ensemble strategi.
Strategi ICT_MSS adalah strategi trend berikut yang boleh dipercayai secara keseluruhan. Ia secara automatik menentukan arah trend baru berdasarkan perubahan struktur pasaran dan juga mempunyai kawalan risiko yang baik yang terbina dalam. Langkah seterusnya adalah penambahbaikan lebih lanjut di sekitar meningkatkan kualiti isyarat, mengoptimumkan keluar, dan mencegah pembalikan untuk menjadikannya strategi gred komersial.
/*backtest start: 2022-11-28 00:00:00 end: 2023-12-04 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/ // © jl01794 //@version=5 strategy(title="ICT_MSS[PROTOTYPE]", overlay=true, initial_capital=10000, currency="USD", margin_long=15, margin_short=15, max_lines_count=500) // INPUTS Time_Frame = input.timeframe("60", title="Focused Time Frame") FTF_LTF = input.timeframe("15", title="Focused Time Frame(LTF)") // // SECURITY DATA [FOR ONE TIMEFRAME REFERENCE] FTF_Close = request.security(syminfo.tickerid, Time_Frame, close) FTF_Open = request.security(syminfo.tickerid, Time_Frame, open) FTFLTF_High = request.security(syminfo.tickerid, FTF_LTF, ta.highest(2)) FTFLTF_Low = request.security(syminfo.tickerid, FTF_LTF, ta.lowest(2)) FTFLTF_Close = request.security(syminfo.tickerid, FTF_LTF, close) FTFLTF_Open = request.security(syminfo.tickerid, FTF_LTF, open) // TIME BASED CLOSE AND OPEN _close = FTF_Close _open = FTF_Open _LTFclose = FTFLTF_Close _LTFopen = FTFLTF_Open // CANDLE STATE greenCandle = close > open redCandle = close < open LTFgreenCandle = FTFLTF_Close > FTFLTF_Open LTFredCandle = FTFLTF_Close < FTFLTF_Open // ENGULFING TIMEFRAME REFERENCE FTF_greenCandle = request.security(syminfo.tickerid, Time_Frame, greenCandle) FTF_redCandle = request.security(syminfo.tickerid, Time_Frame, redCandle) FTFLTF_greenCandle = request.security(syminfo.tickerid, FTF_LTF, LTFgreenCandle) FTFLTF_redCandle = request.security(syminfo.tickerid, FTF_LTF, LTFredCandle) //-------------------------------------------------------------------------------------------------------------- //ENGULFING_FTF_LTF B_EnP_mss = FTFLTF_redCandle[1] and // 1E PIVOT BUY FTFLTF_greenCandle // B_EnPs_mss = FTFLTF_greenCandle[1] and // 1E PIVOT SELL FTFLTF_redCandle // //-------------------------------------------------------------------------------------------------------------- display_LTF = timeframe.isintraday and timeframe.multiplier <= 15 //-------------------------------------------------------------------------------------------------------------- // STORED DATAS var float EH_MSS1 = na var float EL_MSS1 = na var bool can_draw = false var line l1_mss = na var line l1s_mss = na //-------------------------------------------------------------------------------------------------------------- // MSS BUY if (B_EnPs_mss) and (display_LTF) EH_MSS1 := FTFLTF_High can_draw := true l1_mss := line.new(bar_index, EH_MSS1, bar_index -3, EH_MSS1, color=color.purple) else if (can_draw) if (FTFLTF_High > EH_MSS1) can_draw := false else line.set_x2(l1_mss, bar_index) // // MSS SELL if (B_EnP_mss) and (display_LTF) EL_MSS1 := FTFLTF_Low can_draw := true l1s_mss := line.new(bar_index, EL_MSS1, bar_index -3, EL_MSS1, color=color.purple) else if (can_draw) if (FTFLTF_Low < EL_MSS1) can_draw := false else line.set_x2(l1s_mss, bar_index) //-------------------------------------------------------------------------------------------------------------- // ORDER // BUY longCondition_mssB = B_EnPs_mss and FTFLTF_High and close and high[1] openOr = FTFLTF_High //SELL shortCondition_mssS = B_EnP_mss and FTFLTF_Low and close and low[1] openOrs = FTFLTF_Low if (longCondition_mssB) strategy.entry("Buy", strategy.long, 1, stop = openOr, when = longCondition_mssB) // if (shortCondition_mssS) strategy.entry("Sell", strategy.short, 1, stop = openOrs, when = shortCondition_mssS) // // EXIT long_tp = open < FTFLTF_Close[1] short_tp = open > FTFLTF_Close[1] //if (long_tp) //strategy.close("Buy", qty_percent = 100, when = long_tp) // //if (short_tp) //strategy.close("Sell", qty_percent = 100, when = short_tp) //