Handelsstrategie für mehrere Arten gleitender Durchschnitte


Erstellungsdatum: 2023-09-19 21:27:31 zuletzt geändert: 2023-09-19 21:27:31
Kopie: 0 Klicks: 713
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie ist eine Trend-Tracking-Strategie, indem sie mehrere Arten von Moving Averages berechnet, um ein Cross-Polling und Cross-Pooling der doppelten Gleichgewichtslinien zu erreichen. Die Strategie führt auch einen dritten Moving Average als Trendbeurteilung ein, um das Risiko zu kontrollieren.

Strategieprinzip

  1. Es werden zwei Mittellinien berechnet: MA1 und MA2. Es gibt verschiedene Arten wie SMA, EMA und VWMA. Die Länge kann angepasst werden.

  2. Beurteilen Sie die Kreuzung von MA1 und MA2: Wenn Sie MA1 auf MA2 tragen, machen Sie mehr; wenn Sie MA1 unter MA2 tragen, ist es gleich.

  3. (Optional) Berechnung der dritten Durchschnittslinie MA3, die in der Regel einen längeren Zeitraum hat, z. B. 50 oberhalb von MA3 ist ein Mehrkopf, darunter ein Leerkopf nur dann zu handeln, wenn der Preis MA3 durchbricht

  4. Die oben genannten Regeln werden in Verbindung mit der Rückmesszeit verwendet, um die Erzeugung eines strategischen Handelssignals zu vervollständigen.

  5. Die Färbung der leeren Bereiche der Kreuzung bildet eine visuelle Hilfe.

Die Strategie kombiniert die Idee von Trend-Tracking und Cross-Lowing mit den Moving Averages, und die Einführung einer dritten Mittellinie zur Risikokontrolle, die sich flexibel an verschiedene Marktzyklen anpasst, indem sie die Parameter anpasst.

Analyse der Stärken

  1. Die Verwendung von Doppel-Einheitlichkeits-Kreuzung Trend-Richtung, kann Trends effektiv zu verfolgen.

  2. Unterstützt eine Kombination aus mehreren Typen von Standardlinien, die für verschiedene Zyklen optimiert werden können.

  3. Die Einführung der dritten Linie zur Risikokontrolle kann unnötige Verluste verringern.

  4. Die visualisierte Kreuzung verbessert das Erlebnis, den Handel zu betrachten.

  5. Die Parameter sind anpassbar und können für verschiedene Zyklen optimiert werden.

  6. Die Regeln sind einfach, klar und leicht zu verstehen und umzusetzen.

Risikoanalyse

  1. Die Doppel-Gleichgewichts-Strategie ist anfällig für Verluste bei Erschütterungen und Trendwende-Szenarien. Das Risiko kann durch Optimierung der Parameter verringert werden.

  2. Bei einer doppelten Mittellinie kann manchmal ein Fehlsignal oder eine Überreaktion erzeugt werden. Die Mittellinie kann entsprechend verlängert werden oder die Parameter optimiert werden.

  3. Der dritte Durchschnitt kann die Chance auf eine stärkere Dynamik verpassen. Der dritte Durchschnitt kann entsprechend verkürzt werden, um die verpasste Gewinnchance zu verringern.

  4. Es gibt keine Garantie, dass jeder Handel einen Gewinn bringt, und es ist notwendig, eine gute Stop-Loss-Verwaltung durchzuführen.

Optimierungsrichtung

  1. Versuche verschiedene Arten von Durchschnittslinien und Kombinationen verschiedener Periodenparameter, um das optimale Parameterpaar zu finden.

  2. Optimierung der Periodizität der dritten Mittellinie, Balance zwischen Risikokontrolle und Gewinnspielerei.

  3. Ein Stop-Loss-Strategie, um einzelne Verluste zu kontrollieren.

  4. Es kann in Erwägung gezogen werden, ein Machine-Learning-Algorithmus einzusetzen, um optimale Parameter zu finden, die Big-Data-Training nutzen.

  5. Signalfilterung und Validierung in Kombination mit anderen Indikatoren wie KD, MACD usw.

Zusammenfassen

Die bi-equilibrische Multi-Typen-Moving-Average-Cross-Strategie, die mehrere Funktionen wie Trend-Tracking, Risikokontrolle, Parameteroptimierung und visuelle Unterstützung integriert, ist eine sehr klassische und praktische Trendstrategie. Durch die ständige Prüfung und Optimierung von Parametern, die durch die richtige Einführung anderer Indikatoren oder maschinelles Lernen kombiniert werden, kann die Strategie immer besser an die Märkte angepasst werden und hat einen starken Kampfwert.

Strategiequellcode
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
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/
// © HAMIDBOX

//@version=4
strategy("Multi-X by HAMID-BOX", overlay=true)

