Discussion de l'article "Apprendre à concevoir un système de trading basé sur l’Ichimoku"

 

Un nouvel article Apprendre à concevoir un système de trading basé sur l’Ichimoku a été publié :

Voici un nouvel article dans notre série sur la façon de concevoir un système de trading avec les indicateurs les plus populaires. Nous allons parler de l'indicateur Ichimoku en détail et de comment concevoir un système de trading basé sur cet indicateur.

Dans cette partie, nous allons créer un plan pour chaque stratégie. Je considère cette étape comme la plus importante dans notre mission de création d'un système de trading car elle nous aidera à concevoir un plan étape par étape, ce qui nous aidera à comprendre ce que nous voulons faire exactement.

  • 1ère stratégie : Identificateur de tendance Ichimoku

Sur la base de cette stratégie, nous devons créer un système de trading capable de vérifier en permanence les valeurs des prix de clôture, du Senkou Span A et du Senkou Span B. Notre système de trading doit effectuer la comparaison entre ces valeurs pour décider laquelle est la plus grande ou la plus petite, pour décider s'il y a une tendance à la hausse ou à la baisse et afficher un commentaire sur le graphique avec les valeurs du prix de clôture et des lignes de l’Ichimoku. Si le cours de clôture est supérieur au Span B et que le cours de clôture est supérieur au Span A, alors la tendance est à la hausse. Si le prix de clôture est inférieur au Span B et que le prix de clôture est inférieur au Span A, alors la tendance est à la baisse.

Plan de l'identification de la tendance Ichimoku

Auteur : Mohamed Abdelmaaboud

[Supprimé]  
C'est une bonne présentation, je l'ai appréciée
 
ApostleT #:
C'est une bonne présentation, j'ai bien aimé
Merci pour votre commentaire
 
Très bonne leçon, très utile.
Je vous remercie de votre attention.
 
Je pense qu'il est préférable de combiner les stratégies décrites ci-dessus en une seule afin de renforcer les signaux de trading.
 

Excellent article - un seul petit problème : j'ai eu des fuites de mémoire avec l'exemple de code


J'ai découvert que la suppression de l'objet dans DeInit() corrigeait ce problème.

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete Ichimoku;
  }
 
Bonjour à tous, j'ai besoin d'aide pour résoudre le problème de mql5 :
Dossiers :
trendtang.mq5  3 kb
 

mon esprit :

draw spanB limegreen when close > past clouds and close > past tenkansen, close > past kijunsen and close > Present clouds, spanA > spanB :


#include <Indicateurs/Trend.mqh>

CiIchimoku*Ichimoku ;

//--- paramètres de l'indicateur

#property indicator_chart_window

#property indicator_buffers 9

#property indicator_plots 1

#property indicator_type1 DRAW_LINE

#property indicateur_color1 LimeGreen

#property indicator_width1 2


double sp1tl[] ;

double sp2tl[] ;

double trendtang[] ;

double tenqk[] ;

double kijqk[] ;

double sp1ht[] ;

double sp2ht[] ;

double sp1qk[] ;

double sp2qk[] ;


void OnInit()

{

Ichimoku = new CiIchimoku() ;

Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52) ;

SetIndexBuffer(0,trendtang,INDICATOR_DATA) ;

SetIndexBuffer(1,sp1tl,INDICATOR_DATA) ;

SetIndexBuffer(2,sp2tl,INDICATOR_DATA) ;

SetIndexBuffer(3,tenqk,INDICATOR_DATA) ;

SetIndexBuffer(4,kijqk,INDICATOR_DATA) ;

SetIndexBuffer(5,sp1ht,INDICATOR_DATA) ;

SetIndexBuffer(6,sp2ht,INDICATOR_DATA) ;

SetIndexBuffer(7,sp1qk,INDICATOR_DATA) ;

SetIndexBuffer(8,sp2qk,INDICATOR_DATA) ;

IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1) ;

//--- définit la première barre à partir de laquelle l'index sera dessiné

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,51) ;

//--- décalage des lignes lors du dessin

PlotIndexSetInteger(0,PLOT_SHIFT,25) ;

}

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[],

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[],

const int &spread[])

{

int start ;

//---

if(prev_calculated==0)

start=0 ;

else

start=prev_calculée-1 ;

//--- boucle principale

for(int i=start ; i<rates_total && !IsStopped() ; i++)

{

MqlRates PArray[] ;

int Data=CopyRates(_Symbol,_Period,0,1,PArray) ;


Ichimoku.Refresh(-1) ;

double spanAtl= Ichimoku.SenkouSpanA(0) ;

double spanBtl= Ichimoku.SenkouSpanB(0) ;

double spanAht= Ichimoku.SenkouSpanA(-25) ;

double spanBht= Ichimoku.SenkouSpanB(-25) ;

double spanAqk= Ichimoku.SenkouSpanA(-51) ;

double spanBqk= Ichimoku.SenkouSpanB(-51) ;

double tenkanqk= Ichimoku.TenkanSen(-25) ;

double kijunqk= Ichimoku.KijunSen(-25) ;

sp1tl[i]=spanAtl ;

sp2tl[i]=spanBtl ;

tenqk[i]=tenkanqk ;

kijqk[i]=kijunqk ;

sp1ht[i]=spanAht ;

sp2ht[i]=spanBht ;

sp1qk[i]=spanAqk ;

sp2qk[i]=spanBqk ;

si(

sp1tl[i]>=sp2tl[i]

&& close[i]>tenqk[i]

&& close[i]>kijqk[i]

&& close[i]>sp1ht[i]

&& close[i]>sp2ht[i]

&& close[i]>sp1qk[i]

&& close[i]>sp2qk[i]

)

{

trendtang[i]=sp2tl[i] ;

}

else

{

trendtang[i]=EMPTY_VALUE ;

}

}

//---

return(rates_total) ;

}