Stratégie de moyenne mobile lente


Date de création: 2023-12-07 15:21:45 Dernière modification: 2023-12-07 15:21:45
Copier: 0 Nombre de clics: 636
1
Suivre
1619
Abonnés

Stratégie de moyenne mobile lente

Aperçu

La stratégie utilise le canal de Dongguan à 24 cycles combiné avec la moyenne à 200 cycles comme signal de négociation principal. Les points d’entrée choisissent de faire court en bas des fluctuations rouge-vert et en haut des fluctuations.

Principe de stratégie

La stratégie est basée sur les points suivants:

  1. La construction d’un canal de Dongguan est faite en utilisant les hauts et les bas de 24 cycles, indiquant que des baisses plus importantes peuvent survenir lorsque le prix franchit ce canal.

  2. La moyenne cyclique de 200 est utilisée comme condition de filtrage polyvalente, si elle est franchie et que les prix sont de l’autre côté de la moyenne, on pense que la tendance peut être inversée.

  3. Le signal d’entrée est:

  • Désactivation: un prix de clôture de la ligne K précédente est supérieur à la ligne de départ du canal Dongguan et inférieur à la moyenne cyclique de 200, le prix d’ouverture du jour est inférieur au prix de clôture et le prix le plus bas est inférieur à la moyenne de 200, ce qui génère un signal de désactivation
  • Faire plus: le prix de clôture de la ligne K précédente est inférieur à la ligne descendante du canal de Dongguan et supérieur à la moyenne cyclique de 200, le prix d’ouverture du jour est supérieur au prix de clôture et le prix le plus élevé est supérieur à la moyenne de 200, ce qui génère un signal de plus
  1. Le stop loss est le plus élevé des 3 dernières lignes K, le stop loss est le prix d’ouverture moins trois fois la différence entre le stop loss et le prix d’ouverture. Le stop loss et le stop loss sont calculés de la même manière que le stop loss.

  2. L’avantage de cette stratégie est qu’en utilisant une combinaison de filtres homogènes avec le canal de Dongxian, on évite les erreurs d’un seul indicateur technique, ce qui augmente considérablement le taux de réussite de la stratégie.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Taux de réussite élevé: l’utilisation combinée de la voie de Dongxian et de l’indicateur de la ligne de parité permet d’éviter efficacement les pertes inutiles causées par l’erreur d’un seul indicateur technique.

  2. Risque maîtrisé: utilisez le plus haut/le plus bas prix le plus récent comme point d’arrêt pour contrôler efficacement les pertes individuelles. Le stop est 3 fois plus élevé que le stop et le risque de gain est plus élevé.

  3. Simple et facile à utiliser: les indicateurs et la logique sont très simples et clairs, faciles à comprendre et à mettre en œuvre.

  4. Une grande adaptabilité: moins de paramètres stratégiques et une bonne stabilité dans différentes variétés et cycles.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Risque d’extrême situation: si vous rencontrez une situation unilatérale majeure, il est facile de déclencher un arrêt ou d’accroître les pertes. Il est possible de faire face à la situation en assouplissant de manière appropriée le seuil d’arrêt ou en réduisant la position.

  2. Risque d’erreur de détection des signaux de départ: l’adoption de nouveaux signaux de retour comme signaux de départ peut entraîner des entrées et des sorties fréquentes dans des situations de choc, entraînant des pertes de points de glissement inutiles. Il peut être résolu en optimisant la logique de départ.

  3. Risque d’optimisation des paramètres: un mauvais réglage des paramètres de la fréquence et de la moyenne des canaux de Dongguan peut entraîner une fréquence ou un retard du signal. Ce risque peut être réduit par l’optimisation des paramètres et les tests combinés.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Les cycles de passage de Dongguan et les cycles de ligne moyenne peuvent être optimisés pour trouver la meilleure combinaison de paramètres.

  2. Il est possible de tester différents ratios de stop-loss, d’équilibre et de profit/perte.

  3. On peut essayer de combiner les signaux d’entrée de jeu de correction d’autres indicateurs, tels que MACD, KD, etc., pour améliorer la stabilité de la stratégie.

  4. Les signaux de départ peuvent être optimisés pour éviter des sorties inutiles dans des situations de choc. Les signaux de départ peuvent également prendre en compte les indicateurs de tendance, etc.

  5. Un nouveau portefeuille de stratégies peut être développé sur la base de ce cadre stratégique, par exemple en combinaison avec d’autres indicateurs de type canal, indicateurs de type liste, etc.