maType(source , length, type)   =>
    type    == "SMA"            ? sma(source , length)  :
     type   == "EMA"            ? ema(source , length)  :
     type   == "RMA"            ? rma(source, length)   : 
     type   == "WMA"            ? wma(source, length)   :
     type   == "VWMA"           ? vwma(source, length)  :
     na
     
////////////////////////////////////////////////////////////////////////////////
colorup             = #11ff00
colordn             = #e91e63

/////////////////////////// MOVING AVERAGE №1 INPUTS ///////////////////////////
ma1_show            = input(title="MA №1", defval=true, type=input.bool, inline="ma1")
ma1type             = input(title="", defval="EMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma1")
ma1src              = input(title="", defval=close, type=input.source, inline="ma1")
ma1Len              = input(title="", defval=9, type=input.integer, inline="ma1")
ma1col              = input(colorup, "", type=input.color, inline="ma1")

ma1                 = maType(ma1src, ma1Len, ma1type)

ma1p = plot(ma1_show ? ma1 : na, linewidth=1, color=color.new(ma1col , 50))

/////////////////////////// MOVING AVERAGE №2 INPUTS ///////////////////////////
ma2_show            = input(title="MA №2", defval=true, type=input.bool, inline="ma2")
ma2type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma2")
ma2src              = input(title="", defval=close, type=input.source, inline="ma2")
ma2Len              = input(title="", defval=21, type=input.integer, inline="ma2")
ma2col              = input(colordn, "", type=input.color, inline="ma2")

ma2                 = maType(ma2src, ma2Len, ma2type)

ma2p = plot(ma2_show ? ma2 : na, linewidth=1, color=color.new(ma2col , 50))

/////////////////////////// MOVING AVERAGE №3 INPUTS ///////////////////////////

read                = input(title="For Safe Side = Read This >>>", defval=true, tooltip="If you want to play on the safe side, Check ON Moving Average № 3, MA №3 shows the major trend, its work as a Trend-Zone,\nRule: Do not open trades if the market is below MA № 3, WHY? because Trend is Bearish and it will make more Down, NOTE:: It is possible after adding MA № 3, it will give you a small profit. But the great advantage of that, it will reduce your loss and it will also increase your Profit Factor.\nAnd if you not have any issue with Risk then you can Leave Moving Average No 3")
ma3_show            = input(title="MA №3", defval=false, type=input.bool, inline="ma3")
ma3type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma3")
// ma3srcH          = input(title="", defval=high, type=input.source, inline="ma3")
// ma3srcL          = input(title="", defval=low, type=input.source, inline="ma3")
ma3Len              = input(title="", defval=50, type=input.integer, inline="ma3")
ma3col              = input(colordn, "", type=input.color, inline="ma3")

ma3H                = maType(high, ma3Len, ma3type)
ma3L                = maType(low, ma3Len, ma3type)

ma3p                = plot(ma3_show ? ma3H : na, linewidth=1, color=color.new(ma3col , 50))
ma3p2               = plot(ma3_show ? ma3L : na, linewidth=1, color=color.new(ma3col , 50))

Bigcross_zone_color = if ma3_show and close > ma3H
    color.new(colorup , 90)
else
    if ma3_show and close < ma3L
        color.new(colordn , 90)
fill(ma3p , ma3p2, color=Bigcross_zone_color, title="Cross Background Color")

BigCrossSignal      = close > ma3H
ZoneCrossover       = crossover(close , ma3H)
///////////////////////////// BACK TESTING INPUTS //////////////////////////////
startTime           = input(title="Start Time", type=input.time, defval= timestamp("01 Jan 2021"))
endTime             = input(title="End Time", type=input.time, defval= timestamp("01 Jan 2100"))
inDateRange         = true

//////////////////////////// PLOTING AND COOLORING /////////////////////////////
Cross               = input(true, "Cross Sign ON/OFF") 
maCrossOver         = crossover(ma1 , ma2)
maCrossUnder        = crossunder(ma1 , ma2)
cross_zone_color    = ma1 > ma2 ? color.new(colorup , 85) : color.new(colordn , 85)

plotshape(Cross ? maCrossOver : na, title="CrossUP Sign", style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(Cross ? maCrossUnder : na, title="CrossDN Sign", style=shape.xcross, location=location.abovebar, color=#e91e63, size=size.tiny)

fill(ma1p , ma2p, color=cross_zone_color, title="Cross Background Color")

///////////////////////////////// (CONDITIONS) /////////////////////////////////

if maCrossOver and inDateRange
    if ma3_show
        strategy.entry("BUY", strategy.long, when=BigCrossSignal)
    else    
        strategy.entry("BUY", strategy.long)

if  ma3_show
    strategy.entry("BUY", strategy.long, when=ZoneCrossover)

if maCrossUnder and inDateRange
    strategy.close("BUY", comment="Exit")
if (not inDateRange)
    strategy.close_all()