
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.
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.
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.
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.
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.
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.
/*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)