Unterstützungs- und Widerstands-Swing-Trading-Strategie


Erstellungsdatum: 2024-01-25 15:53:06 zuletzt geändert: 2024-01-25 15:53:06
Kopie: 0 Klicks: 504
1
konzentrieren Sie sich auf
1617
Anhänger

Unterstützungs- und Widerstands-Swing-Trading-Strategie

Überblick

Die Strategie ermöglicht eine präzise Kontrolle der Handelslogik und einen präzisen Stop-Loss-Stopp durch die Kombination von RSI und Random-Indicator-Kreuzung und eine Strategie zur Optimierung der Nahtlosigkeit. Durch die Einführung von Signal-Optimierung können Trends besser beherrscht werden und eine vernünftige Verwaltung der Gelder ermöglicht wird.

Strategieprinzip

  1. Der RSI-Indikator beurteilt überkaufte und überverkaufte Bereiche und erzeugt ein Handelssignal mit einem Gold- und Goldfork-Death-Fork, das sich aus den Werten des zufälligen Indikators K und D zusammensetzt.
  2. Einführung von K-Linien-Sortierung, um Trendsignale zu beurteilen und falsche Transaktionen zu vermeiden.
  3. Die SMA-Durchschnittslinie hilft bei der Bestimmung der Trendrichtung. Sie ist ein bullishes Signal, wenn die kurzfristige Durchschnittslinie die langfristige Durchschnittslinie von unten nach oben durchbricht.
  4. Die Plain-Position-Sliding-Punkt-Strategie, bei der ein Stop-Loss-Stopp-Preis basierend auf dem höchsten und niedrigsten Preisfluktuationsbereich festgelegt wird.

Analyse der Stärken

  1. RSI-Parameter optimiert, um überkaufte und überverkaufte Bereiche zu bestimmen und falsche Trades zu vermeiden
  2. Optimierung der STO-Parameter, Anpassung der Gleitwertparameter, um Geräusche zu beseitigen und die Signalqualität zu verbessern
  3. Einführung der Heikin-Ashi-Technik zur Identifizierung von Richtungsänderungen von K-Linien-Einheiten, um die Genauigkeit von Handelssignalen zu gewährleisten
  4. Die SMA-Gewinnlinie hilft bei der Bestimmung der Richtung des großen Trends und verhindert einen Abwärtstrend
  5. In Kombination mit einer Stop-Loss-Slip-Point-Strategie maximieren Sie den Gewinn pro Handel

Risikoanalyse

  1. Wenn die Börse weiter sinkt, ist das Risiko größer.
  2. Es könnte zu hohe Transaktionsfrequenzen geben, was zu höheren Transaktionskosten und Slip-Point-Kosten führen könnte.
  3. Der RSI ist anfällig für falsche Signale und sollte in Kombination mit anderen Indikatoren gefiltert werden

Strategieoptimierung

  1. Anpassung der RSI-Parameter zur Optimierung der Überkauf- und Überverkaufsschätzungen
  2. Anpassung der STO-Indikatorparameter, -Gleichheit und -Periode zur Verbesserung der Signalqualität
  3. Anpassung der Moving Average-Periode zur Optimierung der Trendbeurteilung
  4. Einführung von mehr technischen Kennzahlen zur Verbesserung der Signalgenauigkeit
  5. Optimierung der Stop-Loss-Stopp-Ratio und Verringerung des Einmal-Handelsrisikos

Zusammenfassen

Die Strategie integriert die Vorzüge mehrerer Mainstream-Technologie-Indikatoren und erreicht eine ausgewogene Balance zwischen Handelssignalqualität und Stop-Loss-Stopp durch Parameteroptimierung und Regelführung. Die Strategie hat eine gewisse Allgemeinheit und stabile Profitabilität. Durch kontinuierliche Optimierung können die Gewinnraten und die Profitabilität weiter erhöht werden.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study(title="@sentenzal strategy", shorttitle="@sentenzal strategy", overlay=true)
strategy(title="@sentenzal strategy", shorttitle="@sentenzal strategy", overlay=true  )
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
overbought = input(80, minval=1)
oversold = input(20, minval=1)
smaLengh = input(100, minval=1)
smaLengh2 = input(50, minval=1)
smaLengh3 = input(20, minval=1)

src = input(close, title="RSI Source")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() =>
    time >= testPeriodStart ? true : false

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
crossBuy = crossover(k, d) and k < oversold
crossSell = crossunder(k, d) and k > overbought

dcLower = lowest(low, 10)
dcUpper = highest(high, 10)


heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_low = security(heikinashi(syminfo.tickerid), timeframe.period, low)
heikinashi_high = security(heikinashi(syminfo.tickerid), timeframe.period, high)
heikinashiPositive = heikinashi_close >= heikinashi_open

heikinashiBuy = heikinashiPositive == true and heikinashiPositive[1] == false  and heikinashiPositive[2] == false
heikinashiSell = heikinashiPositive == false and heikinashiPositive[1] == true and heikinashiPositive[2] == true

//plotshape(heikinashiBuy, style=shape.arrowup, color=green, location=location.belowbar, size=size.tiny)
//plotshape(heikinashiSell, style=shape.arrowdown, color=red, location=location.abovebar, size=size.tiny)

buy = (crossBuy == true or crossBuy[1] == true or crossBuy[2] == true) and (heikinashiBuy == true or heikinashiBuy[1] == true or heikinashiBuy[2] == true)
sell = (crossSell == true or crossSell[1] == true or crossSell[2] == true) and (heikinashiSell == true or heikinashiSell[1] == true or heikinashiSell[2] == true)

mult = timeframe.period == '15' ? 4 : 1
mult2 = timeframe.period == '240' ? 0.25 : mult

movingAverage = sma(close, round(smaLengh))
movingAverage2 = sma(close, round(smaLengh2))
movingAverage3 = sma(close, round(smaLengh3))

uptrend = movingAverage < movingAverage2 and movingAverage2 < movingAverage3 and close > movingAverage
downtrend = movingAverage > movingAverage2 and movingAverage2 > movingAverage3 and close < movingAverage

signalBuy = (buy[1] == false and buy[2] == false and buy == true) and uptrend
signalSell = (sell[1] == false and sell[2] == false and sell == true) and downtrend

takeProfitSell = (buy[1] == false and buy[2] == false and buy == true) and uptrend == false
takeProfitBuy = (sell[1] == false and sell[2] == false and sell == true)  and uptrend

plotshape(signalBuy, style=shape.triangleup, color=green, location=location.belowbar, size=size.tiny)
plotshape(signalSell, style=shape.triangledown, color=red, location=location.abovebar, size=size.tiny)



plot(movingAverage, linewidth=3, color=orange, transp=0)
plot(movingAverage2, linewidth=2, color=purple, transp=0)
plot(movingAverage3, linewidth=1, color=navy, transp=0)

alertcondition(signalBuy, title='Signal Buy', message='Signal Buy')
alertcondition(signalSell, title='Signal Sell', message='Signal Sell')


strategy.close("L", when=dcLower[1] > low)
strategy.close("S", when=dcUpper[1] < high)

strategy.entry("L", strategy.long, 1, when = signalBuy and testPeriod() and uptrend) 
strategy.entry("S", strategy.short, 1, when = signalSell and testPeriod() and uptrend ==false) 

//strategy.exit("Exit Long", from_entry = "L", loss = 25000000, profit=25000000)
//strategy.exit("Exit Short", from_entry = "S", loss = 25000000, profit=25000000)