Exponentieller gleitender Durchschnitt Crossover und Upper Track Breakout Instant Intention Strategie


Erstellungsdatum: 2023-11-13 11:52:22 zuletzt geändert: 2023-11-13 11:52:22
Kopie: 1 Klicks: 667
1
konzentrieren Sie sich auf
1617
Anhänger

Exponentieller gleitender Durchschnitt Crossover und Upper Track Breakout Instant Intention Strategie

Überblick

Die Strategie nutzt die Überschneidung der schnellen und langsamen Linien des Indikators MACD, um in Kombination mit mehreren anderen Indikatoren ein umfassendes Urteilsvermögen zu erlangen, um in den Augenblicken ein Durchbruchsignal des Index-Moving Averages zu erfassen und eine Kauf- oder Verkaufsentscheidung zu treffen, die zu einer Short-Line-Handelsstrategie gehört.

Strategieprinzip

  1. Verwenden Sie die MACD-Schnell- und Schnell-Kreuzung als primäre Handelssignale. Eintritt bei einem Blick auf die Schnelllinie, wenn die Schnelllinie die Schnelllinie durchbricht, und Eintritt bei einem Blick auf die Schnelllinie, wenn die Schnelllinie die Schnelllinie durchbricht.

  2. In Kombination mit dem RSI-Indikator wird festgestellt, ob ein Überkauf oder -verkauf stattgefunden hat. Der RSI ist positiv, wenn er unter der mittleren Linie liegt, und negativ, wenn er über der mittleren Linie liegt.

  3. Der aktuelle Schlusskurs wird mit dem SMA-Gewinn in einem bestimmten Zeitraum verglichen, wobei der Schlusskurs bei einem niedrigeren Wert als der SMA bullish ist und der Schlusskurs bei einem höheren Wert als der SMA bearish.

  4. Berechnen Sie 0,5 Fibonacci-Punkte für den Höchsten Wert in einem bestimmten Zeitraum als Resistenzpunkt für den Kursbeobachter. Berechnen Sie 0,5 Fibonacci-Punkte für den niedrigsten Wert in einem bestimmten Zeitraum als Unterstützungspunkt für den Kursbeobachter.

  5. Eintritt bei Bewegung der Kurzlinie und Preis unterhalb der Unterstützung, Eintritt bei Bewegung der Kurzlinie und Preis über der Resistenz.

  6. Die Stop-Loss-Methode ist schrittweise. Nach dem Eintritt wird der Stop-Loss-Level zunächst als ein bestimmter Prozentsatz des Eröffnungspreises festgelegt, und wenn der Verlust einen bestimmten Prozentsatz erreicht, wird der Stop-Loss schrittweise mit einem kleinen Betrag verfolgt.

Strategische Vorteile

  1. Die Strategie nutzt das MACD-Kreuzsignal, ein klassisches und wirksames Signal für den Handel mit technischen Indikatoren.

  2. In Kombination mit mehreren Indikatoren wie RSI, SMA und anderen, kann die Bestätigung gefälschte Signale filtern und die Zuverlässigkeit der Signale verbessern.

  3. Die dynamische Berechnung der Resistenzstützpunkte für den Durchbruch von Geschäften, um die größeren Trends zu erfassen.

  4. Mit einem schrittweisen Stop-Loss-Methode kann ein Großteil der Gewinne gesperrt und das Risiko kontrolliert werden.

  5. Strategie-Trading-Logik ist klar und einfach, leicht zu verstehen und zu beherrschen, geeignet für Anfänger.

Strategisches Risiko

  1. Der MACD-Indikator ist nachlässig und könnte die besten Kauf- und Verkaufspunkte der Branche verpassen.

  2. Mehrfache Beurteilungen erhöhen die Komplexität der Strategie und sind anfällig für Konflikte.

  3. Die dynamische Berechnung unterstützt die Gefahr eines Fehlbruchs der Widerstandsstelle.

  4. Der mobile Stop-Loss kann in einem Großhandelsszenario vorzeitig eingestellt werden und kann nicht dauerhaft gewinnbringend sein.

  5. Strategieparameter müssen wiederholt getestet und optimiert werden. Unpassende Parameter beeinträchtigen die Strategiewirkung.

Richtung der Strategieoptimierung

  1. Verschiedene Parameterkombinationen können getestet werden, um die MACD-Zyklusparameter zu optimieren.

  2. Weitere Kennzahlen wie Brinline, KDJ und andere können für eine mehrdimensionale Analyse eingeführt werden.

  3. Es gibt mehrere Faktoren, die zur Begründung der Unterstützung des Widerstandes beitragen können.

  4. Es können auch fortschrittlichere Bewegungsstoppmechanismen untersucht werden, wie z. B. Zeitstopp, Schwingungsstopp usw.

  5. Automatische Parameter-Optimierungsmodule können hinzugefügt werden, um die automatische Optimierung von Parametern zu realisieren.

Zusammenfassen

Die Strategie verwendet mehrere Indikatoren wie MACD, RSI, SMA und andere, um die Durchbruchsignale des Index-Moving Averages in den Augenblicken zu erfassen. Sie gehört zu den typischen Kurzlinien-Durchbruch-Handelsstrategien. Die Strategie-Signal erzeugt eine gewisse Verzögerung, kann jedoch durch Parameteroptimierung die Genauigkeit verbessern.

Strategiequellcode
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23: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/
// © onurenginogutcu

//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 ,  process_orders_on_close=true )



sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL") 
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution ,  defval="60")

adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")

fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")

trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01

lsl = input(title="Max Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
     
ssl = input(title="Max Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
     

symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)

atr = atr (14) 

/////////adx code

dirmov(len) =>
	up = change(symHigh)
	down = -change(symLow)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )


////////adx code over



i = ema (symClose , MACDFast) - ema (symClose , MACDSlow) 
r = ema (i , MACDSmooth)

sapust = highest (i , MACDLookback) * 0.729 
sapalt = lowest (i , MACDLookback) * 0.729  


simRSI = rsi (symClose , 50 ) 




fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)





cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0


longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom 
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and  symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop 


//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
    cond1 := 35
else if (crossunder(i, r) and i > sapust)
    cond1 := -35
else
    cond1 := 0
    
if (symClose < sma (symClose , smaLookback))
    cond2 := 30
else if (symClose > sma (symClose , smaLookback))
    cond2 := -30
else
    cond2 := 0
    
if (simRSI < sma (simRSI , 50))
    cond3 := 25
else if (simRSI > sma (simRSI , 50))
    cond3 := -25
else
    cond3 := 0
    
if (symClose < fibbottom)
    cond4 := 10
else if (symClose > fibbottom)
    cond4 := -10
else
    cond4 := 0
    
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
    
    
if (strategy.position_size == 0)    
    trailingShortPrice := 0.0
    trailingLongPrice := 0.0  
    startTrail := 0
/////////////////////////////////strategy exit

if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
    startTrail := 1

if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
    startTrail := -1
    



trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
    stopMeasure = close * (1 - trailingStopLong)
    max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
    strategy.position_avg_price * (1 - lsl)


trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
    stopMeasure = close * (1 + trailingStopShort)
    min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
    strategy.position_avg_price * (1 + ssl)




if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
 

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)

plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability