Estratégia de rompimento do preço mais alto de ontem


Data de criação: 2023-11-06 10:49:57 última modificação: 2023-11-06 10:49:57
cópia: 0 Cliques: 709
1
focar em
1617
Seguidores

Estratégia de rompimento do preço mais alto de ontem

Visão geral

A estratégia de ultrapassar o máximo de ontem é uma estratégia de acompanhamento de tendências que abre várias posições quando o preço ultrapassa o máximo de ontem, mesmo que o dia seja ultrapassado várias vezes. É caracterizado por um acompanhamento de tendências como principal característica e é usado em situações em que o mercado apresenta uma tendência evidente e uma alta volatilidade.

Princípios

A estratégia introduziu uma série de indicadores para identificar o tempo de entrada e o tempo de saída.

  • ROC Curve Filter - Inicia a estratégia quando o preço de fechamento do dia, em relação ao preço de fechamento do dia anterior, sobe e desce acima do limiar definido. O indicador é usado para filtrar mercados flutuantes que não correspondem à estratégia.

  • Ponto de ruptura - registra o máximo, o mínimo e o preço de abertura do dia. Quando o preço supera o máximo do dia, é um sinal de entrada.

  • Condições de entrada e saída - configuração de stop loss e stop loss proporções após a entrada, além de ser possível ativar o stop loss tracking para bloquear os lucros. Também é possível ter um stop loss condicional para um EMA específico.

  • Configuração otimizada - pode-se definir a proporção do intervalo antes da entrada para personalizar o tempo de entrada, evitar falsas brechas. Pode-se definir paradas de perda, paradas de parada e parâmetros dinâmicos de rastreamento de perda de perda.

Especificamente, a estratégia julga o momento de entrada ao registrar o preço mais alto do dia. Quando o preço supera o preço mais alto do dia, há entrada múltipla. Depois disso, configure o stop loss e o stop loss exit, e o stop loss tracking pode ser ativado.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  • O blogueiro também escreveu sobre o uso de ferramentas de pesquisa, como o Google Trends.

  • A estratégia de ruptura, o sinal de entrada é claro.

  • Para evitar entradas consecutivas, considere o preço mais alto do dia.

  • A configuração de bloqueio de danos ajuda a controlar o risco.

  • Segue as configurações de stop loss e bloqueia os lucros.

  • Pode-se ajustar o tempo de entrada e controlar o risco através de parâmetros de otimização.

  • A implementação é simples, intuitiva e fácil de entender.

  • Pode ser usado em dois sentidos.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  • As estratégias de ruptura são fáceis de capturar. Os preços podem cair imediatamente após a entrada.

  • A taxa de variação de preços é apenas válida para a tendência, mas não é muito boa em situações de turbulência.

  • O que é necessário é um equilíbrio razoável de stop loss, que pode aumentar os prejuízos se for demasiado relaxado.

  • É necessário ajustar razoavelmente a proporção de distância entre as entradas, pois o excesso pode aumentar os prejuízos.

  • Falso avanço pode levar a prejuízos desnecessários, que precisam ser ajustados e otimizados.

  • A questão é saber se o volume de transações alcançado sustentará a tendência.

  • Atenção à coordenação entre as diferentes configurações de parâmetros de períodos de tempo.

Direção de otimização

A estratégia pode ser otimizada em:

  • Adicionar outros indicadores técnicos de julgamento, tais como volume de negócios, indicadores de convulsão, etc., para evitar ser coberto em situações de convulsão.

  • Aumentar os indicadores de curva de adequação para avaliar a qualidade das tendências e evitar seguir falsas tendências.

  • Otimização dinâmica da configuração do intervalo de entrada, ajustando o intervalo de entrada conforme a volatilidade do mercado.

  • Otimização dinâmica da configuração do Stop Loss Stop, seguindo os parâmetros de ajuste do mercado.

  • Configure diferentes parâmetros para diferentes variedades em diferentes períodos.

  • Teste o impacto de diferentes parâmetros sobre a estratégia usando o método de aprendizagem de máquina TRAINING.

  • Adicionar Opções Optimizar a configuração

  • Estudar como aplicar a estratégia em situações de tremor.

  • Estendendo estratégias de combinação para períodos de tempo e variedades.

Resumir

A estratégia baseia-se na ideia de seguir a tendência para quebrar o preço mais alto de ontem, e tem um bom desempenho em uma tendência. Mas também há riscos envolvidos e dificuldades de otimização de parâmetros. A estratégia pode ser otimizada ainda mais através da introdução de mais indicadores de julgamento, configurações de parâmetros de otimização dinâmica e extensão a estratégias de combinação.

Código-fonte da estratégia
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Author: © tumiza 999 
// © TheSocialCryptoClub

//@version=5

