
Die Strategie kombiniert die Konzepte der Crow Trading Methode mit der Phasenanalyse von Niko Bakkers und nutzt drei unterschiedliche Perioden von Moving Averages, um die Richtung eines Trends zu bestimmen und Trends zu verfolgen. Sie macht mehr, wenn ein schneller Moving Average über einen schnelleren Moving Average geht und alle drei Moving Averages in der gleichen Auf- oder Abwärtstrend sind. Sie macht null, wenn ein schneller Moving Average unter einen schnelleren Moving Average geht und alle drei Moving Averages in der gleichen Auf- oder Abwärtstrend sind.
Berechnen Sie drei bewegliche Durchschnitte für verschiedene Perioden: ein schneller beweglicher Durchschnitt mit einer Periode von 8 Tagen, ein mittlerer beweglicher Durchschnitt mit einer Periode von 21 Tagen und ein langsamer beweglicher Durchschnitt mit einer Periode von 55 Tagen.
Eintrittsvoraussetzungen: Wenn ein schneller Moving Average den mittleren Moving Average durchläuft und alle drei Moving Averages im Aufwärtstrend sind, machen Sie mehr; wenn ein schneller Moving Average den mittleren Moving Average unter dem schnellen Moving Average durchläuft und alle drei Moving Averages im Abwärtstrend sind, machen Sie null.
Ausgangskonditionen: Der schnelle gleitende Durchschnitt wird rückwärts durch den mittleren gleitenden Durchschnitt platziert.
Positionskontrolle: Ein fester Positionsplatz, bei dem jeder Spieler einen Platz eröffnet. Es ist auch möglich, die Positionen dynamisch an die ATR anzupassen.
Die Verwendung von drei Moving Averages hilft bei der Bestimmung der Richtung des Trends und vermeidet False Breaks.
Es ist ein Trend-Tracker mit großem Gewinnpotenzial.
Die Verwendung von Moving Averages erlaubt einen stabilen Gewinn und relativ geringe Rücknahmen.
Eine kontrollierbare Stop-Loss-Strategie, um die Wahrscheinlichkeit von erheblichen Verlusten zu verringern.
Es ist leicht, mehrere kleine Verluste zu erzeugen und die Profitabilität zu reduzieren.
Der bewegliche Durchschnitt liegt zurück und könnte den Trendwendepunkt verpassen.
Fixed-Positions sind nicht in der Lage, Risiken effektiv zu kontrollieren und können bei starken Marktschwankungen ausbrechen.
Wenn die Parameter nicht richtig optimiert werden, kann es zu häufigen Off-Positions führen, was zu erhöhten Handelskosten und Verlusten bei den Schlupfpunkten führt.
Optimierung der Periodizität von Moving Averages, um sie besser an die Merkmale der Handelsvarianten anzupassen.
Die Anwendung der Volatilitätsindikator ATR dynamische Anpassung der Positionen.
Eintritt in die Stop-Loss-Strategie
In Kombination mit dem Handelsvolumen-Indikator wird die Zuverlässigkeit des Trends beurteilt.
Diese Strategie integriert die Traditionelle Technische Analyse-Indikatoren mit der Krähen-Handelsmethode, die Verwendung von drei Moving Averages, um die Trends zu verfolgen, und bei der Optimierung der Parameter kann eine bessere Gewinnwirkung erzielt werden. Die Strategie birgt jedoch auch gewisse Risiken und erfordert Maßnahmen wie Stop-Loss- und Positionsmanagement, um die Risiken zu kontrollieren, um eine quantitative Handelsstrategie zu erhalten, die langfristig stabile Gewinne bringt.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JoshuaMcGowan
//@version=4
// 1. Define strategy settings
strategy(title="Triple Moving Average", overlay=true,
pyramiding=0, initial_capital=1000,
commission_type=strategy.commission.cash_per_order,
commission_value=4, slippage=2)
fastMALen = input(title="Fast MA Length", type=input.integer, defval=8)
medMALen = input(title="Medium MA Length", type=input.integer, defval=21)
slowMALen = input(title="Slow MA Length", type=input.integer, defval=55)
//endMonth = input(title="End Month Backtest", type=input.integer, defval=11)
//endYear = input(title="End Year Backtest", type=input.integer, defval=2019)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 12, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
usePosSize = input(title="Use Position Sizing?", type=input.bool, defval=true)
riskPerc = input(title="Risk %", type=input.float, defval=0.5, step=0.25)
// 2. Calculate strategy values
fastMA = sma(close, fastMALen)
medMA = sma(close, medMALen)
slowMA = sma(close, slowMALen)
//Position Sizing
riskEquity = (riskPerc / 100) * strategy.equity
atrCurrency = (atr(20) * syminfo.pointvalue)
posSize = usePosSize ? floor(riskEquity / atrCurrency) : 1
//Backtest Window
//tradeWindow = (time <= timestamp(endYear, endMonth, 1, 0, 0))
// 3. Determine long trading conditions
enterLong = crossover(fastMA, medMA) and
(fastMA > slowMA) and (medMA > slowMA) and
window()
exitLong = crossunder(fastMA, medMA)
// 4. Code short trading conditions
enterShort = crossunder(fastMA, medMA) and
(fastMA < slowMA) and (medMA < slowMA) and
window()
exitShort = crossover(fastMA, medMA)
// 5. Output strategy data
plot(series=fastMA, color=color.green, title="Fast MA")
plot(series=medMA, color=color.purple, title="Medium MA")
plot(series=slowMA, color=color.red, title="Slow MA",
linewidth=2)
bgColour =
enterLong and (strategy.position_size < 1) ? color.green :
enterShort and (strategy.position_size > -1) ? color.red :
exitLong and (strategy.position_size > 0) ? color.lime :
exitShort and (strategy.position_size < 0) ? color.orange :
na
bgcolor(color=bgColour, transp=85)
// 6. Submit entry orders
if (enterLong)
strategy.entry(id="EL", long=true, qty=1)
if (enterShort)
strategy.entry(id="ES", long=false, qty=1)
// 7. Submit exit orders
strategy.close_all(when=exitLong and
(strategy.position_size > 0))
strategy.close_all(when=exitShort and
(strategy.position_size < 0))
strategy.close_all(when=not window())
//END