Die Strategie basiert auf der Idee, dass Stop-Loss- und Stop-Stop-Punkte oftmals auf ganzwertigen oder kritischen Preisniveaus gesetzt werden, die oft als Unterstützungs- und Widerstandspunkte dienen. Die Strategie identifiziert diese kritischen Preisniveaus und führt Kauf- oder Verkaufshandlungen durch, wenn der Preis nahe ist.
Die Strategie beinhaltet vor allem folgende Regeln:
Ein Kauf wird getätigt, wenn der Schlusskurs über dem Schlüsselpreis liegt und dieser in den letzten 10 K-Linien nicht berührt wurde.
Anschließend wird das Climb Tracking verwendet, um die Bewegung zu verfolgen, bei der der Preis den kritischen Preis überschreitet. Der Climb ist 20 Punkte lang.
Ein Verkauf ist das Gegenteil von einem Kauf, wenn der Schlusskurs unter dem Schlüsselpreis liegt und diesen nicht in den letzten 10 K-Linien berührt hat.
Die Methoden zur Identifizierung von Schlüsselpriceniveaus sind:
Die Strategie basiert auf der Theorie der Preispsychologie, dass die Integerpreise oder die Schlüsselstufen oft wichtige Positionen sind, um die sich mehrere Parteien bewerben, und somit als Handelssignale wirken. Die Kletterverfolgung kann jedoch Trends nach einem Preisbruch verfolgen.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch folgende Risiken:
Entsprechende Lösungen:
Diese Strategie kann optimiert werden durch:
Hinzufügen von weiteren Kriterien zur Beurteilung der Wichtigkeit von Schlüsselpreispunkten, um das Risiko von Falschbrüchen zu vermeiden.
Optimierungsparameter, insbesondere Parameter wie Schrittlänge in Schlüsselpreisbereichen, K-Linien-Perioden usw. werden besser an die Eigenschaften der verschiedenen Sorten angepasst.
Optimierung von Tracking-Stoppmechanismen, z. B. durch die Verwendung von dynamischen Tracking-Stopps anstelle von festen Kletterstopps.
Hinzufügen von Machine-Learning-Algorithmen, die historische Daten nutzen, um die Stärke und Schwäche von Schlüsselpreisbereichen zu ermitteln, um die Signalqualität zu verbessern.
Strategie, die sich auf mehrere Zeiträume erstreckt, wobei Trends in höheren Zeiträumen beurteilt und in niedrigeren Zeiträumen verfolgt werden.
Die Strategie basiert auf einfachen und intuitiven Ideen zu Preis-Keypoints und nutzt allgemein verbreitete Handelsgewohnheiten, um Handelssignale zu erzeugen. Strategiechancen sind reichlich vorhanden, müssen jedoch weiter optimiert werden, um falsche Durchbrüche zu behandeln. Mittel wie Parameteroptimierung und Maschinelles Lernen können die Strategie-Stabilität verbessern.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions
strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)
//Round Levels credit to RKchartest
roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0)
rDelimeter = 1/syminfo.mintick
intRoundLevel = close[1] * rDelimeter
intRemainder = intRoundLevel % roundLevel50
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)
//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)
// end
//Start of strategy
distToFullNumber=(close-roundLevel) //can be positive or negative number
distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price
TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order
longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)
if (longCondition)
strategy.entry("LongMagnet", strategy.long)
strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)
shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)
if (shortCondition)
strategy.entry("ShortMagnet", strategy.short)
strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)