Strategi Scalping Intraday untuk Mengesan Trend Berbilang Jangka Masa

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

img

Ringkasan

Strategi ini menggabungkan penunjuk purata bergerak dalam pelbagai jangka masa untuk menentukan konsistensi trend dan mengambil tindakan scalping pada siang hari untuk mengikuti trend dan membuat keuntungan.

Logika Strategi

Strategi ini menggunakan purata bergerak 8 tempoh dan 20 tempoh pada jangka masa 5 minit, 15 minit, 30 minit dan 60 minit untuk menjana isyarat perdagangan. Isyarat beli dihasilkan apabila MA 8 tempoh melintasi di atas MA 20 tempoh. Isyarat jual dihasilkan apabila MA 8 tempoh melintasi di bawah MA 20 tempoh.

Strategi ini memerlukan isyarat yang konsisten di empat bingkai masa sebelum mengeluarkan pesanan perdagangan.

Setelah memasuki kedudukan, strategi menetapkan sasaran keuntungan tetap untuk mengambil keuntungan intraday.

Khususnya, strategi ini menggunakan fungsi keselamatan untuk mendapatkan nilai MA dari bingkai masa yang berbeza. Ia mengira perbezaan antara MA 8-periode dan 20-periode pada carta 5-minit, 15-minit, 30-minit dan 60-minit.

Sinyal beli dan jual ditentukan oleh sama ada garis perbezaan melintasi di atas / di bawah garis sifar. Pelbagai bendera islong dan isshort digunakan untuk merakam isyarat pada setiap jangka masa. Perintah diletakkan apabila syarat islong dan isshort dipenuhi.

Selepas memasuki perdagangan, strategi menggunakanstrategy.exit() untuk menetapkan sasaran keuntungan tetap untuk scalping.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Reka bentuk pelbagai jangka masa menapis bunyi bising dan mengurangkan kekerapan perdagangan.

  2. Scalping intraday dengan optimum keuntungan mengumpul keuntungan kecil secara konsisten.

  3. Struktur kod yang jelas, mudah difahami dan dioptimumkan.

  4. Keadaan yang munasabah membantu mengawal risiko.

Analisis Risiko

Risiko berpotensi strategi ini:

  1. Pelbagai jangka masa mungkin terlepas perubahan trend yang halus.

  2. Perdagangan scalping yang kerap meningkatkan kos.

  3. Sasaran keuntungan tetap tidak fleksibel.

  4. Bergantung pada petunjuk, risiko ditipu.

Arahan pengoptimuman

Kemungkinan pengoptimuman:

  1. Tambah lebih banyak jangka masa untuk isyarat yang lebih kuat.

  2. Sasaran keuntungan dinamik berdasarkan ATR.

  3. Penapis tambahan seperti peningkatan jumlah atau sejarah ekstrem.

  4. Mengoptimumkan tempoh MA untuk parameter terbaik.

  5. Tambah pembelajaran mesin untuk menilai kebolehpercayaan isyarat.

Ringkasan

Secara keseluruhan, ini adalah strategi pengesanan trend pelbagai jangka masa yang biasa menggunakan scalping intraday. Logiknya jelas dan kodnya berstruktur dengan baik. Dengan pengoptimuman yang betul, ia boleh menjadi templat strategi scalping yang sangat praktikal.


/*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 lanjut