Die Strategie basiert auf Bill Williams’ Wurf-Indikator, aber verwendet eine andere Preis-Eingabe-Reihe Heiken Ashi-Reihe. Es handelt sich um eine Short-Line-Scalping-Strategie, die für den Zeitrahmen von 1 bis 5 Minuten gilt.
Die wichtigsten Handelsprinzipien dieser Strategie sind:
Die Verwendung von Heiken Ashi-Strecken anstelle von Standard-Strecken als Preis-Eingabe. Heiken Ashi kann Marktlärm filtern und Trends erkennen.
Die drei mittleren Linien des Bill Williams Wurf-Indikators: die unteren, die Zahn- und die Lippenlinien. Sie sind ähnlich wie die Moving Averages, um die Richtung des Trends zu bestimmen.
Wenn die drei Linien in der Reihenfolge: unterste Zähne am niedrigsten, Zähne am mittleren und Lippen am höchsten sind, bedeutet dies einen mehrköpfigen Trend; wenn die Reihenfolge: unterste Zähne am höchsten, Zähne am mittleren und Lippen am niedrigsten ist, bedeutet dies einen ungebundenen Trend.
Die Eintrittskarte wird anhand der Heiken Ashi-Eigenschaftsrichtung und der Anordnung der Fischerleine beurteilt. Wenn die Entität nach oben und die Fischerleine nach unten und die Fischerleine nach unten ausgerichtet ist, wird die Fischerleine frei gemacht.
Wenn sich die Reihenfolge der Wadenreihenfolge ändert, bedeutet dies, dass die Tendenz umgekehrt ist und der Schaden rechtzeitig gestoppt werden sollte.
Risikomanagement mit festen Stop-Loss-Punkten. Optionale Ziel-Profit-Punkte, Stop-Loss-Punkte und Tracking-Stops, um jeden einzelnen Gewinn zu kontrollieren.
Die Strategie kombiniert zwei Filter, die sowohl Trends mit Heiken Ashi erkennen als auch Umkehrungen mit Wurflinien beurteilen, um eine High-Probability Short-Line-Trading-Strategie zu bilden.
Diese Strategie hat folgende Vorteile:
Die Doppel-Indikator-Filter reduzieren die falschen Signale. Die Kombination aus Heiken Ashi und Wurmseile verbessert die Signalqualität.
Trends werden klar und intuitiv beurteilt. Die Reihenfolge der Waden ist eindeutig zuverlässig und erzeugt keine Unklarheiten.
Effiziente Short Line-Trading-Capture. Für Scalping-Trading mit einer Dauer von 1 bis 5 Minuten.
Einfache Parameter-Einstellung. Keine komplizierte Optimierung erforderlich, nur wenige Parameter können verwendet werden.
Strenge Risikomanagement. Die Verwendung von Stopp-Stop-Loss-Punkten steuert jeden Einzelschaden.
Genaue Eintritts- und Ausstiegsmechanismen.
Die Strategie ist einfach zu kopieren und umzusetzen.
Die wichtigsten Risiken dieser Strategie sind:
Rücknahme-Risiken. Die Whale-Line erzeugt häufige Signale, die die Häufigkeit der Transaktionen und die Kosten für die Gleitpunkte erhöhen.
Risiko von Erschütterungen. Die Waden werden häufig gekreuzt, was zu falschen Signalen führt.
Überoptimierungsrisiken. Fehlende Optimierung der Parameter kann zu einer Überpassung der Kurve führen.
Risiko eines Ausfalls der Indikatoren. In extremen Marktbedingungen können die Waden komplett ausfallen.
Das Risiko, dass der Stop-Loss durchbrochen wird. Ein schneller Durchbruch kann den Stop-Loss auslösen und zu Verlusten führen.
Risiken einer zu hohen Handelsfrequenz. Hochfrequente Handelsgeschäfte erhöhen die Handelskosten und führen zu unnötigen Verlusten.
Diese Risiken können durch die Steuerung der Erwartung, die Optimierung der Stop-Loss-Strategie und die Kontrolle der Handelsfrequenz gemindert werden.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Die Integration anderer Indikatoren zur Signalfilterung erhöht die Gewinnrate. Zum Beispiel die Kombination von starken Indikatoren wie dem RSI.
Das ATR-Dynamische Stop-Loss-System wurde eingerichtet, um das Risiko eines Einzelschadens zu kontrollieren.
Positionsverwaltungsmodul, um die Größe der einzelnen Positionen zu optimieren. Positionen können erhöht werden, wenn die Trends besser sind.
Technische Analysemethoden, wie z. B. Graphik, werden verwendet, um die Genauigkeit der Zulassung zu verbessern.
Optimierung der Parameter je nach Markttyp (z. B. Aktien, Devisen usw.), um sie besser an die Sorte anzupassen.
Die Erweiterung des Moduls “Machine Learning” ermöglicht die Optimierung der Anpassung der Parameter.
Berechnung der Expectancy-Gewinnrate und Optimierung der Stop-Loss-Ratio.
Mit kontinuierlichen Verbesserungen kann diese Strategie zu einer stabilen Short-Line-Trading-Strategie werden.
Die Strategie verwendet Heiken Ashi in Zusammenarbeit mit Bill Williams Whale-Indikator, um eine hohe Wahrscheinlichkeit Short-Line-Handelsstrategie zu bilden. Es hat die Vorteile von Indicator-Doppelfilterung, einfache Parameter-Einstellung und eine klare Ein- und Ausstiegsmechanik, um Trendänderungen effektiv zu erfassen, um Scalping zu handeln.
/*backtest
start: 2022-09-18 00:00:00
end: 2023-09-24 00:00:00
period: 4d
basePeriod: 1d
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/
// © 03.freeman
//Scalping strategy based on Bill Williams Alligator technique but applied to heikin ashi candles
//This strategy has to be applied to standard candles and low time frames (1min to 5min)
//@version=4
strategy("Bill Williams Alligator improved", shorttitle="Scalping alligator",overlay=true)
//source = input(close)
useHA = input (true,"Use heikin ashi candle?")
// ----------MA calculation - ChartArt-------------
smoothinput = input(1, minval=1, maxval=5, title='Moving Average Calculation: (1=SMA), (2=EMA), (3=WMA), (4=Linear), (5=VWMA)')
calc_ma(src,l) =>
smoothinput == 1 ? sma(src, l):smoothinput == 2 ? ema(src, l):smoothinput == 3 ? wma(src, l):smoothinput == 4 ? linreg(src, l,0):smoothinput == 5 ? vwma(src,l):na
//----------------------------------------------
heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_hl2 = security(heikinashi(syminfo.tickerid), timeframe.period, hl2)
direzione=heikinashi_close>heikinashi_open and heikinashi_close[1]>heikinashi_open[1]? 1 : heikinashi_close<heikinashi_open and heikinashi_close[1]<heikinashi_open[1]? -1 : 0
jawLength = input(13, minval=1, title="Jaw Length")
teethLength = input(8, minval=1, title="Teeth Length")
lipsLength = input(5, minval=1, title="Lips Length")
jawOffset = input(8, title="Jaw Offset")
teethOffset = input(5, title="Teeth Offset")
lipsOffset = input(3, title="Lips Offset")
jaw = calc_ma(heikinashi_hl2, jawLength)
teeth = calc_ma(heikinashi_hl2, teethLength)
lips = calc_ma(heikinashi_hl2, lipsLength)
plot(jaw, title="jaw",offset = jawOffset, color=#3BB3E4)
plot(teeth, title="teeth",offset = teethOffset, color=#FF006E)
plot(lips, title="lips",offset = lipsOffset, color=#36C711)
longCondition = direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips
shortCondition = direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
// Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips // functions can be used to wrap up and work out complex conditions
exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() ) // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() ) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )
// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
// === Backtesting Dates === thanks to Trost
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()