Cette stratégie est basée sur le prix le plus élevé de la journée de négociation précédente et appartient au type de stratégie de suivi de la tendance. Elle ouvre des positions supplémentaires lorsqu’elle dépasse le prix le plus élevé de la journée de négociation précédente, même si elle est dépassée plusieurs fois dans la journée.
Utilisez la fonction LucF pour espionner la ligne K la plus récente en évitant le repérage.
Détermine si une nouvelle journée de négociation est ouverte. Enregistre le prix le plus élevé max_today et le prix le plus bas min_today.
Comparer les prix actuels de max_today et max_high, et mettre à jour max_today。
Comparer le prix le plus bas actuel avec le prix le plus bas de min_today.
Le prix le plus élevé et le prix le plus bas de la dernière journée de négociation.
Le point d’ouverture de la position est fixé à la rupture du prix le plus élevé de la journée précédente, auquel il est possible d’ajouter un certain GAP au prix le plus élevé afin de retarder ou d’avancer l’entrée.
Réglez le ratio de stop loss sl et le ratio de stop loss tp。
Il ouvre une position sur le marché lorsque le cours dépasse le cours le plus élevé de la journée précédente.
Définition des points d’arrêt et des points d’arrêt
Vous pouvez choisir d’activer ou non le suivi des pertes, de définir les exigences minimales pour lancer le suivi des pertes, de suivre la distance de l’arrêt des pertes.
Vous pouvez choisir de déterminer l’état de l’EMA lors de la fermeture.
Il s’agit d’une stratégie de suivi de tendance relativement simple qui présente les avantages suivants:
Les signaux stratégiques sont simples, clairs et faciles à mettre en œuvre.
Les signaux de confirmation de tendance qui se forment après la rupture des plus hauts de la dernière journée de négociation peuvent être utilisés pour filtrer efficacement le bruit des marchés de choc.
La sensibilité de l’entrée peut être réglée par les paramètres GAP.
Le risque global est maîtrisé, le stop loss est clair.
Vous pouvez choisir d’utiliser ou non un Stop Loss Tracker pour verrouiller plus de profits.
Le cas échéant, il peut être combiné avec l’avis de l’EMA pour éviter d’être pris au piège.
Cette stratégie comporte également des risques à prendre en compte:
Une défaillance de la percée peut entraîner des pertes et nécessite un prix de stop-loss raisonnable.
L’efficacité de la rupture dépend de l’état de la tendance du marché, qui est susceptible d’être piégé dans un marché turbulent.
Le suivi des stop-loss peut être trop sensible s’il n’est pas correctement configuré et peut être légèrement ajusté par le prix.
L’EMA peut être trop sensible ou lente si les paramètres sont mal choisis.
Il y a beaucoup de variables à surveiller et à optimiser, comme le GAP, la marge d’arrêt, le suivi des paramètres d’arrêt, etc.
Il est possible de continuer à optimiser cette stratégie dans les domaines suivants:
Le stop loss est ajusté de la valeur fixe à l’ATR ou au stop loss dynamique de la tendance
Augmentation de l’efficacité de la percée à travers le filtrage de la différence standard.
L’ajout de conditions basées sur la volatilité pour éviter une rupture inefficace de la conjoncture sismique.
Optimiser les paramètres de l’EMA pour rendre les jugements plus stables et plus précis.
Optimiser les paramètres de suivi des stop-loss pour les rendre plus adaptés aux fluctuations du marché.
Test de la robustesse paramétrique des différentes variétés.
L’ajout d’un mécanisme de réglage dynamique de la taille des positions.
La stratégie est généralement simple et pratique, elle est typique de la stratégie de suivi de la tendance, la rupture du prix le plus élevé de la journée de négociation précédente est utilisée comme signal pour suivre la tendance, le contrôle du risque repose principalement sur le stop loss. L’optimisation de paramètres raisonnables peut permettre à la stratégie d’obtenir de meilleurs résultats dans une situation de tendance.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-07 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
// © TheSocialCryptoClub
//@version=5
strategy("Yesterday's High", 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)