
この戦略の主な構想は,アジア盤の高低を突破点として利用し,欧州・アメリカ盤の開盤後数時間以内に,価格がアジア盤の高を突破した場合,多めにし,アジア盤の低を突破した場合,空白をすることである.同時に,ストップとストップを設定し,リスクを制御する.この戦略は,最大同時開設ポジションが100000であるために,毎日1つの取引しか開かない.
この戦略は,アジア盤の高低点を突破点として利用して取引し,ヨーロッパ・アメリカ盤の傾向がより顕著な品種で使用するのに適しています.しかし,固定ポイント数ストップ・ローズ・ストップと標準的な突破入場方法にもいくつかの限界があります.いくつかの動的およびトレンドの指標を導入することによって,この戦略を最適化して,より良い効果を得ることができます.
/*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)