Chiến lược giao dịch ngày đột phá London

Tác giả:ChaoZhang, Ngày: 2023-09-15 15:43:04
Tags:

Tổng quan chiến lược

Chiến lược giao dịch ngày đột phá London được thiết kế cho giao dịch ngoại hối trong ngày, tận dụng hành động giá phiên London với logic đột phá đơn giản. Nó kết hợp các giờ giao dịch cụ thể và mô hình hành vi giá cho lợi nhuận ngắn hạn.

Chiến lược logic

  1. Giao dịch chỉ trong giờ phiên London vào các ngày trong tuần, ví dụ: GMT 0400-0500.

  2. Xác định xu hướng ngắn hạn: đi dài trên 3 nến liên tiếp tăng, đi ngắn trên 3 nến liên tiếp giảm.

  3. Tín hiệu dài: nhập dài khi nhìn thấy 3 nến lên liên tiếp.

  4. Tín hiệu ngắn: nhập ngắn khi nhìn thấy 3 nến xuống liên tiếp.

  5. Stop loss/take profit: thiết lập stop loss và take profit ở một tỷ lệ phần trăm nhất định từ giá nhập cảnh.

  6. Các quy tắc thoát: thoát tại điểm dừng lỗ / lấy lợi nhuận kích hoạt, hoặc tại điểm kết thúc phiên London.

Chiến lược chỉ sử dụng các tín hiệu đột phá đơn giản để nắm bắt xu hướng ngắn hạn, với quản lý rủi ro nghiêm ngặt để kiểm soát rủi ro / phần thưởng cho mỗi giao dịch.

Ưu điểm của Chiến lược

  • Giao dịch chỉ trong giờ London hoạt động cao

  • Logic đột phá giá đơn giản cho các tín hiệu

  • Rủi ro kiểm soát dừng lỗ / lấy lợi nhuận nghiêm ngặt

  • Tránh các phiên đêm và lễ hội thanh khoản thấp

  • Các quy tắc nhập cảnh và xuất cảnh rõ ràng

Cảnh báo về rủi ro

  • Các vấn đề về nhập cảnh sớm hoặc muộn

  • Nguy cơ bị mắc kẹt

  • Các cơ hội có thể xuất hiện trong đêm / ngày lễ

  • Các mức hỗ trợ / kháng cự chính cần được chú ý

Kết luận

Chiến lược giao dịch ngày đột phá London phù hợp với giao dịch trong ngày ngắn hạn rất tốt, tránh các giai đoạn hỗn loạn và thoát ra với lợi nhuận trong thời gian thanh khoản cao.


/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-08 09:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("time zone", overlay=true, initial_capital=1000)
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 = 2000, title = "From Year", minval = 1970)
 //monday and session 
// 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)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

s = input(title="Session", type=input.session, defval="0400-0500")
s2 = input(title="eXOT", type=input.session, defval="0300-0900")
t1 = time(timeframe.period, s)
t2 = time(timeframe.period, s2)
c2 = #0000FF
//bgcolor(t1 ? c2 : na, transp=85)

UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

isMon() => dayofweek(time('D')) == dayofweek.monday
isTue() => dayofweek(time('D')) == dayofweek.tuesday
isWed() => dayofweek(time('D')) == dayofweek.wednesday
isThu() => dayofweek(time('D')) == dayofweek.thursday
isFri() => dayofweek(time('D')) == dayofweek.friday
isSat() => dayofweek(time('D')) == dayofweek.saturday
isSun() => dayofweek(time('D')) == dayofweek.sunday

longe = input(true, title="LONG only")
shorte = input(true, title="SHORT only")
//sl=input(0.001, title="sl % price movement")
//accbalance = strategy.initial_capital + strategy.netprofit


entry = close

sl = input(0.005, title = "Stop Loss")
tp = input(0.005, title="Target Price")

// sldist = entry - sl
// tgdist = tp - entry 
// slper = sldist / entry * 100
// tgper = tgdist / entry * 100

// rr = tgper / slper
// size = accbalance * riskper / slper

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


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



longC =  haClose> haClose[1] and  haClose[1] > haClose[2]  and haClose[2] <  haClose[3] 
shortC = haClose < haClose[1] and   haClose[1] < haClose[2]  and haClose[2] > haClose[3] 


luni = input(true, title="Monday")
marti = input(true, title="Tuesday")
miercuri = input(true, title="Wednesday")
joi = input(true, title="Thursday")
vineri = input(true, title="Friday")
if(time_cond)
    if(t1)
        if(luni==true and dayofweek == dayofweek.monday)
            if(longC and longe )
                strategy.entry("long",1)
            if(shortC and shorte)
                strategy.entry("short",0)
                
        if(marti==true and dayofweek == dayofweek.tuesday)
            if(longC and longe )
                strategy.entry("long",1)
            if(shortC and shorte)
                strategy.entry("short",0)
                
        if(miercuri==true and dayofweek == dayofweek.wednesday)
            if(longC and longe  )
                strategy.entry("long",1)
            if(shortC and shorte)
                strategy.entry("short",0)
                
        if(joi==true  and dayofweek == dayofweek.thursday)
            if(longC and longe)
                strategy.entry("long",1)
            if(shortC and shorte)
                strategy.entry("short",0)
                
        if(vineri==true and  dayofweek == dayofweek.friday)
            if(longC and longe)
                strategy.entry("long",1 )
            if(shortC and shorte)
                strategy.entry("short",0)  


//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")

strategy.exit("sl","long", loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick)
strategy.exit("sl","short", loss=close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick)

//strategy.close("long")
//strategy.close("short" )

//strategy.exit("sl","long", loss = sl)
//strategy.exit("sl","short", loss= sl)

if(not t2)
    strategy.close_all()
//strategy.risk.max_intraday_filled_orders(2)





Thêm nữa