Langfristige Alligator-Trendfolge-Handelsstrategie

SMMA SMA
Erstellungsdatum: 2024-05-17 15:40:13 zuletzt geändert: 2024-05-17 15:40:13
Kopie: 4 Klicks: 718
1
konzentrieren Sie sich auf
1617
Anhänger

Langfristige Alligator-Trendfolge-Handelsstrategie

Überblick

Die Alligator-Strategie ist eine quantitative Handelsstrategie, die auf dem Williams Alligator-Indikator basiert. Die Strategie nutzt eine Kombination von Moving Averages aus verschiedenen Perioden, um die wichtigsten Trends auf dem Markt zu erfassen. Sie ist für den Handel mit mittleren und langen Trends geeignet.

Strategieprinzip

Die Alligator-Indikator wird mit drei verschiedenen Perioden von Moving Averages erstellt:

  1. Jaw-Linie: 13 Zyklen SMMA, Horizont in die Zukunft 8 K-Linien
  2. Teeth-Strecke: 8 SMMA-Zyklen, 5 K-Strecken in die Zukunft
  3. Lips-Linie: 5-Zyklus-SMMA, 3 K-Linie in die Zukunft

Die Strategie wird ausgeführt, wenn die Alligator-Indikator öffnet sich nach oben, die Jaw-Linie am untersten, die Teeth-Linie in der Mitte, die Lips-Linie am obersten, und der Preis ist über dem Alligator-Indikator. Dies zeigt, dass eine Aufwärtstrendwelle bestätigt wurde, und wir möchten diese Position bis zum Ende des Trends halten.

Wenn der Preis unter die Jaw-Linie fällt, wird die Strategie die Überschüsse ausgleichen. Dies garantiert, dass wir keine Positionen in einem Bärenmarkt halten.

Strategische Vorteile

  1. Die Strategie basiert auf dem Alligator-Indikator und kann die wichtigsten Trends des Marktes effektiv erfassen. Sie ist ideal für den Handel mit mittleren und langen Trends.
  2. Niedrige Handelsfrequenz: Die Strategie eröffnet Positionen nur bei der Bestätigung eines Trends und schließt Positionen am Ende eines Trends. Die Handelsfrequenz ist relativ niedrig und kann die Handelskosten effektiv senken.
  3. Umfangreich: Die Strategie kann auf verschiedene Finanzmärkte wie Forex, Kryptowährungen usw. angewendet werden und ist sehr anpassungsfähig und flexibel.
  4. Keine Optimierung der Parameter: Die Strategie folgt vollständig den Markttrends, keine Optimierung der Parameter, einfach und benutzerfreundlich.

Strategisches Risiko

  1. Potenzielles Slippage-Risiko: In Fällen von starken Marktschwankungen oder mangelnder Liquidität können Handelsbestellungen nicht zu den erwarteten Preisen abgewickelt werden, was zu einem Slippage-Risiko führt.
  2. Fehlen eines festen Risikomanagements: Die Strategie hat keine festen Risikomanagement-Einstellungen und muss die Positionsgröße für jeden Handel an die eigenen Risikopräferenzen anpassen.
  3. Möglicherweise verpasste kurzfristige Handelschancen: Da die Strategie darauf ausgerichtet ist, mittelfristige Trends zu erfassen, können einige kurzfristige Handelschancen verpasst werden.

Richtung der Strategieoptimierung

  1. Risikomanagement-Module hinzufügen: Einige Risikomanagement-Maßnahmen, wie Stop Losses, dynamische Positionsanpassungen usw., können in Betracht gezogen werden, um das Risiko besser zu kontrollieren.
  2. Kombination mit anderen technischen Indikatoren: Versuchen Sie, den Alligator-Indikator mit anderen technischen Indikatoren wie RSI, MACD usw. zu kombinieren, um die Genauigkeit und Zuverlässigkeit der Strategie zu verbessern.
  3. Optimierung der Parameter-Einstellungen: Obwohl die Strategie keine Optimierung der Parameter erfordert, können Sie versuchen, die Optimierung der Parameter-Kombination für verschiedene Zeiträume und Handelsmarken zu testen.

