
이 전략의 주요 아이디어는 아시아 상장의 높은 낮은 점을 뚫는 포인트로 이용하고, 유로아메리카 상장 개장 후 몇 시간 안에, 가격이 아시아 상장 높은 점을 뚫면 더 많이 하고, 아시아 상장 낮은 점을 뚫면 공백을 한다. 동시에 중지 손실과 중지 스톱을 설정하고, 위험을 통제한다. 이 전략은 하루에 한 거래만 하고, 최대 동시에 열 수 있는 포지션은 100000이다.
이 전략은 아시아 디스크의 높고 낮은 점을 뚫고 거래하기 위해 사용되며, 유로아메리카 디스크의 추세가 더 뚜렷한 품종에 적합하다. 그러나 고정된 포인트 수 스톱로스 스톱과 표준의 뚫고 들어가는 방식에도 몇 가지 제한이 있다. 몇 가지 역동적이고 추세적인 지표를 도입하여 이 전략에 최적화를 할 수 있으며, 더 나은 효과를 얻을 수 있다.
/*backtest
start: 2024-02-27 00:00:00
end: 2024-03-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Asia Session", overlay=true)
var hourSessionStart = input(19, "Asia session start hour", minval=0, maxval=23)
var hourSessionStop = input(1, "Asia session end hour", minval=0, maxval=23)
var offsetHours = input(3, "Offset hours after Asia session end")
var float hi = na
var float lo = na
var float plotHi = na
var float plotLo = na
var bool inSession = na
var bool enteringSession = na
var bool exitingSession = na
inSession := (hour >= hourSessionStart or hour < hourSessionStop)
enteringSession := inSession and not inSession[1]
exitingSession := not inSession and inSession[1]
if enteringSession
plotLo := na
plotHi := na
if inSession
lo := min(low, nz(lo, 1.0e23))
hi := max(high, nz(hi))
if exitingSession
plotLo := lo
plotHi := hi
lo := na
hi := na
bgcolor(inSession ? color.blue : na)
plot(plotLo, "Asia session Low", color.red, style=plot.style_linebr)
plot(plotHi, "Asia session High", color.green, style=plot.style_linebr)
// Implementazione delle condizioni di entrata
var float asiaSessionLow = na
var float asiaSessionHigh = na
var int maxTrades = 100000 // Impostiamo il massimo numero di operazioni contemporanee
var int tradesOpened = 0 // Variabile per tenere traccia del numero di operazioni aperte
var bool tradeOpened = false
var bool operationClosed = false // Nuova variabile per tenere traccia dello stato di chiusura dell'operazione
// Calcolo del range asiatico
if (inSession)
asiaSessionLow := lo
asiaSessionHigh := hi
// Apertura di un solo trade al giorno
if (enteringSession)
tradeOpened := false
// Condizioni di entrata
var float stopLoss = 300 * syminfo.mintick
var float takeProfit = 300 * syminfo.mintick
if (not tradeOpened and not operationClosed and close < asiaSessionLow and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
strategy.entry("Buy", strategy.long)
tradeOpened := true
tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte
if (not tradeOpened and not operationClosed and close > asiaSessionHigh and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
strategy.entry("Sell", strategy.short)
tradeOpened := true
tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte
// Impostazione dello stop loss e del take profit
strategy.exit("Stop Loss / Take Profit", "Buy", stop=close - stopLoss, limit=close + takeProfit)
strategy.exit("Stop Loss / Take Profit", "Sell", stop=close + stopLoss, limit=close - takeProfit)