
Die Dynamik-Präsentation-Trend-Tracking-Strategie verwendet mehrere Dynamik-Indikatoren, um die Preisentwicklung zu identifizieren, Positionen zu erstellen, wenn die Tendenz beginnt, um die Gewinnspanne durch die Einstellung von Stop-Loss-Stopps zu verfolgen, um die Preisentwicklung zu verfolgen.
Die Strategie zur Beobachtung von Dynamikpreistrends verwendet hauptsächlich folgende technische Indikatoren:
ROC-Indikator: Dieser Indikator berechnet die prozentuale Veränderung der Preisgeschwindigkeit in einem bestimmten Zeitraum, um die Preisbewegung zu beurteilen. Wenn der ROC positiv ist, bedeutet dies, dass der Preis steigt. Wenn der ROC negativ ist, bedeutet dies, dass der Preis fällt.
Mehrwertsteuerindikator: Dieser Indikator spiegelt die Wechselbeziehung zwischen Mehrwertsteuer und Leerlaufkraft wider. Mehrwertsteuer> 0 bedeutet, dass die Mehrwertsteuer größer ist als die Leerlaufkraft, die Preise steigen; im Gegenteil, die Preise fallen. Die Strategie nutzt diesen Indikator, um die Vergleichbarkeit der Mehrwertsteuer zu beurteilen und die Preisrichtung vorherzusagen.
Abweichungsindikator: Dieser Indikator berechnet die Abweichung von Preis und Transaktionsvolumen, um eine Trendwende zu beurteilen. Die Strategie nutzt das Abweichungssignal als Einstiegsmoment.
Donchian-Kanal: Der Indikator erstellt einen Kanal über die Preishöhe und -höhe, wobei die Kanalgrenzen als Unterstützungs- und Widerstandspunkte dienen können. Die Strategie nutzt den Kanal, um die Richtung des Trends zu bestimmen.
Moving Average: Dieser Indikator kann die Schwingungen der Preise, die von den Höhen und Tiefen unterstützt werden, ausblenden und die Richtung der wichtigsten Trends aufzeigen. Die Strategie nutzt ihn, um die Gesamtbewegung der Preise zu bestimmen.
Die Strategie beurteilt die Preisentwicklung und den Zeitpunkt der Umkehrung anhand der oben genannten mehrerer Indikatoren und errichtet in der Anfangsphase des Trends eine Über- oder Leerposition anhand der Indikatorsignale. Die Strategie schließt dann die Position rechtzeitig nach dem Stop-Loss-Stoppunkt und lockert den Gewinn, um die Preisentwicklung zu erfassen.
Diese Strategie hat folgende Vorteile:
Die Anwendung verschiedener Indikatoren zur Beurteilung von Trends und zur Verringerung der Wahrscheinlichkeit von Fehlinterpretationen.
Die Indikatoren werden verwendet, um Trendwendepunkte zu erfassen, die von einer genauen Erfassung abweichen.
Der Trend wird in Kombination mit den Kanälen und den Moving Averages bestimmt.
Ein Stop-Loss-Punkt, der eine zeitnahe Einstellung ermöglicht, um eine Ausweitung des Rückzugs zu vermeiden.
Die Parameter können angepasst werden und sind für verschiedene Perioden und Sorten von Transaktionen geeignet.
Die Strategie ist klar und verständlich, sodass sie später optimiert werden kann.
Die Strategie birgt auch Risiken:
Mehrfache Kombinationsbeurteilungen erhöhen die Wahrscheinlichkeit von Fehlsignalen und erfordern eine Anpassung der Parameteroptimierung der Gewichte der Indikatoren.
Eine zu kleine Einstellung des Stop-Loss-Punktes kann die Wahrscheinlichkeit des Stopps erhöhen, eine zu große Einstellung kann den Rückzug ausweiten. Es ist eine umfassende Überlegung erforderlich, um einen angemessenen Stop-Loss-Punkt zu bestimmen.
Unterschiedliche Parameter des Marktzyklus müssen angepasst werden, und eine blinde Anwendung kann zu einer Unanpassung an die Marktumgebung führen.
Es ist notwendig, ausreichend Kapital zu haben, um mehrere Einheiten gleichzeitiger Transaktionen zu unterstützen, sonst ist es schwierig, excess returns zu erzielen.
Es besteht ein überprüftes Anpassungsrisiko für Programmausgaben, und es besteht eine gewisse Unsicherheit über die Wirksamkeit der Festplatte.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Parameter des Indikators, um die optimale Kombination von Parametern für verschiedene Perioden und Sorten zu finden.
Die Optimierung der Parameter durch die Einführung von Algorithmen zur automatischen Suche nach den optimalen Parametern.
Erweiterung der Anpassungs-Stop-Mechanismen und Anpassung der Stop-Loss-Punkte an die Marktbedingungen.
Alpha der Strategie, kombiniert mit dem Hochfrequenzfaktor und den Fundamentaldaten.
Entwicklung eines automatischen Testrahmens, Anpassung der Parameterkombinationen und Verifizierung der Effektivität von Transaktionen.
Einführung eines Risikomanagement-Moduls, um die Größe der Positionen zu kontrollieren und Rücknahmen zu reduzieren.
Die Strategie soll durch die Erhöhung der Stabilität von Simulations- und Live-Verifizierungsschaltungen erweitert werden.
Die Strategie nutzt mehrere dynamische Indikatoren, um die Preisentwicklung zu ermitteln, und setzt Stopps und Verluste ein, um Gewinne zu erzielen. Die Strategie kann die Preisentwicklung effektiv erfassen und hat eine starke Stabilität. Durch die Anpassung der Parameter, die Optimierung der Struktur und die Risikokontrolle kann die Strategie die Effektivität weiter steigern und das Handelsrisiko senken.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 00:00:00
period: 1m
basePeriod: 1m
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/
// © mbagheri746
//@version=4
strategy("Bagheri IG Ether v2", overlay=true, margin_long=100, margin_short=100)
TP = input(3000, minval = 1 , title ="Take Profit")
SL = input(2200, minval = 1 , title ="Stop Loss")
//_________________ RoC Definition _________________
rocLength = input(title="ROC Length", type=input.integer, minval=1, defval=186)
smoothingLength = input(title="Smoothing Length", type=input.integer, minval=1, defval=50)
src = input(title="Source", type=input.source, defval=close)
ma = ema(src, smoothingLength)
mom = change(ma, rocLength)
sroc = nz(ma[rocLength]) == 0
? 100
: mom == 0
? 0
: 100 * mom / ma[rocLength]
//srocColor = sroc >= 0 ? #0ebb23 : color.red
//plot(sroc, title="SROC", linewidth=2, color=srocColor, transp=0)
//hline(0, title="Zero Level", linestyle=hline.style_dotted, color=#989898)
//_________________ Donchian Channel _________________
length1 = input(53, minval=1, title="Upper Channel")
length2 = input(53, minval=1, title="Lower Channel")
offset_bar = input(91,minval=0, title ="Offset Bars")
upper = highest(length1)
lower = lowest(length2)
basis = avg(upper, lower)
DC_UP_Band = upper[offset_bar]
DC_LW_Band = lower[offset_bar]
l = plot(DC_LW_Band, style=plot.style_line, linewidth=1, color=color.red)
u = plot(DC_UP_Band, style=plot.style_line, linewidth=1, color=color.aqua)
fill(l,u,color = color.new(color.aqua,transp = 90))
//_________________ Bears Power _________________
wmaBP_period = input(65,minval=1,title="BearsP WMA Period")
line_wma = ema(close, wmaBP_period)
BP = low - line_wma
//_________________ Balance of Power _________________
ES_BoP=input(15, title="BoP Exponential Smoothing")
BOP=(close - open) / (high - low)
SBOP = rma(BOP, ES_BoP)
//_________________ Alligator _________________
//_________________ CCI _________________
//_________________ Moving Average _________________
sma_period = input(74, minval = 1 , title = "SMA Period")
sma_shift = input(37, minval = 1 , title = "SMA Shift")
sma_primary = sma(close,sma_period)
SMA_sh = sma_primary[sma_shift]
plot(SMA_sh, style=plot.style_line, linewidth=2, color=color.yellow)
//_________________ Long Entry Conditions _________________//
MA_Lcnd = SMA_sh > low and SMA_sh < high
ROC_Lcnd = sroc < 0
DC_Lcnd = open < DC_LW_Band
BP_Lcnd = BP[1] < BP[0] and BP[1] < BP[2]
BOP_Lcnd = SBOP[1] < SBOP[0]
//_________________ Short Entry Conditions _________________//
MA_Scnd = SMA_sh > low and SMA_sh < high
ROC_Scnd = sroc > 0
DC_Scnd = open > DC_UP_Band
BP_Scnd = BP[1] > BP[0] and BP[1] > BP[2]
BOP_Scnd = SBOP[1] > SBOP[0]
//_________________ OPEN POSITION __________________//
if strategy.position_size == 0
strategy.entry(id = "BUY", long = true , when = MA_Lcnd and ROC_Lcnd and DC_Lcnd and BP_Lcnd and BOP_Lcnd)
strategy.entry(id = "SELL", long = false , when = MA_Scnd and ROC_Scnd and DC_Scnd and BP_Scnd and BOP_Scnd)
//_________________ CLOSE POSITION __________________//
strategy.exit(id = "CLOSE BUY", from_entry = "BUY", profit = TP , loss = SL)
strategy.exit(id = "CLOSE SELL", from_entry = "SELL" , profit = TP , loss = SL)
//_________________ TP and SL Plot __________________//
currentPL= strategy.openprofit
pos_price = strategy.position_avg_price
open_pos = strategy.position_size
TP_line = (strategy.position_size > 0) ? (pos_price + TP/100) : strategy.position_size < 0 ? (pos_price - TP/100) : 0.0
SL_line = (strategy.position_size > 0) ? (pos_price - SL/100) : strategy.position_size < 0 ? (pos_price + SL/100) : 0.0
// hline(TP_line, title = "Take Profit", color = color.green , linestyle = hline.style_dotted, editable = false)
// hline(SL_line, title = "Stop Loss", color = color.red , linestyle = hline.style_dotted, editable = false)
Tline = plot(TP_line != 0.0 ? TP_line : na , title="Take Profit", color=color.green, trackprice = true, show_last = 1)
Sline = plot(SL_line != 0.0 ? SL_line : na, title="Stop Loss", color=color.red, trackprice = true, show_last = 1)
Pline = plot(pos_price != 0.0 ? pos_price : na, title="Stop Loss", color=color.gray, trackprice = true, show_last = 1)
fill(Tline , Pline, color = color.new(color.green,transp = 90))
fill(Sline , Pline, color = color.new(color.red,transp = 90))
//_________________ Alert __________________//
//alertcondition(condition = , title = "Position Alerts", message = "Bagheri IG Ether\n Symbol: {{ticker}}\n Type: {{strategy.order.id}}")
//_________________ Label __________________//
inMyPrice = input(title="My Price", type=input.float, defval=0)
inLabelStyle = input(title="Label Style", options=["Upper Right", "Lower Right"], defval="Lower Right")
posColor = color.new(color.green, 25)
negColor = color.new(color.red, 25)
dftColor = color.new(color.aqua, 25)
posPnL = (strategy.position_size != 0) ? (close * 100 / strategy.position_avg_price - 100) : 0.0
posDir = (strategy.position_size > 0) ? "long" : strategy.position_size < 0 ? "short" : "flat"
posCol = (strategy.openprofit > 0) ? posColor : (strategy.openprofit < 0) ? negColor : dftColor
myPnL = (inMyPrice != 0) ? (close * 100 / inMyPrice - 100) : 0.0
var label lb = na
label.delete(lb)
lb := label.new(bar_index, close,
color=posCol,
style=inLabelStyle=="Lower Right"?label.style_label_upper_left:label.style_label_lower_left,
text=
"╔═══════╗" +"\n" +
"Pos: " +posDir +"\n" +
"Pos Price: "+tostring(strategy.position_avg_price) +"\n" +
"Pos PnL: " +tostring(posPnL, "0.00") + "%" +"\n" +
"Profit: " +tostring(strategy.openprofit, "0.00") + "$" +"\n" +
"TP: " +tostring(TP_line, "0.00") +"\n" +
"SL: " +tostring(SL_line, "0.00") +"\n" +
"╚═══════╝")