Die Strategie basiert auf dem Höchstpreis des vorangegangenen Handelstages und ist eine Trend-Folge-Strategie. Sie eröffnet eine Überposition, wenn der Höchstpreis des vorangegangenen Handelstages überschritten wird, und wird auch dann wiederholt, wenn der Tag mehrmals überschritten wird.
Die LucF-Funktion wird benutzt, um die neueste K-Leitung auszuspionieren, um die Rückmessung zu vermeiden.
Beurteilen Sie, ob ein neuer Handelstag eröffnet wurde. Aufzeichnen Sie den höchsten Preis max_today und den niedrigsten Preis min_today.
Vergleichen Sie die aktuellen Höchstpreise high und max_today, aktualisieren max_today。
Vergleichen Sie die aktuellen Mindestpreise low und min_today, aktualisieren Sie min_today。
Zeichnen Sie die Höchst- und Mindestpreise des vorangegangenen Handelstages.
Der Einstiegspunkt für den Börsengang, der bei einem Höchstpreis des vorangegangenen Handelstags platziert wurde, kann mit einem gewissen GAP auf den Höchstpreis erweitert werden, um den Einstieg zu verzögern oder zu verfrühen.
Setzen Sie die Stop-Loss-Ratio Sl und die Stop-Stop-Ratio TP.
Ein Überschuss wird eröffnet, wenn der Preis den Höchstwert des vorangegangenen Handelstages überschreitet.
Setzen Sie Stop-Loss- und Stop-Stop-Punkte.
Es gibt die Möglichkeit, den Tracking Stop zu aktivieren, die Mindestanforderungen für den Start des Tracking Stop einzustellen und die Entfernung des Tracking Stop zu bestimmen.
Sie können die EMA-Status bei der Schließung auswählen.
Dies ist eine relativ einfache Trend-Tracking-Strategie mit folgenden Vorteilen:
Die Strategie-Signale sind einfach, klar und leicht umzusetzen.
Trendbestätigungssignale, die durch den Durchbruch der Höchstpreise des vorangegangenen Handelstages gebildet wurden, können den Schwingungslärm des Markts wirksam filtern.
Die Sensitivität des Einstiegs kann über die GAP-Parameter eingestellt werden.
Die Gesamtrisiken sind kontrollierbar, die Stop Loss sind klar.
Sie können wählen, ob Sie mit einem Tracking-Stopp mehr Gewinne erzielen möchten.
Es ist möglich, dass die EMA-Bestimmungen in Verbindung gebracht werden, um die Verstopfung zu vermeiden.
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Ein Ausfall kann zu Verlusten führen und erfordert eine angemessene Einstellung des Stop-Loss-Preises.
Die Effektivität eines Breakouts hängt von einem Trend ab, der in einem wackligen Markt leicht abgeschaltet werden kann.
Der Tracking-Stopp kann bei falscher Einstellung zu empfindlich sein und wird durch eine geringe Preisanpassung gestoppt.
Die EMA kann auch zu sensibel oder langsam sein, wenn die Parameter falsch ausgewählt werden.
Es gibt mehrere Variablen, die berücksichtigt und optimiert werden müssen, wie z. B. GAP, Stop-Loss-Grad, Tracking-Stop-Loss-Einstellungen usw.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Der Stop-Loss wird von einem festen Wert auf einen ATR oder einen dynamischen Trend-Stop-Loss angepasst.
Erhöhung der Effektivität von Durchbrüchen durch Standarddifferenz-Filterung.
Erhöhung der volatilitätsbasierten Konditionen, um einen unwirksamen Durchbruch der Erschütterung zu vermeiden.
Optimierung der EMA-Parameter, um eine stabilere und genauere Beurteilung zu ermöglichen.
Optimierung der Parameter für die Verfolgung von Stop-Losses, um sie besser in Einklang mit den Marktschwankungen zu bringen.
Tests zur Parameterstärke verschiedener Sorten.
Erweiterung der Mechanismen zur dynamischen Anpassung der Positionsgröße.
Die Strategie ist insgesamt relativ einfach und praktisch, gehört zu den typischen Trend-Tracking-Strategien, der Durchbruch des Höchstpreises des vorherigen Handelstages dient als Signal, um den Trend zu verfolgen, und die Risikokontrolle beruht hauptsächlich auf Stop-Loss. Durch die Optimierung von vernünftigen Parametern kann die Strategie in einer Trend-Situation besser funktionieren.
/*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)