Strategi Perubahan Struktur Pasaran Terobosan Berayun


Tarikh penciptaan: 2023-12-05 15:17:01 Akhirnya diubah suai: 2023-12-05 15:17:01
Salin: 0 Bilangan klik: 699
1
fokus pada
1619
Pengikut

Strategi Perubahan Struktur Pasaran Terobosan Berayun

Gambaran keseluruhan

Strategi Oscillation Breakthrough - Market Structure Shift Strategy adalah strategi trend-tracking yang menggunakan hubungan antara tempoh masa yang berbeza untuk mengenal pasti perubahan struktur pasaran. Strategi ini menggunakan hubungan antara tempoh masa yang berbeza sebagai isyarat perubahan struktur pasaran untuk menangkap arah trend baru.

Prinsip Strategi

Logik teras strategi ini adalah menggunakan bentuk ke bawah dan ke atas yang menelan dalam tempoh jangka masa pendek sebagai isyarat perubahan struktur pasaran jangka masa panjang dan menengah. Secara khusus, strategi ini akan memantau K-garis dalam tempoh jangka masa panjang dan menengah (seperti garis 60 minit) dan K-garis dalam tempoh jangka masa pendek (seperti garis 15 minit). Apabila terdapat K-garis merah yang menelan ke bawah dalam tempoh jangka masa pendek dan K-garis hijau dalam tempoh jangka masa panjang, ia dianggap sebagai perubahan struktur pasaran.

Selepas memasuki arah, strategi akan menggunakan harga tertinggi atau terendah dalam tempoh pendek sebagai titik berhenti untuk mengawal risiko. Apabila harga penutupan K-garis jangka panjang dan jangka panjang mencetuskan titik berhenti, strategi akan meratakan titik berhenti.

Analisis kelebihan strategi

Strategi ini mempunyai kelebihan berikut:

  1. Isyarat perubahan struktur pasaran yang boleh dipercayai. Menggunakan hubungan antara kitaran yang berbeza untuk menilai struktur pasaran, dan mengelakkan gangguan dari satu kitaran.

  2. Menentukan arah trend baru secara automatik. Melakukan lebih banyak shorting secara automatik apabila isyarat perubahan struktur pasaran muncul, tanpa penilaian manual.

  3. Kawalan risiko di tempat. Kawalan risiko menggunakan harga tertinggi dan terendah dalam jangka masa pendek, membantu mengawal kerugian tunggal.

  4. Kawalan penarikan balik adalah agak baik. Dengan menggunakan nilai maksimum kitaran pendek untuk membuka dan menghentikan kedudukan, penarikan balik boleh dikawal pada tahap tertentu.

Analisis risiko strategi

Risiko utama strategi ini adalah seperti berikut:

  1. Risiko kesalahan penghakiman struktur pasaran. Apabila bunyi kitaran pendek terlalu besar, isyarat perubahan struktur pasaran mungkin gagal dan parameter kitaran perlu disesuaikan.

  2. Risiko pembalikan trend. Strategi ini sukar untuk mengawal pengunduran apabila pasaran mengalami pembalikan jenis V. Algoritma henti rugi boleh disesuaikan dengan sewajarnya.

  3. Risiko parameter tidak sepadan. Parameter jangka panjang dan jangka pendek tidak ditetapkan pada masa yang tepat, kesan isyarat mungkin tidak baik, memerlukan ujian pengoptimuman berulang.

Arah pengoptimuman strategi

Strategi ini juga boleh dioptimumkan dengan cara berikut:

  1. Menambah pengukuran akumulasi atau penilaian trend, mengelakkan isyarat salah dalam pembalikan trend.

  2. Mengoptimumkan padanan parameter jangka pendek dan panjang, meningkatkan kualiti isyarat.

  3. Mengoptimumkan algoritma Stop Loss Stop Loss menggunakan teknologi seperti pembelajaran mesin.

  4. Menambah penapis syarat tambahan untuk isyarat yang salah, seperti penilaian trend peringkat besar.

  5. Meningkatkan jenis strategi, membangunkan strategi derivatif, dan membentuk portofolio strategi.

ringkaskan

Terobosan guncangan - strategi perubahan struktur pasaran secara keseluruhan adalah strategi pengesanan yang lebih dipercayai. Ia dapat menggunakan perubahan struktur pasaran untuk menentukan arah trend baru secara automatik, dan kawalan risiko juga dilakukan dengan baik. Selanjutnya, strategi ini dapat dioptimumkan secara mendalam dari segi meningkatkan kualiti isyarat, mengoptimumkan stop loss, dan mencegah pembalikan, dan sebagainya, menjadikannya sebagai produk strategi kelas perniagaan.

Kod sumber strategi
/*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)
//