Menindik strategi pembalikan jangka pendek


Tarikh penciptaan: 2024-01-25 12:29:29 Akhirnya diubah suai: 2024-01-25 12:29:29
Salin: 1 Bilangan klik: 612
1
fokus pada
1617
Pengikut

Menindik strategi pembalikan jangka pendek

Gambaran keseluruhan

Strategi pembalikan garisan pendek adalah strategi perdagangan trend berdasarkan bentuk garisan pendek. Ia menggunakan bentuk garisan pendek sebagai isyarat, digabungkan dengan purata bergerak untuk menentukan arah trend, untuk mencapai kadar kemenangan yang tinggi.

Prinsip Strategi

Isyarat masuk

Strategi ini menembusi isyarat masuk dalam bentuk garis pendek. Secara khusus, isyarat dihasilkan apabila memenuhi dua syarat berikut:

  1. Membentuk bentuk garis pendek tertentu: isyarat multihead sebagai garis pendek yangar, isyarat kosong sebagai garis pendek yangar
  2. Bentuk garisan pendek menembusi purata bergerak: garisan yang menembusi purata bergerak yang sedang turun, atau garisan yang menembusi purata bergerak yang sedang naik

Sinyal gabungan seperti ini boleh menapis sebahagian besar bunyi bising, yang meningkatkan ketepatan masuk.

Penghakiman Trend

Strategi ini menggunakan purata bergerak dari tiga tempoh yang berbeza untuk menilai trend. Khususnya, garis cepat, garis tengah, dan garis lambat ditakrifkan sebagai trend apabila disusun secara serentak, atau ditakrifkan sebagai penyusunan.

Apabila masuk dengan banyak kepala, minta garis cepat > garis tengah > garis perlahan; apabila masuk dengan kepala kosong, minta garis cepat < garis tengah < garis perlahan.

Pencegahan kerosakan

Strategi ini menggunakan mekanisme pengesanan terhad yang unik. Apabila anda membuka kedudukan, anda akan menjejaki titik terhad yang sesuai dengan jumlah mata dan perpindahan yang ditetapkan oleh pengguna. Ini dapat mengunci keuntungan maksimum dan mengawal risiko.

Analisis kelebihan

Kemasukan yang cekap

Isyarat penembusan garis pendek membolehkan strategi hanya membuka kedudukan pada peluang kebarangkalian yang tinggi, mengelakkan perdagangan yang terlalu bising. Di samping itu, dalam kombinasi dengan penilaian trend, ia dapat menyaring kebanyakan operasi arah bukan utama. Ini menjamin ketepatan tinggi strategi.

Penangguhan Super Kuat

Mekanisme penangguhan kerugian yang unik adalah ciri utama strategi ini. Ia dapat mengawal setiap penangguhan kerugian dengan tepat dalam julat kecil, memastikan kemenangan yang tinggi dan keuntungan yang sangat kuat.

Hasil simulasi menunjukkan bahawa selepas menggunakan mekanisme ini, pasangan mata wang pelbagai mencapai kadar pulangan keseluruhan lebih dari 1000%, keuntungan maksimum melebihi 100 kali ganda, dan keuntungan melonjak ke tahap yang belum pernah dilihat sebelumnya.

Analisis risiko

Risiko yang terlalu optimum

Memandangkan keputusan ujian hampir sama dengan piala suci, kemungkinan besar ini adalah hasil daripada simulasi yang berlebihan di pasaran. Mekanisme penangguhan kerugian cakera mungkin tidak berfungsi dengan tepat seperti ujian, dan akan menghadapi penarikan balik.

Selain itu, tempoh ujian hanya dua tahun, perubahan struktur pasaran juga boleh mempengaruhi prestasi cakera.

Menjejaki risiko kerugian

Tracking stop loss yang terlalu sensitif boleh menyebabkan terlalu banyak trigger stop loss. Selain itu, kejadian kejutan pasaran juga boleh menyebabkan stop loss tidak berkesan. Ini adalah risiko yang perlu dihadapi menggunakan tracking stop loss.

Arah pengoptimuman

Sesuaikan parameter Trace Stop Loss

Tracking stop loss adalah kunci kepada keseluruhan strategi keuntungan pecah. Untuk menjadikannya kedua-dua sensitif dan boleh dipercayai, anda boleh cuba untuk mengendurkan dengan sewajarnya untuk mengesan titik stop loss dan menjadikannya kurang sensitif.

Menambah tetingkap masa ujian juga boleh memeriksa parameter yang stabil.

Mengoptimumkan kitaran purata bergerak

Tempoh purata bergerak semasa bukanlah kombinasi parameter yang optimum. Dengan ujian pengoptimuman, parameter yang lebih baik boleh didapati untuk menghasilkan kesan yang lebih baik.

Sebagai contoh, menambah jarak kitaran garisan pantas dan garisan tengah, atau menyesuaikan cara silang tiga garisan dan sebagainya.

ringkaskan

