
Penetrasi Short Line Reversal adalah strategi perdagangan tren yang didasarkan pada bentuk garis pendek. Ini menggunakan bentuk garis pendek sebagai sinyal, dikombinasikan dengan Moving Average untuk menentukan arah tren, untuk mencapai tingkat kemenangan yang tinggi.
Strategi ini memberi sinyal masuk melalui bentuk garis pendek. Secara khusus, sinyal dihasilkan jika memenuhi dua kondisi berikut:
Sinyal gabungan seperti ini dapat memfilter sebagian besar kebisingan, sehingga meningkatkan presisi masuk.
Strategi ini menggunakan moving averages dari tiga periode berbeda untuk menilai tren. Secara khusus, garis cepat, tengah, dan lambat didefinisikan sebagai tren ketika diurutkan secara paralel, atau didefinisikan sebagai konsolidasi.
Bila masuk dengan banyak kepala, maka diperlukan garis cepat > garis tengah > garis lambat; bila masuk dengan kepala kosong, maka diperlukan garis cepat < garis tengah < garis lambat.
Strategi ini menggunakan mekanisme pelacakan stop loss yang unik. Setelah membuka posisi, stop loss optimal akan dilacak berdasarkan jumlah poin dan defisit yang ditetapkan oleh pengguna. Ini dapat mengunci keuntungan maksimum sambil mengontrol risiko.
Sinyal penetrasi garis pendek memungkinkan strategi hanya membuka posisi pada peluang probabilitas tinggi, menghindari perdagangan yang terlalu bising. Selain itu, kombinasi dengan penilaian tren, dapat memfilter sebagian besar operasi arah non-mainstream. Ini menjamin presisi tinggi dari strategi.
Mekanisme penarikan stop loss yang unik adalah fitur utama dari strategi ini. Hal ini dapat mengontrol setiap stop loss secara tepat dalam kisaran kecil, dengan asumsi untuk menjamin keuntungan maksimum, untuk memastikan tingkat kemenangan yang tinggi dan keuntungan yang sangat kuat.
Hasil simulasi menunjukkan bahwa setelah menggunakan mekanisme ini, pasangan mata uang multi-mata uang mencapai total tingkat pengembalian lebih dari 1000% dan keuntungan maksimum lebih dari 100 kali lipat, dengan keuntungan melonjak ke tingkat yang belum pernah terjadi sebelumnya.
Dengan hasil tes yang hampir sama dengan piala dunia, ini kemungkinan besar merupakan hasil dari simulasi yang berlebihan terhadap pasar. mekanisme penghentian kerugian disk mungkin tidak bekerja dengan tepat seperti tes, dan akan menghadapi penarikan balik tertentu.
Selain itu, hanya dua tahun dari periode uji coba, perubahan struktur pasar juga dapat mempengaruhi kinerja real-time.
Tracking stop loss yang terlalu sensitif dapat menyebabkan terlalu banyak stop loss yang dipicu. Selain itu, kejadian pasar yang tidak terduga juga dapat menyebabkan stop loss tidak berlaku. Ini adalah risiko yang perlu dihadapi dengan menggunakan tracking stop loss.
Pelacakan stop loss adalah kunci dari seluruh ledakan keuntungan strategi. Untuk membuatnya baik sensitif dan dapat diandalkan, Anda dapat mencoba untuk melepaskannya dengan tepat untuk melacak titik stop loss, sehingga tidak terlalu sensitif.
Menambahkan jendela waktu pengujian juga dapat memeriksa parameter stabilitas.
Periode rata-rata bergerak saat ini bukanlah kombinasi parameter yang optimal. Dengan pengujian optimasi, parameter yang lebih baik dapat ditemukan untuk menghasilkan hasil yang lebih baik.
Misalnya, menambah jarak siklus antara garis cepat dan garis tengah, atau menyesuaikan cara melintasi tiga garis.
Strategi pembalikan garis pendek penetrasi telah mencapai hasil yang luar biasa dalam pengujian simulasi dengan masuk yang efisien dan penghentian super kuat. Namun, kita juga harus sadar akan risiko overadaptasi dan bersiap-siap untuk mengendalikan risiko.
Dengan penyesuaian parameter atau pengoptimalan yang tepat, strategi ini mungkin dapat menghasilkan keuntungan yang signifikan di pasar nyata dan menjadi sistem tren yang kuat. Konsep unik dari tracking stop loss ini juga memberikan kita pelajaran berharga yang berpotensi menghasilkan lebih banyak strategi inovatif.
/*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)