Stratégie d'inversion de la moyenne mobile à quatre indicateurs


Date de création: 2023-11-27 15:51:01 Dernière modification: 2023-11-27 15:51:01
Copier: 0 Nombre de clics: 605
1
Suivre
1617
Abonnés

Stratégie d’inversion de la moyenne mobile à quatre indicateurs

Aperçu

Cette stratégie utilise les trois principaux indicateurs principaux, l’EMA moyenne mobile, le RSI relativement faible et le CCI des canaux de marchandises, pour identifier la tendance des prix en fonction de l’inversion de la moyenne EMA, puis utilise les indicateurs RSI et CCI qui ont été achetés et vendus pour formuler un signal de négociation.

Principe de stratégie

  1. La courbe de l’EMA de 4 cycles et de 8 cycles sont croisées pour déterminer la tendance des prix, la courbe de l’EMA de 4 cycles est déterminée rapidement et celle de l’EMA de 8 cycles est déterminée lentement.

  2. Lorsque l’EMA moyenne se retourne vers le haut, c’est-à-dire que la ligne de 4 cycles traverse la ligne de 8 cycles, puis aide à juger si l’indicateur RSI est supérieur à 65 (la zone de survente relative) et l’indicateur CCI supérieur à 0 (ce qui signifie qu’il n’y a pas de survente), la satisfaction génère un signal de plus;

  3. Lorsque l’EMA moyenne se retourne vers le bas, c’est-à-dire que la ligne de 4 cycles traverse la ligne de 8 cycles, puis aide à juger que l’indicateur RSI est inférieur à 35 (la zone de survente relative) et que l’indicateur CCI est inférieur à 0 (ce qui signifie qu’il n’y a pas de survente), la satisfaction génère un signal de shorting;

  4. Après la formation du signal, les prix de stop et de stop sont définis en fonction de la distance d’arrêt et de la distance d’arrêt de l’entrée.

Dans l’ensemble, la stratégie prend en compte les tendances des prix à court et moyen terme et les indicateurs à court terme. La zone d’évitement des surachats est relativement stable, tandis que le paramètre de stop-loss est également efficace pour contrôler la perte maximale d’une seule transaction.

Analyse des avantages

  1. Les stratégies de négociation sur un seul indicateur, qui sont plus susceptibles d’être mal interprétées, doivent être combinées avec d’autres indicateurs.

  2. L’EMA évalue les tendances dominantes pour éviter d’être induit en erreur par les fluctuations à court terme; les indicateurs RSI et CCI évitent les zones de sur-achat et de survente pour augmenter le taux de victoire;

  3. La mise en place automatique des arrêts de perte et des freins pour contrôler le risque d’une seule transaction, afin de prévenir efficacement l’expansion des pertes en cas de situations extrêmes;

  4. Cette stratégie est une stratégie de négociation technique, indépendante des fondamentaux, utilisable pour n’importe quel cycle de marché, facile à utiliser sur le marché réel.

Analyse des risques

  1. Les indicateurs techniques sont susceptibles d’échouer en cas de marge bénéficiaire importante ou de bonne nouvelle.

  2. Les stop-loss peuvent être franchis en cas de forte fluctuation des cours des actions et devraient être allégés de manière appropriée;

  3. Cette stratégie appartient à la stratégie de négociation de fréquence courte, et les coûts de négociation ont une certaine incidence sur les bénéfices, ce qui convient à la stratégie de fréquence élevée avec un avantage en termes de coûts.

Direction d’optimisation

  1. L’ajout d’algorithmes d’apprentissage automatique pour ajuster automatiquement les paramètres en fonction des fondamentaux des actions;

  2. L’ajout d’un mécanisme d’arrêt adaptatif au lieu d’une distance d’arrêt fixe

Résumer

Cette stratégie de négociation, qui intègre plusieurs indicateurs, permet d’obtenir des bénéfices de négociation à moyen et à court terme relativement stables, dans des paramètres raisonnables. Elle appartient à une stratégie technique facile à mettre en œuvre.

Code source de la stratégie
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4


strategy(title="Moving Average Exponential", shorttitle="EMA", overlay=true)


len4 = input(4, minval=1, title="Length_MA4")
src4 = input(close, title="Source")
offset4 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out4 = ema(src4, len4)
plot(out4, title="EMA", color=color.blue, offset=offset4)

len8 = input(8, minval=1, title="Length_MA8")
src8 = input(close, title="Source")
offset8 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out8 = ema(src8, len8)
plot(out8, title="EMA", color=color.blue, offset=offset8)


//rsioma
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(ema(src, len)), 0), len)
down = rma(-min(change(ema(src, len)), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//plot(rsi, color=color.blue)
//band1 = hline(80)
//band0 = hline(20)
//fill(band1, band0, color=color.purple, transp=90)
//hline(50, color=color.gray, linestyle=plot.style_line)
sig = ema(rsi, 21)
//plot(sig, color=color.purple)

//woodie
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=14)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=20)

source = close

cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)

last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.green : color.red


// Exit Condition
// Exit Condition
a = input(12)*10
b = input(15)*10
c = a*syminfo.mintick
d = b*syminfo.mintick


longCondition = crossover(out4, out8) and (rsi >= 65 and cci14>=0)
shortCondition = crossunder(out4, out8) and (rsi <=35 and cci14<=0)


long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + d : long_profit_level1  [1]
//long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
//long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - d : short_profit_level1 [1]
//short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
//short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 


//ha
// === Input ===
//ma1_len = input(1, title="MA 01")
//ma2_len = input(40, title="MA 02")

// === MA 01 Filter ===
//o=ema(open,ma1_len)
//cc=ema(close,ma1_len)
//h=ema(high,ma1_len)
//l=ema(low,ma1_len)

// === HA calculator ===
//ha_t = heikinashi(syminfo.tickerid)
//ha_o = security(ha_t, timeframe.period, o)
//ha_c = security(ha_t, timeframe.period, cc)
//ha_h = security(ha_t, timeframe.period, h)
//ha_l = security(ha_t, timeframe.period, l)

// === MA 02 Filter ===
//o2=ema(ha_o, ma2_len)
//c2=ema(ha_c, ma2_len)
//h2=ema(ha_h, ma2_len)
//l2=ema(ha_l, ma2_len)

// === Color def ===
//ha_col=o2>c2 ? color.red : color.lime

// ===  PLOTITING===
//plotcandle(o2, h2, l2, c2, title="HA Smoothed", color=ha_col)

tp=input(120)
sl=input(96)
    
strategy.entry("long", strategy.long, when = longCondition)
//strategy.close("long", when = o2>c2 , comment="ha_long")
strategy.entry("short", strategy.short , when =shortCondition )
//strategy.close("short", when = o2<=c2 , comment = "ha_short" )

//strategy.close("long",when=long_profit_level1 or long_stop_level  , comment="tp/sl")
//strategy.close("short",when=short_profit_level1 or short_stop_level , comment="tp/sl")

strategy.exit("x_long","long",profit = tp, loss = sl) //when = o2>c2)
strategy.exit("x_short","short",profit = tp, loss = sl) //when = o2<c2)