strategy("Yesterday's High v.17.07", overlay=true, pyramiding = 1,
         initial_capital=10000, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=10,
         slippage=1, backtest_fill_limits_assumption=1, use_bar_magnifier=true,
         commission_type=strategy.commission.percent, commission_value=0.075
         )

// -----------------------------------------------------------------------------
// ROC Filter
// -----------------------------------------------------------------------------

// f_security function by LucF for PineCoders available here: https://www.tradingview.com/script/cyPWY96u-How-to-avoid-repainting-when-using-security-PineCoders-FAQ/
f_security(_sym, _res, _src, _rep) => request.security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]
high_daily = f_security(syminfo.tickerid, "D", high, false)

roc_enable = input.bool(false, "", group="ROC Filter from CloseD", inline="roc")
roc_threshold = input.float(1, "Treshold", step=0.5, group="ROC Filter from CloseD", inline="roc")

closed = f_security(syminfo.tickerid,"1D",close, false)
roc_filter= roc_enable ? (close-closed)/closed*100  > roc_threshold  : true


// -----------------------------------------------------------------------------
// Trigger Point 
// -----------------------------------------------------------------------------

open_session = ta.change(time('D'))
price_session = ta.valuewhen(open_session, open, 0)
tf_session = timeframe.multiplier <= 60

bgcolor(open_session and tf_session ?color.new(color.blue,80):na, title = "Session")

first_bar = 0
if open_session
    first_bar := bar_index

var max_today = 0.0
var min_today = 0.0
var high_daily1 = 0.0
var low_daily1 = 0.0
var today_open = 0.0

if first_bar
    high_daily1 := max_today
    low_daily1 := min_today
    today_open := open
    max_today := high
    min_today := low


if high >= max_today
    max_today := high

if low < min_today
    min_today := low


same_day  = today_open == today_open[1]

plot( timeframe.multiplier <= 240 and same_day ? high_daily1 : na, color= color.yellow , style=plot.style_linebr, linewidth=1, title='High line')
plot( timeframe.multiplier <= 240 and same_day ? low_daily1 : na, color= #E8000D , style=plot.style_linebr, linewidth=1, title='Low line')

// -----------------------------------------------------------------------------
// Strategy settings 
// -----------------------------------------------------------------------------

Gap = input.float(1,"Gap%", step=0.5, tooltip="Gap di entrata su entry_price -n anticipa entrata, con +n posticipa entrata", group = "Entry")
Gap2 = (high_daily1 * Gap)/100

sl  = input.float(3, "Stop-loss", step= 0.5,  group = "Entry")
tp  = input.float(9, "Take-profit", step= 0.5, group = "Entry")
stop_loss_price = strategy.position_avg_price * (1-sl/100)
take_price = strategy.position_avg_price * (1+tp/100)

sl_trl = input.float(2, "Trailing-stop", step = 0.5, tooltip = "Attiva trailing stop dopo che ha raggiunto...",group = "Trailing Stop Settings")//group = "Trailing Stop Settings")
Atrl= input.float(1, "Offset Trailing", step=0.5,tooltip = "Distanza dal prezzo", group = "Trailing Stop Settings")
stop_trl_price_cond = sl_trl * high/syminfo.mintick/100
stop_trl_price_offset_cond = Atrl * high/syminfo.mintick/100

stop_tick = sl * high/syminfo.mintick/100
profit_tick = tp * high/syminfo.mintick/100

mess_buy = "buy"
mess_sell = "sell"

// -----------------------------------------------------------------------------
// Entry - Exit - Close
// -----------------------------------------------------------------------------

if close < high_daily1 and roc_filter
    strategy.entry("Entry", strategy.long, stop = high_daily1 + (Gap2), alert_message = mess_buy)

ts_n  = input.bool(true, "Trailing-stop", tooltip = "Attiva o disattiva trailing-stop", group = "Trailing Stop Settings")
close_ema = input.bool(false, "Close EMA", tooltip = "Attiva o disattiva chiusura su EMA", group = "Trailing Stop Settings")
len1 = input.int(10, "EMA length", step=1, group = "Trailing Stop Settings")
ma1 = ta.ema(close, len1)

plot(ma1, title='EMA', color=color.new(color.yellow, 0))

if ts_n == true
    strategy.exit("Trailing-Stop","Entry",loss= stop_tick, stop= stop_loss_price, limit= take_price, trail_points = stop_trl_price_cond, trail_offset = stop_trl_price_offset_cond, comment_loss="Stop-Loss!!",comment_profit ="CASH!!", comment_trailing = "TRL-Stop!!", alert_message = mess_sell)
else
    strategy.exit("TP-SL", "Entry",loss= stop_tick, stop=stop_loss_price, limit= take_price, comment_loss= "Stop-loss!!!", comment_profit = "CASH!!", alert_message = mess_sell)

if close_ema == true and ta.crossunder(close,ma1)
    strategy.close("Entry",comment = "Close" , alert_message = mess_sell)