Suivi de la stratégie élevée d'hier


Date de création: 2023-10-08 14:06:55 Dernière modification: 2023-10-08 14:06:55
Copier: 0 Nombre de clics: 757
1
Suivre
1617
Abonnés

Aperçu

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.

Principe de stratégie

  1. Utilisez la fonction LucF pour espionner la ligne K la plus récente en évitant le repérage.

  2. 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.

  3. Comparer les prix actuels de max_today et max_high, et mettre à jour max_today。

  4. Comparer le prix le plus bas actuel avec le prix le plus bas de min_today.

  5. Le prix le plus élevé et le prix le plus bas de la dernière journée de négociation.

  6. 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.

  7. Réglez le ratio de stop loss sl et le ratio de stop loss tp。

  8. Il ouvre une position sur le marché lorsque le cours dépasse le cours le plus élevé de la journée précédente.

  9. Définition des points d’arrêt et des points d’arrêt

  10. 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.

  11. Vous pouvez choisir de déterminer l’état de l’EMA lors de la fermeture.

Analyse des avantages

Il s’agit d’une stratégie de suivi de tendance relativement simple qui présente les avantages suivants:

  1. Les signaux stratégiques sont simples, clairs et faciles à mettre en œuvre.

  2. 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.

  3. La sensibilité de l’entrée peut être réglée par les paramètres GAP.

  4. Le risque global est maîtrisé, le stop loss est clair.

  5. Vous pouvez choisir d’utiliser ou non un Stop Loss Tracker pour verrouiller plus de profits.

  6. Le cas échéant, il peut être combiné avec l’avis de l’EMA pour éviter d’être pris au piège.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. Une défaillance de la percée peut entraîner des pertes et nécessite un prix de stop-loss raisonnable.

  2. 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.

  3. 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.

  4. L’EMA peut être trop sensible ou lente si les paramètres sont mal choisis.

  5. 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.

Direction d’optimisation

Il est possible de continuer à optimiser cette stratégie dans les domaines suivants:

  1. Le stop loss est ajusté de la valeur fixe à l’ATR ou au stop loss dynamique de la tendance

  2. Augmentation de l’efficacité de la percée à travers le filtrage de la différence standard.

  3. L’ajout de conditions basées sur la volatilité pour éviter une rupture inefficace de la conjoncture sismique.

  4. Optimiser les paramètres de l’EMA pour rendre les jugements plus stables et plus précis.

  5. Optimiser les paramètres de suivi des stop-loss pour les rendre plus adaptés aux fluctuations du marché.

  6. Test de la robustesse paramétrique des différentes variétés.

  7. L’ajout d’un mécanisme de réglage dynamique de la taille des positions.

Résumer

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.

Code source de la stratégie
/*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)