이 전략의 주요 아이디어는 아시아 세션의 높은 점과 낮은 점을 브레이크아웃 포인트로 사용하는 것입니다. 유럽과 미국 시장이 열린 후 몇 시간 이내에 가격이 아시아 세션의 높은 점을 넘으면 길게 갈 것이고 아시아 세션의 낮은 점을 넘으면 짧게 갈 것입니다. 스톱 손실과 수익을 취하는 것은 위험을 제어하도록 설정됩니다. 전략은 하루에 한 거래만 열고 최대 100,000 개의 동시에 포지션을합니다.
이 전략은 아시아 세션의 높고 낮은 점을 브레이크아웃 포인트로 사용하여 유럽 및 미국 시장에서 명백한 트렌드를 가진 품종에서 사용할 수 있습니다. 그러나 고정 포인트 스톱 로스 및 영업 및 표준 브레이크아웃 엔트리 방법 또한 몇 가지 제한이 있습니다. 일부 동적이고 트렌드 기반 지표를 도입함으로써 전략을 최적화하여 더 나은 결과를 얻을 수 있습니다.
/*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)