Dynamische Unterstützungs- und Widerstandsstrategie auf der Grundlage historischer Daten

Schriftsteller:ChaoZhang, Datum: 2023-11-28 17:00:13
Tags:

img

Übersicht

Diese Strategie berechnet dynamisch Unterstützungs- und Widerstandsniveaus basierend auf historischen Höchst-, Tief- und Schlusskurs und erzeugt entsprechend Handelssignale. Sie eignet sich für mittelfristige bis langfristige Positionen und kann Unterstützungs- und Widerstandsniveaus auf dem Markt effektiv zum Gewinn nutzen.

Strategie Logik

  1. Berechnen Sie den Durchschnitt der Höchst-, Tief- und Schlusskurse der vorangegangenen Perioden als Drehpunkt (PP).

  2. Berechnen Sie 3 Stützlinien: S1 = 2PP - höchster Preis; S2 = PP - (R1-S1); S3 = niedrigster Preis - 2(höchster Preis - PP).

  3. Berechnen Sie 3 Widerstandslinien: R1 = 2PP - niedrigster Preis; R2 = PP + (R1-S1); R3 = höchster Preis + 2(PP - niedrigster Preis).

  4. Nehmen Sie eine Long-Position ein, wenn der Preis durch die Widerstandslinien bricht, und eine Short-Position, wenn der Preis durch die Unterstützungslinien bricht.

Analyse der Vorteile

  1. Die auf historischen Daten basierenden dynamischen Unterstützungs- und Widerstandsniveaus können Änderungen der Marktstruktur rechtzeitig erfassen.

  2. Die mehrschichtigen Unterstützungs- und Widerstandseinstellungen ermöglichen eine bessere Optimierung des Risikomanagements.

  3. Einfache und intuitive Handelssignale und Stop-Loss-Mechanismen.

Risikoanalyse

  1. Die Referenzpreisniveaus aus historischen Daten können in Szenarien hoher Volatilität ungültig werden.

  2. Bei der Umstellung zwischen Long- und Short-Positionen sollten die Handelskosten berücksichtigt werden.

  3. Die Datenqualität muss gewährleistet werden, um Berechnungsfehler zu vermeiden.

Optimierungsrichtlinien

  1. Überlegen Sie, mehr historische Datenreferenzen wie den gleitenden 100-Tage-Durchschnitt usw. einzubeziehen.

  2. Optimierung der Positionsgröße, z. B. Anpassung der Positionsgröße anhand der Volatilität.

  3. Hinzufügen Sie Stop-Loss-Strategien wie Trailing-Stop-Loss oder risikobasierte Stop-Loss.

Zusammenfassung

Diese Strategie bietet mehrschichtige Unterstützungs- und Widerstandsreferenzpreisniveaus, die auf der Geschichte basieren. Sie hat eine einfache und unkomplizierte Logik, die für mittelfristige bis langfristige Positionen geeignet ist. In der Zwischenzeit sollten Risiken unter hoher Marktvolatilität und Handelskosten überwacht werden. Weitere Optimierungen können die Strategie in komplexen Umgebungen robust machen.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mehr