Strategi Perdagangan Harian Penutupan Breakout


Tanggal Pembuatan: 2023-10-09 16:56:21 Akhirnya memodifikasi: 2023-10-09 16:56:21
menyalin: 0 Jumlah klik: 641
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini adalah strategi perdagangan intraday sederhana yang didasarkan pada moving average yang berlaku untuk GBPUSD 1 jam grafik siklus waktu. Strategi ini hanya masuk saat London buka dan keluar saat London tutup, sangat cocok untuk perdagangan trend breakout di London.

Prinsip Strategi

Strategi ini menggunakan dua garis rata-rata bergerak, satu garis rata-rata yang sangat cepat dan satu garis rata-rata yang sangat lambat. Logika spesifiknya adalah sebagai berikut:

  1. Hanya pada saat London buka trading (jam 08:00), terobosan masuk ke dalam lapangan. Penentuan cara adalah harga penutupan atau harga tertinggi yang terobosan rata-rata cepat dapat dilakukan lebih banyak, harga penutupan atau harga terendah yang terobosan rata-rata cepat dapat dibuat kosong.

  2. Pada saat yang sama, permintaan untuk penutupan garis K sebelumnya yang lebih tinggi dari rata-rata kecepatan lambat untuk melakukan lebih banyak, dan kurang dari rata-rata kecepatan lambat untuk membuat kosong, untuk menyaring situasi yang tidak tren.

  3. Stop loss diatur menjadi minimal, hanya 50-100 poin.

  4. Tidak ada set stop, dan tidak ada syarat untuk pergi saat London ditutup pukul 15.

Analisis Keunggulan

Ini adalah strategi yang sangat sederhana, tetapi memiliki keuntungan karena memanfaatkan karakteristik tren di London dengan baik:

  1. Bermain hanya saat tren jelas, menghindari risiko pasar yang bergoyang.

  2. Hanya dalam waktu London saja, mereka bisa melakukan trading, memanfaatkan momentum yang sangat berfluktuasi di London.

  3. Dengan stop loss kecil, bisa menahan tingkat bouncing.

  4. Tidak ada syarat untuk pergi, menghindari risiko menginap.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Jika tidak ada tren yang jelas di London, mungkin tidak ada perdagangan untuk waktu yang lama.

  2. Resiko terhenti karena kerugian kecil. Setelah terobosan, mungkin ada beberapa tingkat rebound yang menyebabkan terhenti.

  3. Risiko keluar prematur yang ditimbulkan oleh waktu keluar tetap. Mungkin perlu untuk memperpanjang waktu memegang posisi ketika tren kuat.

Solusi yang dapat dilakukan adalah dengan meredakan aturan masuk dengan tepat, menggunakan stop loss bergerak untuk mengunci keuntungan, dan menyesuaikan waktu keluar sesuai dengan kondisi pasar.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Menambahkan filter untuk indikator lain, seperti RSI, Bollinger Bands, dan lain-lain, untuk menghindari pasar yang lebih bergoyang.

  2. Mengoptimalkan kombinasi garis rata bergerak, menguji efek garis rata dari parameter yang berbeda.

  3. Uji berbagai ukuran titik penghentian untuk menemukan rentang penghentian yang optimal.

  4. Adapun waktu pertandingan akan disesuaikan dengan situasi yang ada, dan tidak akan ditentukan pada saat pertandingan berakhir.

  5. Uji efek dari pasangan mata uang lain dan periode waktu lainnya.

  6. Menambahkan modul pengendalian risiko, seperti pengelolaan dana, perhitungan ukuran transaksi, dll.

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi London Time Bust yang sangat sederhana dan praktis. Keuntungan dari aturan ini adalah bahwa aturan sederhana dan jelas, dan beberapa risiko perdagangan dapat dihindari dengan menggunakan fitur waktu yang masuk akal.

Kode Sumber Strategi
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// strategy(title="2 ma breakout",shorttitle="2 ma breakout", initial_capital=10000,overlay=true, commission_type = strategy.commission.cash_per_contract, commission_value = 0.00008 )
timeinrange(res, sess) => time(res, sess) != 0

//Change false to false = You have to turn on, won't show up by default
//****Always use lowercase letters

doNYOpen = input(defval=false, type = input.bool, title="NY Open On")
doNYSession = input(defval=false, type = input.bool, title="NY Session On")
doNYClose = input(defval=false, type = input.bool, title="NY Close On")

