A principal ideia desta estratégia é usar os pontos altos e baixos da sessão asiática como pontos de ruptura. Dentro de algumas horas após a abertura dos mercados europeus e americanos, se o preço ultrapassar o alto da sessão asiática, ele vai longo; se ultrapassar o baixo da sessão asiática, ele vai curto. Stop loss e take profit são definidos para controlar o risco. A estratégia apenas abre uma negociação por dia, com um máximo de 100.000 posições simultâneas.
Esta estratégia usa os pontos altos e baixos da sessão asiática como pontos de ruptura para negociação e é adequada para uso em variedades com tendências óbvias nos mercados europeu e americano.
/*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)