La stratégie est une stratégie de suivi de tendance qui permet de faire des gains et des pertes croisés sur les lignes de double équivalence en calculant plusieurs types de moyennes mobiles. La stratégie introduit également une troisième moyenne mobile comme jugement de tendance pour contrôler les risques.
Les deux lignes moyennes sont calculées: MA1 et MA2, et peuvent être de plusieurs types: SMA, EMA, VWMA, etc. La longueur peut également être personnalisée.
Pour juger de l’intersection entre MA1 et MA2: lorsque MA1 est porté sur MA2, faire plus; lorsque MA1 est porté sur MA2, faire un pari nul.
(optionnel) Calculer la troisième ligne moyenne MA3, la longueur prend généralement un cycle plus long, comme 50 ≠ MA3 est en tête au-dessus, en dessous est vide ≠ la position est ouverte seulement lorsque le prix dépasse MA3 ≠
Les règles ci-dessus sont combinées avec des périodes de rétro-analyse pour générer des signaux de trading stratégiques.
Les zones blanches sont coloriées sur la croix pour former un support visuel.
Cette stratégie intègre le suivi de tendances des moyennes mobiles et l’idée d’un plus grand nombre de prises de position croisées, tout en introduisant une troisième courbe pour contrôler le risque, permettant une adaptation flexible aux différents cycles du marché grâce à un ajustement des paramètres.
L’utilisation d’un croisement biunivoque pour déterminer la direction de la tendance permet de suivre efficacement la tendance.
Prise en charge d’une combinaison de plusieurs types d’homogénéité, optimisée pour différents cycles de marché.
L’introduction de la troisième ligne uniforme pour le contrôle des risques peut réduire les pertes inutiles.
La coloration croisée visualisée améliore l’expérience de visualisation des transactions.
Les paramètres peuvent être ajustés et optimisés pour différents cycles.
Les règles sont simples, claires et faciles à comprendre et à appliquer.
Les stratégies de double équilibre sont sujettes à des pertes en cas de choc et de retournement de tendance. Le risque peut être réduit en optimisant les paramètres.
Les lignes bihomogènes produisent parfois des signaux erronés ou des réactions de dépassement. Les périodes de lignes bihomogènes ou les paramètres d’optimisation peuvent être prolongés de manière appropriée.
La troisième ligne moyenne risque de manquer des occasions d’une plus forte dynamique. Il est possible de tester le raccourcissement approprié de la troisième ligne moyenne afin de réduire les occasions de profit manquées.
Il n’y a pas de garantie que chaque transaction soit rentable, il faut faire une bonne gestion des pertes.
Test des combinaisons de différents types de moyennes et de différents paramètres périodiques pour trouver la meilleure paire de paramètres.
Optimiser les paramètres cycliques de la troisième ligne moyenne, équilibrer le contrôle des risques et la capture des bénéfices.
Adopter une stratégie de stop-loss pour contrôler les pertes individuelles.
On peut envisager d’inclure des algorithmes d’apprentissage automatique pour trouver les paramètres optimaux à l’aide de la formation de données volumineuses.
Le filtrage et la vérification des signaux sont effectués en combinaison avec d’autres indicateurs tels que KD, MACD, etc.
Cette stratégie multifonctionnelle de croisement de moyenne mobile à double équilibre, qui intègre plusieurs fonctions telles que le suivi des tendances, le contrôle des risques, l’optimisation des paramètres et l’assistance visuelle, est une stratégie de tendance très classique et pratique.
/*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()