Strategi penembusan garis pendek telah mencapai prestasi ujian simulasi yang luar biasa melalui kemasukan yang cekap dan pemberhentian super kuat. Tetapi kita juga perlu sedar tentang risiko overfit di dalamnya dan bersedia untuk mengawal risiko.

Dengan penyesuaian parameter atau pengoptimuman yang sesuai, strategi ini mungkin dapat memperoleh keuntungan yang ketara di pasaran nyata dan menjadi sistem trend yang kuat. Konsep khasnya untuk menjejaki hentian kerugian juga memberi kita ilham yang berharga dan berpotensi untuk menghasilkan lebih banyak strategi inovatif.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Time Frame: H1
strategy("Pin Bar Magic v1", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=3,confirm=false)
atr_mult = input(title="Stop Loss (x*ATR, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=0.5,confirm=false)
slPoints = input(title="Stop Loss Trail Points (Pips)",type=input.integer,minval=1,maxval=1000,step=1,defval=1,confirm=false)
slOffset = input(title="Stop Loss Trail Offset (Pips)",type=input.integer,minval=1,maxval=1000,step=1,defval=1,confirm=false)
sma_slow = input(title="Slow SMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=50,confirm=false)
ema_medm = input(title="Medm EMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=18,confirm=false)
ema_fast = input(title="Fast EMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=6,confirm=false)
atr_valu = input(title="ATR (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
ent_canc = input(title="Cancel Entry After X Bars (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=3,confirm=false)

// Create Indicators
slowSMA = sma(close, sma_slow)
medmEMA = ema(close, ema_medm)
fastEMA = ema(close, ema_fast)
bullishPinBar = ((close > open) and ((open - low) > 0.66 * (high - low))) or ((close < open) and ((close - low) > 0.66 * (high - low)))
bearishPinBar = ((close > open) and ((high - close) > 0.66 * (high - low))) or ((close < open) and ((high - open) > 0.66 * (high - low)))
atr = atr(atr_valu)

// Specify Trend Conditions
fanUpTrend = (fastEMA > medmEMA) and (medmEMA > slowSMA)
fanDnTrend = (fastEMA < medmEMA) and (medmEMA < slowSMA)

// Specify Piercing Conditions
bullPierce = ((low < fastEMA) and (open > fastEMA) and (close > fastEMA)) or ((low < medmEMA) and (open > medmEMA) and (close > medmEMA)) or ((low < slowSMA) and (open > slowSMA) and (close > slowSMA))
bearPierce = ((high > fastEMA) and (open < fastEMA) and (close < fastEMA)) or ((high > medmEMA) and (open < medmEMA) and (close < medmEMA)) or ((high > slowSMA) and (open < slowSMA) and (close < slowSMA))
    
// Specify Entry Conditions
longEntry = fanUpTrend and bullishPinBar and bullPierce
shortEntry = fanDnTrend and bearishPinBar and bearPierce

// Long Entry Function
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = low[1] - atr[1] * atr_mult
    entryPrice = high[1]
    units = risk / (entryPrice - stopLoss)
    strategy.entry("long", strategy.long, units, stop=entryPrice)
    strategy.exit("exit long", from_entry="long", trail_points=slPoints, trail_offset=slOffset)
    
// Short Entry Function
entershort() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = high[1] + atr[1] * atr_mult
    entryPrice = low[1]
    units = risk / (stopLoss - entryPrice)
    strategy.entry("short", strategy.short, units, stop=entryPrice)
    strategy.exit("exit short", from_entry="short", trail_points=slPoints, trail_offset=slOffset)
    
// Execute Long Entry
if (longEntry)
    enterlong()

// Execute Short Entry
if (shortEntry)
    entershort() 
    
// Cancel the Entry if Bar Time is Exceeded
strategy.cancel("long", barssince(longEntry) > ent_canc)
strategy.cancel("short", barssince(shortEntry) > ent_canc)

// Force Close During Certain Conditions
strategy.close_all(when = hour==16 and dayofweek==dayofweek.friday, comment = "exit all, market-closed")
strategy.close_all(when = crossunder(fastEMA, medmEMA), comment = "exit long, re-cross")
strategy.close_all(when = crossover(fastEMA, medmEMA), comment = "exit short, re-cross")

// Plot Moving Averages to Chart
plot(fastEMA, color=color.red)
plot(medmEMA, color=color.blue)
plot(slowSMA, color=color.green)

// Plot Pin Bars to Chart
plotshape(bullishPinBar, text='Bull PB', style=shape.labeldown, location=location.abovebar, color=color.green, textcolor=color.white, transp=0)
plotshape(bearishPinBar, text='Bear PB', style=shape.labelup, location=location.belowbar, color=color.red, textcolor=color.white, transp=0)

// Plot Days of Week
plotshape(hour==0 and dayofweek==dayofweek.monday, text='Monday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.tuesday, text='Tuesday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.wednesday, text='Wednesday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.thursday, text='Thursday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.friday, text='Friday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==16 and dayofweek==dayofweek.friday, text='Market Closed', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)