Résumer

L’idée générale de la stratégie de l’équilibre lent est claire et compréhensible. En utilisant le canal de Tongan et l’équilibre comme signaux de stratégie, il peut améliorer efficacement la stabilité et le taux de victoire de la stratégie.

Code source de la stratégie
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
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/
// © Mysteriown

//@version=4

strategy("Lagged Donchian Channel + EMA", overlay = true)

//tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false


// ------------------------------------------ //
// ----------------- Inputs ----------------- //
// ------------------------------------------ //

period = input(24, title="Channel's periods")
Pema = input(200, title="EMA's periods ?")
ratio = input(3, title="Ratio TP", type=input.float)
loss = input(20, title="Risk Loss ($)")
lev = input(5, title="Leverage *...")
chan = input(title="Plot channel ?", type=input.bool, defval=false)
Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false)
bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false)
labels = input(title="Plot labels of bets ?", type=input.bool, defval=true)
supp = input(title="Delete last labels ?", type=input.bool, defval=true)


// ------------------------------------------ //
// ---------- Canal, EMA and arrow ---------- //
// ------------------------------------------ //

pema = ema(close,Pema)
plot(pema, title="EMA", color=color.blue)

canalhaut = highest(period)[1]
canalbas = lowest(period)[1]

bear = close[1] > canalhaut[1] and close < open and high > pema
bull = close[1] < canalbas[1] and open < close and low < pema

canalhautplot = plot(chan? canalhaut:na, color=color.yellow)
canalbasplot = plot(chan? canalbas:na, color=color.yellow)

plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)


// ------------------------------------------ //
// ------------- Position Short ------------- //
// ------------------------------------------ //

SlShort = highest(3)
BidShort = close[1]

TpShort = BidShort-((SlShort-BidShort)*ratio)
deltaShort = (SlShort-BidShort)/BidShort
betShort = round(loss/(lev*deltaShort)*100)/100
cryptShort = round(betShort*lev/BidShort*1000)/1000

// if bear[1] and labels //and low < low[1]
//     Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
//     label.delete(supp ? Lbear[1] : na)

var bentry=0.0
var bsl=0.0
var btp=0.0

if bear[1] and low < low[1]
    bentry:=BidShort
    bsl:=SlShort
    btp:=TpShort
    
pbentry = plot(bpos? bentry:na, color=color.orange)
plot(bpos? (bentry+btp)/2:na, color=color.gray)
pbsl = plot(bpos? bsl:na, color=color.red)
pbtp = plot(bpos? btp:na, color=color.green)

fill(pbentry,pbsl, color.red, transp=70)
fill(pbentry,pbtp, color.green, transp=70)


// ------------------------------------------ //
// ------------- Position Long -------------- //
// ------------------------------------------ //

SlLong = lowest(3)
BidLong = close[1]

TpLong = BidLong + ((BidLong - SlLong) * ratio)
deltaBull = (BidLong - SlLong)/BidLong
betLong = round(loss/(lev*deltaBull)*100)/100
cryptLong = round(betLong*lev/BidLong*1000)/1000

// if bull[1] and labels //and high > high[1]
//     Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar)
//     label.delete(supp ? Lbull[1] : na)

var Bentry=0.0
var Bsl=0.0
var Btp=0.0

if bull[1] and high > high[1]
    Bentry:=BidLong
    Bsl:=SlLong
    Btp:=TpLong
    
pBentry = plot(Bpos?Bentry:na, color=color.orange)
plot(Bpos?(Bentry+Btp)/2:na, color=color.gray)
pBsl = plot(Bpos?Bsl:na, color=color.red)
pBtp = plot(Bpos?Btp:na, color=color.green)

fill(pBentry,pBsl, color.red, transp=70)
fill(pBentry,pBtp, color.green, transp=70)


// ------------------------------------------ //
// --------------- Strategie ---------------- //
// ------------------------------------------ //

Bear = bear[1] and low < low[1]
Bull = bull[1] and high > high[1]

if (Bear and strategy.opentrades==0)
    strategy.order("short", false, 1, limit=BidShort)
    strategy.exit("exit", "short", limit = TpShort, stop = SlShort)

strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2)
strategy.close("short", when=bull)

if (Bull and strategy.opentrades==0)
    strategy.order("long", true, 1, limit=BidLong)
    strategy.exit("exit", "long", limit = TpLong, stop = SlLong)
    
strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2)
strategy.close("long", when=bear)