doAussieOpen = input(defval=false, type = input.bool, title="Aussie Open On")
doAussieSession = input(defval=false, type = input.bool, title="Aussie Session On")
doAussieClose = input(defval=false, type = input.bool, title="Aussie Close On")

doAsiaOpen = input(defval=false, type = input.bool, title="Asia Open On")
doAsiaSession = input(defval=false, type = input.bool, title="Asia Session On")
doAsiaClose = input(defval=false, type = input.bool, title="Asia Close On")

doEurOpen = input(defval=true, type = input.bool, title="Euro Open On")
doEurSession = input(defval=true, type = input.bool, title="Euro Session On")
doEurClose = input(defval=true, type = input.bool, title="Euro Close On")

//You can copy and paste these colors. white - silver - gray - maroon - red - purple - fuchsia - green - lime
//   olive - yellow - navy - blue - teal - aqua - orange 

nySessionStart = color.olive
nySession = color.olive
nySessionEnd = color.olive
asiaSessionStart = color.blue
asiaSession = color.blue
asiaSessionEnd = color.blue
europeSessionStart = color.red
europeSession = color.red
europeSessionEnd = color.red
colorwhite = color.white

//****Note ---- Use Military Times --- So 3:00PM = 1500


bgcolor(doAsiaSession and timeinrange(timeframe.period, "1800-0400") ? asiaSession : na, transp=75)
//bgcolor(timeinrange(timeframe.period, "0000-0300") ? color.white  : na, transp=75)
bgcolor(doEurSession and timeinrange(timeframe.period, "0300-1100") ? europeSession : na, transp=75)
bgcolor(doNYSession and timeinrange(timeframe.period, "0800-1600") ? nySession : na, transp=75)

active = input(true, title="Show On Chart")
pricehigh = security(syminfo.tickerid, '60', high[0])
pricelow = security(syminfo.tickerid, '60', low[0])
//Daily Plots
offs_daily = 0 
hiHighs = 0
loLows = 0
//plot(timeinrange(timeframe.period, "0000-0300") and pricehigh ? pricehigh  : na, title="Previous Daily High", style=plot.style_line, linewidth=2, color=color.gray)
//plot(timeinrange(timeframe.period, "0000-0300") and pricelow ? pricelow : na, title="Previous Daily Low", style=plot.style_linebr, linewidth=2, color=color.gray)

if(timeinrange(timeframe.period, "0000-0300"))
    hiHighs = highest(high, 3)
    loLows = lowest(low, 3)
    

// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


len = input(2)
src = input(close, title="Source")
out = sma(src, len)

lena = input(200, minval=1, title="Length slow")
srca = input(close, title="Source")
outa = ema(srca, lena)

//tp = input(100, title="tp")
sl = input(66, title="sl")
// if(smabool)
//     out := sma(src, len)
// else if(emabool)
//     out := ema(src, len)
// else if(hmabool)
//     out := hma(src, len)
// else if(vmabool)
//     out := wma(src, len)  
// else if(vwmabool)
//     out := vwma(src, len)   
// else if(smmabool)
//     out := sma(src, len)  
 
plot(out, color=color.white, title="MA")
plot(outa, color=color.white, title="MA")

longC = timeinrange(timeframe.period, "0300-0400") and (crossover(close,out) or crossover(high,out)) and close[1] > outa and time_cond
shortC = timeinrange(timeframe.period, "0300-0400") and (crossunder(close,out) or crossunder(low,out)) and close[1] < outa and time_cond



//inputlondon = input(false, title="london session")
//inputny = input(false, title="new york session")

//if(inputlondon==true)

strategy.initial_capital = 50000

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100           //risk % per trade

temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100      //Convert to contracts
size = temp03 - temp03%1 //Normalize to 1000s (Trade size)
if(size < 1)
    size := 1         //Set min. lot size


strategy.entry("long",1,when=longC)
//strategy.close("long", when = crossunder(close,out) or not (timeinrange(timeframe.period, "0300-1000")))
strategy.close("long", when =  not (timeinrange(timeframe.period, "0300-0945")))
strategy.exit("x_long","long", loss = sl)
     
    
strategy.entry("short",0,when=shortC)
//strategy.close("short",when = crossover(close,out) or not (timeinrange(timeframe.period, "0300-1000")))
strategy.close("short",when = not (timeinrange(timeframe.period, "0300-0945")))

strategy.exit("x_short","short", loss = sl)

//strategy.exit("closelong", "RSI_BB_LONG" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closelong")
//strategy.exit("closeshort", "RSI_BB_SHORT" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closeshort")