Estratégia de ruptura de alta e baixa da sessão asiática

Autora:ChaoZhang, Data: 2024-03-29 17:12:49
Tags:

img

Resumo

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.

Princípio da estratégia

  1. Determine a hora de negociação da sessão asiática.
  2. Durante a sessão asiática, registre os preços mais altos e mais baixos do dia.
  3. Em determinado momento (horas de deslocamento definidas pelo utilizador) após a abertura dos mercados europeus e americanos, se o preço ultrapassar o máximo da sessão asiática, vá para longo; se ultrapassar o mínimo da sessão asiática, vá para curto.
  4. Configure stop loss e take profit. O número de pontos para stop loss e take profit pode ser personalizado.
  5. Abre apenas uma nova transacção por dia, com um máximo de 100 000 posições simultâneas.
  6. Se uma posição já tiver sido aberta para o dia, não serão abertas novas operações.

Análise das vantagens

  1. Usando as características relativamente calmas da sessão asiática e usando os pontos altos e baixos da sessão asiática como pontos de ruptura, pode capturar melhor as oportunidades de tendência das sessões europeia e americana.
  2. A definição de stop loss e take profit pode controlar efetivamente o risco, permitindo que as negociações lucrativas sejam executadas e parar rapidamente as perdas em negociações não lucrativas.
  3. A limitação a apenas uma negociação por dia e a um número máximo de posições simultâneas pode evitar o excesso de negociação e a utilização excessiva de fundos.
  4. Os usuários podem definir com flexibilidade parâmetros como tempo de sessão asiático e deslocamento de horas de acordo com suas próprias necessidades.

Análise de riscos

  1. Os pontos altos e baixos da sessão asiática podem não ser os verdadeiros pontos altos e baixos do dia.
  2. O ponto fixo de stop loss e take profit podem não ser capazes de lidar com grandes flutuações no mercado.
  3. Em situações em que a tendência não é óbvia ou a volatilidade do mercado é elevada, a estratégia pode apresentar perdas de abertura e de parada frequentes.

Direcção de otimização

  1. Considerar o ajuste dinâmico do número de pontos de stop loss e take profit com base em indicadores de volatilidade, como o ATR, para se adaptar às diferentes condições de mercado.
  2. Adicione alguns indicadores de julgamento da tendência, como MA, e só vá longo quando a grande tendência estiver em alta e vá curto quando estiver em baixa para melhorar a taxa de sucesso.
  3. Considere a definição de parâmetros diferentes para diferentes períodos de tempo, como o uso de stop loss e take profit menores no início das sessões de negociação europeia e americana e o aumento do stop loss e take profit quando a tendência é óbvia.

Resumo

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)


Mais.