Zusammenfassen

Die Alligator-Strategie für langfristige Trendverfolgung ist eine einfache, benutzerfreundliche und vielseitige quantitative Handelsstrategie. Durch die Nutzung des Alligator-Indikators, um die wichtigsten Markttrends zu erfassen, kann die Strategie in der mittleren und langen Zeit einen stabilen Ertrag erzielen. Obwohl die Strategie einige potenzielle Risiken birgt, kann die Leistung und Stabilität der Strategie durch die Aufnahme eines Risikomanagementmoduls, die Kombination mit anderen technischen Indikatoren und Optimierung der Parameter-Einstellungen weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//_______ <licence>
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Skyrex

//_______ <version>
//@version=5

//_______ <declaration_statement>
strategy(title = "Alligator Long Term Trend Following Strategy [Skyrex.io]", 
         shorttitle = "Alligator Strategy [Skyrex.io]", 
         overlay = true, 
         format = format.inherit, 
         pyramiding = 1, 
         calc_on_order_fills = false, 
         calc_on_every_tick = true, 
         default_qty_type = strategy.percent_of_equity, 
         default_qty_value = 100, 
         initial_capital = 10000, 
         currency = currency.NONE,  
         commission_type = strategy.commission.percent, 
         commission_value = 0.1,
         slippage = 5)


//_______ <constant_declarations>
var color skyrexGreen = color.new(#2ECD99, 0)
var color skyrexGray = color.new(#F2F2F2, 0)
var color skyrexWhite = color.new(#FFFFFF, 0)

var color barcolor = na


//_______ <inputs>
// Trading bot settings
sourceUuid = input.string(title = "sourceUuid:", defval = "yourBotSourceUuid", group = "Trading Bot Settings")
secretToken = input.string(title = "secretToken:", defval = "yourBotSecretToken", group = "Trading Bot Settings")

// Trading Period Settings
lookBackPeriodStart = input(title = "Trade Start Date/Time", defval = timestamp('2023-01-01T00:00:00'), group = "Trading Period Settings")
lookBackPeriodStop = input(title = "Trade Stop Date/Time", defval = timestamp('2025-01-01T00:00:00'), group = "Trading Period Settings")

//_______ <function_declarations>
//@function       Used to calculate Simple moving average for Alligator
//@param src      Sourse for smma Calculations
//@param length   Number of bars to calculate smma
//@returns        The calculated smma value 
smma(src, length) =>
    smma =  0.0
    smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length
    smma


//@function       Used to decide if current candle above the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_LowAboveAlligator(jaw, teeth, lips) =>
    result = low > jaw and low > lips and low > teeth 
    result


//@function       Used to decide if current candle below the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_HighBelowAlligator(jaw, teeth, lips) =>
    result = high < jaw and high < lips and high < teeth 
    result


//@function       Used to decide if Alligator's mouth is open
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value 
is_AlligatorHungry(jaw, teeth, lips) =>
    result = lips > jaw[5] and lips > teeth[2] and teeth > jaw[3]
    result


//_______ <calculations>
jaw = smma(hl2, 13)[8]
teeth = smma(hl2, 8)[5]
lips = smma(hl2, 5)[3]


jaw_o = smma(hl2, 13)
teeth_o = smma(hl2, 8)
lips_o = smma(hl2, 5)


//_______ <strategy_calls>
longCondition = is_LowAboveAlligator(jaw, teeth, lips) and is_AlligatorHungry(jaw_o, teeth_o, lips_o) 
if (longCondition)
    strategy.entry(id = "entry1", direction = strategy.long, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')

if close < jaw
    strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')



//_______ <visuals>
if strategy.opentrades > 0
    barcolor := skyrexGreen
else 
    barcolor := skyrexGray

barcolor(barcolor)
//_______ <alerts>