
Die Strategie profitiert von der Identifizierung schnell steigender Aktien und der Erhöhung der Positionen bei neuen Höhen. Die Strategie ist eine Trendverfolgungstrategie.
Die Strategie basiert auf zwei Indikatoren:
Schneller RSI: Die Kursbewegung wird durch die Berechnung der letzten drei K-Linien berechnet. Wenn der schneller RSI unter 10 liegt, wird die Aktie als überbewertet angesehen.
Hauptfilter: Berechnung der durchschnittlichen Größe der letzten 20 K-Linien, wenn die Preis-Einheit 2,5 mal größer ist als die durchschnittliche Einheit, wird als effektiver Durchbruch angesehen.
Wenn der schnelle RSI unter 10 liegt und der Einheitsfilter wirksam ist, wird eine Überposition eröffnet. Danach wird ein fester Stop-Stop-Bereich von 20% festgelegt, wenn der Preis über dem Eröffnungspreis liegt.*Wenn der Wert der Aktien im Wert der Aktien im Wert der Aktien liegt, wird der Wert der Aktien im Wert der Aktien ausgedrückt.
Die Vorteile dieser Strategie bestehen darin, dass es möglich ist, Breakouts in der Anfangsphase des Trends zu erfassen, die unteren Bereiche durch schnelle RSI-Beschlüsse zu beurteilen, und die physischen Filter zu vermeiden, um falsche Breakouts zu vermeiden. Die Verwendung eines festen Stopps, um jeden Gewinn zu sperren, ermöglicht die dauerhafte Erfassung der Trendentwicklung.
Diese Strategie hat folgende Vorteile:
Die Verwendung des schnellen RSI zur Ermittlung der unteren Überschwemmungsregion kann die Einstiegsgenauigkeit verbessern.
Die Hauptfiltermechanismen verhindern falsche Durchbrüche durch Erschütterungen.
Mit einem festen Prozentsatz können Sie kontinuierlich profitieren und die Trends erfassen.
Die Strategie ist einfach, klar und verständlich.
Die Code-Struktur ist elegant und erweiterbar, um Strategien zu optimieren.
Die Strategie erzielte eine stabile positive Rendite und eine hohe Gewinnrate während der Berichtsperiode.
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Die Strategie hat keine Stop-Loss-Mechanismen und besteht die Gefahr einer Vergrößerung der einzelnen Verluste.
Die falsche Einstellung des Fixstop-Punktes kann zu einem vorzeitigen Stillstand oder zu tiefen Stillstand führen.
In einem unsicheren Umfeld kann es zu kleinen Verlusten kommen.
Die Einnahmen im laufenden Geschäftszeitraum sind ohne Berücksichtigung der Finanzierungskosten geringer.
Die Optimierung der Strategieparameter ist unzureichend, die Parameter müssen für verschiedene Sorten angepasst werden.
Diese Strategie kann optimiert werden durch:
Ein zusätzlicher Stop-Loss-Mechanismus, der einzelne Verluste kontrolliert.
Optimierte Stop-Points, um Trends dynamisch zu verfolgen.
Optimierung der Durchbruchskennzahlen und Verbesserung der Zulassungsgenauigkeit.
Das Management von Positionen wurde erweitert und die Positionsbesetzung optimiert.
Das Modul zur Optimierung von Sortenparametern wird hinzugefügt, um die Parameter für verschiedene Sorten automatisch zu optimieren.
Es ist wichtig, die Filterbedingungen zu erhöhen, um Verluste zu vermeiden, wenn die Märkte zu unruhig sind.
Erwägen Sie, ein Modul zur Verwaltung der durchschnittlichen Kosten für die Position hinzuzufügen.
Diese Strategie ist insgesamt eine sehr schlichte und elegante Trend-Tracking-Strategie. Sie nutzt schnelle RSI-Urteile, um zu übertreffen, zu filtern, um einen effektiven Durchbruch zu ermitteln, und nimmt feste Stopp-Punkte ein, um stabile Gewinne zu erzielen. Obwohl es einige Optimierungsmöglichkeiten gibt, ist die Strategie reaktionsschnell und eignet sich für die Erfassung von Szenarien, in denen sich die Situation schnell ändert.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// this is based on https://www.tradingview.com/v/PbQW4mRn/
strategy(title = "ONLY LONG V4 v1", overlay = true, initial_capital = 1000, pyramiding = 1000,
calc_on_order_fills = false, calc_on_every_tick = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_value = 0.075)
//study(title = "ONLY LONG V4 v1", overlay = true)
//Fast RSI
src = close
fastup = rma(max(change(src), 0), 3)
fastdown = rma(-min(change(src), 0), 3)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Body Filter
body = abs(close - open)
abody = sma(body, 20)
mac = sma(close, 20)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
up = close < open and len > sma * 2 and min < min[1] and fastrsi < 10 and body > abody * 2.5
// Strategy
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
var bool longCondition = na
longCondition := up == 1 ? 1 : na
// Get the price of the last opened long
var float last_open_longCondition = na
last_open_longCondition := longCondition ? close : nz(last_open_longCondition[1])
// Get the bar time of the last opened long
var int last_longCondition = 0
last_longCondition := longCondition ? time : nz(last_longCondition[1])
// Take profit
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
tp = input(20, "TAKE PROFIT %", type = input.float, minval = 0, step = 0.5)
long_tp = crossover(high, (1+(tp/100))*last_open_longCondition) and not longCondition
// Get the time of the last tp close
var int last_long_tp = na
last_long_tp := long_tp ? time : nz(last_long_tp[1])
Final_Long_tp = long_tp and last_longCondition > nz(last_long_tp[1])
// Count your long conditions
var int sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
var int sectionTPs = 0
sectionTPs := nz(sectionTPs[1])
// Longs Counter
if longCondition
sectionLongs := sectionLongs + 1
sectionTPs := 0
if Final_Long_tp
sectionLongs := 0
sectionTPs := sectionTPs + 1
// Signals
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
// Long
// label.new(
// x = longCondition[1] ? time : na,
// y = na,
// text = 'LONG'+tostring(sectionLongs),
// color=color.lime,
// textcolor=color.black,
// style = label.style_labelup,
// xloc = xloc.bar_time,
// yloc = yloc.belowbar,
// size = size.tiny)
// Tp
// label.new(
// x = Final_Long_tp ? time : na,
// y = na,
// text = 'PROFIT '+tostring(tp)+'%',
// color=color.orange,
// textcolor=color.black,
// style = label.style_labeldown,
// xloc = xloc.bar_time,
// yloc = yloc.abovebar,
// size = size.tiny)
ltp = iff(Final_Long_tp, (last_open_longCondition*(1+(tp/100))), na), plot(ltp, style=plot.style_cross, linewidth=3, color = color.white, editable = false)
// Backtesting
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
testStartYear = input(2019, "BACKTEST START YEAR", minval = 1, maxval = 2222)
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
strategy.entry("long", strategy.long, when = longCondition and (time >= testPeriodStart))
strategy.exit("TP", "long", limit = (last_open_longCondition*(1+(tp/100))))
// Alerts
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
alertcondition(longCondition[1], title="Long Alert", message = "LONG")
alertcondition(Final_Long_tp, title="Long TP Alert", message = "LONG TP")