Discussione sull’articolo "Scopri come progettare un sistema di trading tramite Ichimoku"

 

Il nuovo articolo Scopri come progettare un sistema di trading tramite Ichimoku è stato pubblicato:

Ecco un nuovo articolo della nostra serie su come progettare un sistema di trading con gli indicatori più comuni, parleremo in dettaglio dell'indicatore Ichimoku e di come progettare un sistema di trading con questo indicatore.

In questa parte, creeremo uno schema per ogni strategia, considero questo passaggio il passo più importante della nostra missione nel creare un sistema di trading in quanto ci aiuterà a progettare uno schema passo-passo che ci aiuterà a comprendere cosa vogliamo fare esattamente.

  • Strategia uno - Identificatore di trend Ichimoku:

Sulla base di questa strategia, dobbiamo creare un sistema di trading in grado di controllare continuamente i valori dei prezzi di chiusura, Senkou Span A e Senkou Span B. Abbiamo bisogno che il sistema di trading faccia un confronto tra questi valori per decidere quale sia maggiore o minore e determinare se c'è un trend rialzista o ribassista e visualizzarlo come commento sul grafico con i valori del prezzo di chiusura e le linee Ichimoku. Se il prezzo di chiusura è maggiore di Span B e il prezzo di chiusura è maggiore di Span A, allora il trend è al rialzo. Se il prezzo di chiusura è inferiore di Span B e il prezzo di chiusura è inferiore di Span A, il trend è al ribasso.

Schema dell'identificatore di trend Ichimoku

Autore: Mohamed Abdelmaaboud

[Eliminato]  
Questa è una buona presentazione, mi è piaciuta
 
ApostleT #:
Questa è una buona presentazione, mi è piaciuto
Grazie per il tuo commento
 
Lezione molto buona e utile.
Grazie
 
Ritengo che sia meglio combinare le strategie descritte in una sola per rendere più forti i segnali di trading.
 

Articolo eccellente: l'unico problema minore è che ho avuto perdite di memoria con il codice di esempio.


Ho scoperto che cancellando l'oggetto in DeInit() si risolveva il problema.

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete Ichimoku;
  }
 
ciao a tutti, aiutatemi a buggare mql5:
File:
trendtang.mq5  3 kb
 

la mia mente :

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


#includere <Indicatori/Trend.mqh>

CiIchimoku*Ichimoku;

//--- impostazioni dell'indicatore

#proprietà indicator_chart_window

#proprietà indicator_buffers 9

#proprietà indicator_plots 1

#proprietà indicatore_tipo1 DRAW_LINE

#proprietà indicator_color1 LimeGreen

#proprietà indicator_width1 2


double sp1tl[];

double sp2tl[];

double trendtang[];

double tenqk[];

doppio kijqk[];

doppio sp1ht[];

doppio sp2ht[];

doppio sp1qk[];

doppio 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);

//--- imposta la prima barra a partire dalla quale verrà disegnato l'indice

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,51);

//--- sposta le linee durante il disegno

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;

altrimenti

start=prev_calcolato-1;

//--- ciclo 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;

se(

sp1tl[i]>=sp2tl[i]

&& close[i]>tenqk[i]

&& close[i]>kijqk[i]

&& close[i]>sp1ht[i]

&& chiusura[i]>sp2ht[i]

&& chiusura[i]>sp1qk[i]

&& chiusura[i]>sp2qk[i]

)

{

trendtang[i]=sp2tl[i];

}

altrimenti

{

trendtang[i]=EMPTY_VALUE;

}

}

//---

return(rates_total);

}