Quantitative Strategie für digitale Währungen basierend auf mehreren Indikatoren


Erstellungsdatum: 2023-09-15 11:58:36 zuletzt geändert: 2023-09-15 11:58:36
Kopie: 1 Klicks: 717
1
konzentrieren Sie sich auf
1617
Anhänger

In diesem Artikel wird eine mehrindikatorische Quantifizierungsstrategie für die Digitalwährungsentwicklung beschrieben. Die Strategie verwendet Indikatoren wie Durchschnittslinien, Oszillatoren und Kanäle zur Einstiegsurteilung und Risikokontrolle.

  1. Strategische Grundlagen

Die Strategie basiert auf folgenden Kategorien von Kennzahlen:

  1. Der ROC-Oszillator beurteilt die Überkauf-Überverkauf-Range des Preises.

  2. Die Dynamik der Unterstützung und Widerstandsbildung durch den Tangxian-Kanal;

  3. Der Bear-Force-Index beurteilt die unteren Merkmale.

  4. Die Energie-Index-Balance beurteilt den Trend zur Luftverschmutzung.

  5. Der Moving Average wird für Trendfilter verwendet.

Die endgültige Einstiegsentscheidung wird nur dann getroffen, wenn mehrere Indikatorsignale übereinstimmen. Gleichzeitig wird ein Stop-Loss-Stop-Punkt festgelegt, um das Risiko eines einzelnen Handels zu kontrollieren.

  1. Strategische Vorteile

Die größte Stärke dieser Strategie liegt darin, dass die Indikatoren einander ergänzen und Trends und Schlüsselpunkte in mehreren Dimensionen beurteilen.

Ein weiterer Vorteil ist, dass die Stop-Loss-Einstellungen direkt sinnvoll sind und zu einer positiven Geldverwaltung beitragen.

Schließlich ist der Parameterraum groß und kann für digitale Währungen optimiert werden.

  1. Potenzielle Risiken

Aber es gibt auch Probleme mit dieser Strategie:

Zunächst einmal erhöht die Kombination mehrerer Indikatoren die Schwierigkeit der Parameteroptimierung.

Zweitens kann es zu Unterschieden zwischen den Indikatoren kommen und es müssen klare Regeln für die Beurteilung festgelegt werden.

Schließlich müssen die Parameter für bestimmte Sorten optimiert werden.

Vier Inhalte, Zusammenfassung

Dieser Artikel beschreibt detailliert eine Multi-Meter-Quantifizierungsstrategie, die speziell für die Entwicklung von digitalen Währungen entwickelt wurde. Sie nutzt mehrere Indikatoren zur Risikokontrolle und Gewinnverwaltung. Die Strategie kann durch Parameteroptimierung zu stabilen Erträgen führen, muss aber auch auf die Schwierigkeiten der Kontrolloptimierung und die Verwendung von Indikatoren achten.

Strategiequellcode
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 00:00:00
period: 4m
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", overlay=true, margin_long=100, margin_short=100)

TP = input(3000, minval = 1 , title ="Take Profit")
SL = input(3443, minval = 1 , title ="Stop Loss")


//_________________ RoC Definition _________________


rocLength = input(title="ROC Length", type=input.integer, minval=1, defval=185)
smoothingLength = input(title="Smoothing Length", type=input.integer, minval=1, defval=49)
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(43, minval=1, title="Upper Channel")
length2 = input(43, minval=1, title="Lower Channel")
offset_bar = input(90,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=2, color=color.red)
u = plot(DC_UP_Band, style=plot.style_line, linewidth=2, color=color.aqua)

fill(l,u,color = color.new(color.aqua,transp = 90))

//_________________ Bears Power _________________


wmaBP_period = input(61,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 __________________//


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))



//_________________ 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   = (posPnL > 0) ? posColor : (posPnL < 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" +
      "My Price: " +tostring(inMyPrice) +"\n" +
      "My PnL: "   +tostring(myPnL, "0.00") + "%" +"\n" +
      "╚═══════╝")