Strategi Scalping Intraday untuk Melacak Tren Multi-Timeframe

Penulis:ChaoZhang, Tanggal: 2023-11-16 17:47:06
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator rata-rata bergerak di beberapa kerangka waktu untuk menentukan konsistensi tren dan mengambil tindakan scalping selama hari untuk mengikuti tren dan menghasilkan keuntungan.

Logika Strategi

Strategi ini menggunakan rata-rata bergerak 8 periode dan 20 periode pada kerangka waktu 5 menit, 15 menit, 30 menit dan 60 menit untuk menghasilkan sinyal perdagangan. Sinyal beli dihasilkan ketika MA 8 periode melintasi di atas MA 20 periode. Sinyal jual dihasilkan ketika MA 8 periode melintasi di bawah MA 20 periode.

Strategi ini membutuhkan sinyal yang konsisten di empat kerangka waktu sebelum mengeluarkan pesanan perdagangan.

Setelah masuk ke posisi, strategi menetapkan target keuntungan tetap untuk mengambil keuntungan intraday.

Secara khusus, strategi ini menggunakan fungsi keamanan untuk mengambil nilai MA dari kerangka waktu yang berbeda.

Sinyal beli dan jual ditentukan oleh apakah garis selisih melintasi di atas/di bawah garis nol. Beberapa islong dan isshort flag digunakan untuk merekam sinyal pada setiap timeframe. Orde ditempatkan ketika kondisi islong dan isshort terpenuhi.

Setelah memasuki perdagangan, strategi menggunakanstrategy.exit() untuk menetapkan target keuntungan tetap untuk scalping.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Desain multi-frame waktu menyaring kebisingan dan mengurangi frekuensi perdagangan.

  2. Scalping intraday dengan optimasi keuntungan mengumpulkan keuntungan kecil secara konsisten.

  3. Struktur kode yang jelas, mudah dipahami dan dioptimalkan.

  4. Kondisi yang wajar membantu mengendalikan risiko.

Analisis Risiko

Risiko potensial dari strategi ini:

  1. Multi-frame waktu mungkin tidak melihat perubahan tren yang halus.

  2. Perdagangan scalping yang sering meningkatkan biaya.

  3. Target laba tetap tidak fleksibel.

  4. Tergantung pada indikator, resiko tertipu.

Arahan Optimasi

Optimasi yang mungkin:

  1. Tambahkan lebih banyak kerangka waktu untuk sinyal yang lebih kuat.

  2. Target keuntungan dinamis berdasarkan ATR.

  3. Filter tambahan seperti peningkatan volume atau sejarah ekstrem.

  4. Mengoptimalkan periode MA untuk parameter terbaik.

  5. Tambahkan pembelajaran mesin untuk menilai keandalan sinyal.

Ringkasan

Secara keseluruhan ini adalah strategi pelacakan tren multi-frame yang khas menggunakan scalping intraday. Logika jelas dan kode terstruktur dengan baik. Dengan optimasi yang tepat, ini bisa menjadi templat strategi scalping yang sangat praktis.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="PeBAS $JPY Scalper 15m ",overlay=true) 
zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?")
profitwert=input(52, title="Profit")
myatr=  input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001)


//Plot  EMA-Differenz Aktueller Timeframe

dif=(ema(close,8)+ema(close,20))/2
mcolor=ema(close,8) > ema(close,20) ? green : red
bs = ema(close,8) > ema(close,20) ? true : false
ThisATR=atr(16)

//trans = zeigeallebars == true ? 00 : 100
//plot(dif,"dif",color=mcolor,linewidth=6,transp=trans)


//1M EMA
htf_ma1Mema8 = ema(close, 5)
htf_ma1Mema20 = ema(close, 20)
ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8)
ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20)
dif1M = (ema81m + ema201m) / 2
Close1M = request.security(syminfo.tickerid, "1", close)
color1=ema81m > ema201m ? green : red
//plot(dif1M,"dif",color1,linewidth=6)
//plotshape(1, style=shape.cross, color=color1,location=location.top)
ls1 = ema81m > ema201m ? 1 : 0



//5M EMA

htf_ma5Mema8 = ema(close, 8)
htf_ma5Mema20 = ema(close, 20)
ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8)
ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20)
dif5M = (ema85m + ema205m) / 2
 
color5=ema85m > ema205m ? green : red
plot(dif5M,"dif",color5,linewidth=5)
ls5 = ema85m > ema205m ? 1 : 0
alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0
islong5 = ema85m > ema205m ? 1 : 0
isshort5 = ema85m < ema205m ? 1 : 0

//15M EMA

htf_ma15Mema8 = ema(close, 8)
htf_ma15Mema20 = ema(close, 20)
ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8)
ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20)
dif15M = (ema815m + ema2015m) / 2
 
color15=ema815m > ema2015m ? green : red
plot(dif15M,"dif",color15,linewidth=3)
ls15= ema815m > ema2015m ? 1 : 0
alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0
islong15 = ema815m > ema2015m ? 1 : 0
isshort15 = ema815m < ema2015m ? 1 : 0





//30M EMA
htf_ma30Mema8 = ema(close, 8)
htf_ma30Mema20 = ema(close, 20)
ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8)
ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20)
dif30M = (ema830m + ema2030m) / 2
 
color30=ema830m > ema2030m ? green : red
ls30= ema830m > ema2030m ?1 : 0
islong30 = ema830m > ema2030m ? 1 : 0
isshort30 = ema830m < ema2030m ? 1 : 0



//60M EMA

htf_ma60Mema8 = ema(close, 8)
htf_ma60Mema20 = ema(close, 20)
ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8)
ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20)
dif60M = (ema860m + ema2060m) / 2
 
color60=ema860m > ema2060m ? green : red
ls60= ema860m > ema2060m ?1 : 0

islong60 = ema860m > ema2060m ? 1 : 0
isshort60 = ema860m < ema2060m ? 1 : 0

plot(dif60M,"dif",color60,linewidth=3,transp=70)

islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0
isshort = isshort5 ==1 and isshort15 ==1 and  isshort60 ==1 and year > 2017 ? 1 : 0


condition2l= 0 
condition2s = 0

c= alert1 == alert2  and alert1[1] != alert2[1] ? 1 : 0
alertcondition(c, title='Da tat sich was ', message='Da tat sich was!')

strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0  ) 
strategy.entry("enter short", strategy.short,1,when = isshort == 1  and isshort [1] == 0) 
strategy.exit("close",profit=profitwert)
strategy.exit("close",profit=profitwert)





Lebih banyak