Estratégia de negociação de fim de semana

Autora:ChaoZhang, Data: 2023-11-14 11:29:12
Tags:

img

Resumo

Esta é uma estratégia de negociação de curto prazo que utiliza o aumento do volume de negociação do fim de semana do Bitcoin usando alavancagem de 10x. A ideia principal é registrar o preço de fechamento de sexta-feira, comparar os preços de fechamento diários de sábado e domingo com o preço de fechamento de sexta-feira e ir longo ou curto se o limite for excedido. As posições serão fechadas na segunda-feira.

Estratégia lógica

A estratégia primeiro registra o preço de fechamento de sexta-feira, em seguida, calcula o número de dias desde sexta-feira. No sábado e domingo, se o preço de fechamento diário for mais de 4,5% acima do preço de fechamento de sexta-feira, vá curto; se o preço de fechamento diário for mais de 4,5% abaixo do preço de fechamento de sexta-feira, vá longo. Cada negociação usa alavancagem de 10x. Se o lucro atingir 10% do capital inicial, feche todas as posições. Na segunda-feira, feche todas as posições independentemente.

Especificamente, a estratégia obtém o preço de fechamento de sexta-feira, em seguida, compara o preço de fechamento atual com os de sexta-feira no sábado e domingo.strategy.shortSe o preço de fechamento actual for mais de 4,5% inferior ao das sextas-feiras, negociar com astrategy.longA alavancagem é definida em 10x através doleverageSe o lucro atingir 10% do capital inicial, fechar todas as posições através de umstrategy.close_all()Na segunda-feira, feche todas as posições viastrategy.close_all().

Análise das vantagens

  • Utiliza o aumento do volume de negociação de fim de semana do Bitcoin para negociação de curto prazo, capturando tendências de fim de semana
  • A alavancagem de 10x amplifica os retornos
  • A condição de lucro ajuda a bloquear os lucros e evitar que as perdas se expandam
  • O fechamento de posições na segunda-feira evita riscos de aberturas voláteis na segunda-feira

Análise de riscos

  • Os preços do Bitcoin são voláteis nos fins de semana, risco de perdas
  • 10x alavancagem amplifica perdas
  • A colocação incorreta de um stop loss pode levar a grandes perdas
  • As aberturas voláteis de segunda-feira podem impedir a obtenção total de lucros.

Melhorias potenciais para mitigar os riscos:

  1. Configurar stop loss para controlar a perda por transação.
  2. Ajustar a alavancagem para reduzir o risco.
  3. Otimizar os pontos de lucro, tirar lucros em lotes depois de atingir certos níveis de lucro.
  4. Configure o volume ou o tempo para tirar lucros antes da abertura da segunda-feira para evitar volatilidade.

Orientações de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Incorporar médias móveis, RSI etc. para filtrar as entradas e melhorar a precisão.

  2. Otimizar as estratégias de stop loss e take profit.

  3. Ajustar o tamanho da alavancagem para reduzir o risco Implementar um ajuste dinâmico da alavancagem, reduzindo a alavancagem durante os drawdowns.

  4. Adicione outras criptomoedas. Negocie criptomoedas adicionais com padrões de fim de semana para arbitragem de multi-ativos.

  5. Utilize o aprendizado de máquina para otimizar parâmetros. Recolha grandes conjuntos de dados históricos e use o ML para otimizar automaticamente o ajuste de parâmetros dinâmicos.

Resumo

Esta é uma estratégia de negociação de curto prazo típica que utiliza o volume aumentado do fim de semana do Bitcoin. Ele capitaliza o volume do fim de semana julgando as tendências no sábado e domingo, indo longo ou curto. A estratégia tem vantagens como amplificação de lucro e controle de risco, mas também tem alguns riscos. Os próximos passos são otimizar áreas como entrada, stop loss, gerenciamento de alavancagem, expansão de ativos etc. para tornar a estratégia mais robusta e inteligente.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Copyright Boris Kozak 
strategy("XBT Weekend Trade Strategy", overlay=false)
leverage = input(10,"Leverage")
profitTakingPercentThreshold = input(0.10,"Profit Taking Percent Threshold")

//****Code used for setting up backtesting.****///
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na
bgcolor(testPeriodBackgroundColor, transp=50)

testPeriod() => true
    
//****END Code used for setting up backtesting.****///


//*** Main entry point is here***//
// Figure out how many days since the Friday close 
days_since_friday = if dayofweek == 6
    0
else 
    if dayofweek == 7
        1
    else
        if dayofweek == 1
            2
        else
            if dayofweek == 2
                3
            else
                if dayofweek == 3
                    4
                else
                    if dayofweek == 4
                        5
                    else
                        6
    
// Grab the Friday close price
fridaycloseprice = request.security(syminfo.tickerid,'D',close[days_since_friday])
plot(fridaycloseprice)
strategy.initial_capital = 50000
// Only perform backtesting during the window specified 
if testPeriod()
    // If we've reached out profit threshold, exit all positions 
    if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold)
        strategy.close_all()
    // Only execute this trade on saturday and sunday (UTC)
    if (dayofweek == 7.0 or dayofweek == 1.0)
        // Begin - Empty position (no active trades)
        if (strategy.position_size == 0)
            // If current close price > threshold, go short 
            if ((close>fridaycloseprice*1.045))
                strategy.entry("Short Entry", strategy.short, leverage)
            else
                // If current close price < threshold, go long
                if (close<(fridaycloseprice*0.955))
                    strategy.entry("Long Entry",strategy.long, leverage)
        // Begin - we already have a position
        if (abs(strategy.position_size) > 0)
            // We are short 
            if (strategy.position_size < 0)
                if ((close>strategy.position_avg_price*1.045))
                    // Add to the position
                    strategy.entry("Adding to Short Entry", strategy.short, leverage)
            else
                strategy.entry("Long Entry",strategy.long,leverage)
    // On Monday, if we have any open positions, close them 
    if (dayofweek==2.0)
        strategy.close_all()
 






Mais.