Strategi ini adalah strategi perdagangan harian yang mudah berdasarkan moving averages yang berlaku untuk carta kitaran masa 1 jam GBPUSD. Ia hanya masuk ketika London dibuka dan keluar ketika London ditutup, sangat sesuai untuk perdagangan penembusan trend pada waktu London.
Strategi ini menggunakan dua garis purata bergerak, satu garis purata yang sangat cepat dan satu garis purata yang sangat perlahan. Logik spesifiknya adalah seperti berikut:
Hanya apabila London dibuka ((jam 8) pecah masuk ke dalam padang. Cara penilaian adalah harga penutupan atau harga tertinggi memecahkan garis purata pantas boleh melakukan lebih banyak, harga penutupan atau harga terendah memecahkan garis purata pantas boleh membuat kosong.
Pada masa yang sama, harga penutupan garis K terdahulu yang lebih tinggi daripada rata-rata perlahan untuk melakukan lebih banyak, dan lebih rendah daripada rata-rata perlahan untuk membuat kosong, untuk menyaring keadaan bukan trend.
Stop Loss ditetapkan sebagai minimum, hanya 50-100 mata.
Tidak ada penangguhan, tidak ada syarat untuk berlepas apabila London ditutup pada jam 15.
Ini adalah strategi penembusan yang sangat mudah, tetapi dengan kelebihan berikut kerana memanfaatkan ciri-ciri trend pada masa London:
Ini adalah satu-satunya cara untuk mengelakkan risiko pasaran yang bergoyang apabila anda memasuki pasaran hanya apabila trend sudah jelas.
Ia hanya berlaku pada waktu London sahaja, yang merupakan masa yang paling bergolak.
Ia menggunakan stop loss kecil yang boleh menahan beberapa bouncing.
Tidak ada syarat untuk berlepas dan mengelakkan risiko bermalam di sana.
Strategi ini mempunyai beberapa risiko:
Apabila tidak ada trend yang jelas pada waktu London, mungkin tidak ada dagangan untuk masa yang lama.
Risiko terhenti yang disebabkan oleh kerugian kecil. Mungkin terdapat beberapa tahap rebound yang disebabkan oleh kerugian selepas penembusan.
Risiko berlakunya penyingkiran awal dari tempoh keluar tetap. Tempoh memegang kedudukan mungkin perlu diperpanjang apabila terdapat trend yang kuat.
Kaedah-kaedah yang boleh diambil adalah dengan melonggarkan peraturan kemasukan, menggunakan hentian bergerak untuk mengunci keuntungan, dan menyesuaikan waktu keluar sesuai dengan keadaan pasaran.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menambah penapis untuk petunjuk lain seperti RSI, Bollinger Bands dan sebagainya untuk mengelakkan lebih banyak kejatuhan pasaran.
Mengoptimumkan kombinasi garis rata bergerak, menguji kesan garis rata pada parameter yang berbeza.
Uji pelbagai saiz titik hentian untuk mencari julat hentian yang optimum.
Bergantung kepada keadaan, anda boleh menyesuaikan masa keluar dari permainan secara langsung, dan tidak menetapkan masa keluar dari permainan pada waktu penutupan.
Uji kesan pasangan mata wang lain dan kitaran masa lain.
Menambah modul kawalan risiko, seperti pengurusan dana, pengiraan saiz perdagangan dan sebagainya.
Strategi ini secara keseluruhan adalah strategi penembusan masa London yang sangat mudah dan praktikal. Keuntungan adalah bahawa peraturan mudah dan jelas, dan beberapa risiko perdagangan dapat dielakkan dengan menggunakan ciri-ciri masa yang wajar.
/*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")