Discusión sobre el artículo "Aprendiendo a diseñar un sistema de trading con Ichimoku"

 

Artículo publicado Aprendiendo a diseñar un sistema de trading con Ichimoku:

Este artículo continúa la serie sobre la construcción de sistemas comerciales basados en los indicadores más populares. Esta vez hablaremos del indicador Iсhimoku y crearemos un sistema comercial basado en sus indicadores.

En esta sección, desarrollaremos un plan para escribir el código de las estrategias analizadas. A nuestro juicio, que este es uno de los pasos más importantes a la hora de estudiar estrategias comerciales, porque este plan/esquema permite organizar paso a paso el proceso de desarrollo del sistema comercial tratado.

  • Estrategia uno: Identificador de tendencia Ichimoku

Según la descripción de esta estrategia, necesitaremos crear un sistema comercial que compruebe constantemente los precios de cierre y los valores de la Senkou Span A y la Senkou span. El sistema deberá entonces comparar estos valores y determinar cuál es mayor y cuál es menor. A partir de ahí, deberá decidir si el mercado se encuentra en una tendencia alcista o bajista. El valor correspondiente tendrá que aparecer como un comentario en el gráfico. Además, el precio de cierre y los valores de las líneas de Ichimoku deberán trazarse en el gráfico. Si el precio de cierre es simultáneamente más alto que Span B y más alto que Span A, la tendencia será alcista. Si el precio de cierre es simultáneamente inferior a Span B y a Span A, la tendencia será bajista.

Gráfico de la estrategia para identificar una tendencia en Ichimoku

Autor: Mohamed Abdelmaaboud

[Eliminado]  
Esta es una buena presentación, me ha gustado
 
ApostleT #:
Esta es una buena presentación, me gustó
Gracias por su comentario
 
Muy buena y útil lección.
Thank you
 
Creo que es mejor combinar las estrategias descritas en uno con el fin de hacer señales de comercio más fuerte.
 

Excelente artículo - sólo un problema menor es que tengo fugas de memoria con el código de ejemplo


Encontré borrando el objeto en DeInit() arreglado esto

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete Ichimoku;
  }
 
hola a todos, ayudarme a bugging mql5:
Archivos adjuntos:
trendtang.mq5  3 kb
 

mi mente :

dibujar spanB limegreen cuando cerca > pasado nubes y cerca > pasado tenkansen, cerca > pasado kijunsen y cerca > Presente nubes, spanA > spanB :


#include <Indicators/Trend.mqh>

CiIchimoku*Ichimoku;

//--- configuración del indicador

#propiedad indicator_chart_window

#propiedad indicator_buffers 9

#propiedad indicator_plots 1

#propiedad indicator_type1 DRAW_LINE

#propiedad indicator_color1 LimeGreen

#propiedad indicator_width1 2


double sp1tl[];

double sp2tl[];

double trendtang[];

double tenqk[]

double kijqk[];

doble sp1ht[];

doble sp2ht[];

doble sp1qk[];

double sp2qk[];


void OnInit()

{

Ichimoku = new CiIchimoku();

Ichimoku.Create(_Símbolo,PERIODO_CURRENTE,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);

//--- establece la primera barra a partir de la cual se dibujará el índice

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,51);

//--- las líneas se desplazan al dibujar

PlotIndexSetInteger(0,PLOT_SHIFT,25);

}

int OnCalculate(const int rates_total,

const int prev_calculado,

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 inicio;

//---

if(prev_calculado==0)

inicio=0;

si no

start=prev_calculado-1;

//--- bucle principal

for(int i=inicio; i<tasa_total && !IsStopped(); i++)

{

MqlRates PArray[];

int Datos=CopyRates(_Símbolo,_Periodo,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);

doble 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]=VALOR_EMPTY;

}

}

//---

return(tasas_total);

}