Aide au codage - page 689

 

Bonjour Mladen,

Je veux faire une analyse de similarité dans les données forex.

Je veux dire, je veux trouver la barre horaire la plus corrélée (même valeur ou valeur la plus similaire dans OHLC) à la DERNIERE barre horaire (OHLC) dans l'historique de 20.000 barres (OHLC).

Est-ce que le coef. de corrélation de Pearson est suffisant pour trouver la similarité de la valeur de la dernière barre dans l'historique de 20.000 barres ? est-il possible de faire cette analyse dans metatraderv avec un script (ou EA) ? merci.

 

cher mlade :

J'ai créé mon premier indicateur MTF

mais la couleur est noire

comment le réparer ?

merci beaucoup

Dossiers :
MTF xb4d.mq4  4 kb
xb4d.mq4  4 kb
 
bilbao:

cher mlade :

J'ai créé mon premier indicateur MTF

mais la couleur est noire

comment le réparer ?

merci beaucoup

Définissez la #property indicator_color1 sur la couleur souhaitée (elle est actuellement noire).
 
nevar:

Bonjour Mladen,

Je veux faire une analyse de similarité dans les données forex.

Je veux dire, je veux trouver la barre horaire la plus corrélée (même valeur ou valeur la plus similaire dans OHLC) à la DERNIERE barre horaire (OHLC) dans l'historique de 20.000 barres (OHLC).

Est-ce que le coefficient de corrélation de Pearson est suffisant pour déterminer la similarité de la valeur de la dernière barre dans l'historique de 20.000 barres ? est-il possible de faire cette analyse dans metatraderv avec un script (ou EA) ? merci.

Mladen,

Un commentaire à ce sujet ?

 
nevar:

Mladen,

Un commentaire là-dessus ?

Vous pouvez faire cela avec Pearson et simplement trouver la barre avec la valeur maximale de Pearson - vous pouvez faire cela pour n'importe quel cadre temporel et n'importe quel nombre de barres puisque Pearson n'est pas lourd pour le CPU. Il est préférable de le faire à partir d'un indicateur (afin d'éviter certaines opérations de tableau).
 
mladen:
Définissez la #property indicator_color1 à la couleur désirée (elle est définie à Black maintenant).

monsieur mladen :

je le fais mais je n'ai qu'une seule couleur

J'ai besoin de deux couleurs pour les marchés haussiers et baissiers.

 
bilbao:

monsieur mladen :

Je le fais mais je n'ai qu'une seule couleur

J'ai besoin de deux couleurs pour les marchés haussiers et baissiers.

Alors vous devez le coder différemment (vous devez utiliser deux buffers et non un seul pour l'histogramme à deux couleurs).
 
mladen:
Ensuite, vous devez le coder différemment (vous devez utiliser deux tampons et non un seul pour l'histogramme à deux couleurs).

C'est correct, monsieur ?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4 |

//|------------------------------------------------------------------+


#property indicator_separate_window

#property indicator_buffers 2

#property indicateur_color1 LimeGreen

#property indicator_width1 2

#property indicator_color2 PaleVioletRed

#property indicator_width2 2

//---- paramètres d'entrée

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

PÉRIODE_W1 10080

PERIOD_MN1 43200

Vous devez utiliser la valeur numérique de l'intervalle de temps que vous voulez utiliser

lorsque vous définissez la valeur 'TimeFrame' avec les entrées de l'indicateur.

---------------------------------------*/

extern int TimeFrame=0 ;

extern int period = 10 ;

extern int AppliedPrice=0 ;

extern bool SoundAlerts=false ;

double ExtMapBuffer1[] ;

//+------------------------------------------------------------------+

//| Fonction d'initialisation de l'indicateur personnalisé |

//+------------------------------------------------------------------+

int init()

{

//---- ligne de l'indicateur

SetIndexStyle(0, DRAW_HISTOGRAM) ;

SetIndexStyle(1, DRAW_HISTOGRAM) ;

SetIndexBuffer(0, ExtMapBuffer1) ;

SetIndexBuffer(1, ExtMapBuffer1) ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1" ; break ;

case 5 : TimeFrameStr="Period_M5" ; break ;

cas 15 : TimeFrameStr="Période_M15" ; pause ;

cas 30 : TimeFrameStr="Period_M30" ; break ;

cas 60 : TimeFrameStr="Period_H1" ; pause ;

cas 240 : TimeFrameStr="Period_H4" ; break ;

cas 1440 : TimeFrameStr="Period_D1" ; break ;

cas 10080 : TimeFrameStr="Period_W1" ; break ;

cas 43200 : TimeFrameStr="Period_MN1" ; pause ;

default : TimeFrameStr="Current Timeframe" ;

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ") ;

return(0) ;

}

//----

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[] ;

int i,limit,y=0,counted_bars=IndicatorCounted() ;

// Trace l'intervalle de temps défini sur l'intervalle de temps actuel.

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame) ;

limit= Barres-1 ;

for(i=0,y=0;i<limit;i++)

{

si (Time[i]<TimeArray[y]) y++ ;

/***********************************************************

Ajoutez la boucle principale de votre indicateur ci-dessous.

existant avec son iName ou iCustom.

Règle 1 : Ajoutez les entrées externes ci-dessus pour toutes les valeurs nécessaires.

Règle 2 : Utilisez 'TimeFrame' pour le cadre temporel de l'indicateur.

Règle 3 : Utilisez 'y' pour la valeur de décalage de votre indicateur.

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y) ;

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Buy Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]) ;

retour(0) ;

}

//+------------------------------------------------------------------+

 
bilbao:

C'est correct, monsieur ?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4 |

//|------------------------------------------------------------------+


#property indicator_separate_window

#property indicator_buffers 2

#property indicateur_color1 LimeGreen

#property indicator_width1 2

#property indicator_color2 PaleVioletRed

#property indicator_width2 2

//---- paramètres d'entrée

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

PÉRIODE_W1 10080

PERIOD_MN1 43200

Vous devez utiliser la valeur numérique de l'intervalle de temps que vous voulez utiliser

lorsque vous définissez la valeur 'TimeFrame' avec les entrées de l'indicateur.

---------------------------------------*/

extern int TimeFrame=0 ;

extern int period = 10 ;

extern int AppliedPrice=0 ;

extern bool SoundAlerts=false ;

double ExtMapBuffer1[] ;

//+------------------------------------------------------------------+

//| Fonction d'initialisation de l'indicateur personnalisé |

//+------------------------------------------------------------------+

int init()

{

//---- ligne de l'indicateur

SetIndexStyle(0, DRAW_HISTOGRAM) ;

SetIndexStyle(1, DRAW_HISTOGRAM) ;

SetIndexBuffer(0, ExtMapBuffer1) ;

SetIndexBuffer(1, ExtMapBuffer1) ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1" ; break ;

case 5 : TimeFrameStr="Period_M5" ; break ;

cas 15 : TimeFrameStr="Période_M15" ; pause ;

cas 30 : TimeFrameStr="Period_M30" ; break ;

cas 60 : TimeFrameStr="Period_H1" ; pause ;

cas 240 : TimeFrameStr="Period_H4" ; break ;

cas 1440 : TimeFrameStr="Period_D1" ; break ;

cas 10080 : TimeFrameStr="Period_W1" ; break ;

cas 43200 : TimeFrameStr="Period_MN1" ; pause ;

default : TimeFrameStr="Current Timeframe" ;

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ") ;

return(0) ;

}

//----

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[] ;

int i,limit,y=0,counted_bars=IndicatorCounted() ;

// Trace l'intervalle de temps défini sur l'intervalle de temps actuel.

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame) ;

limit= Barres-1 ;

for(i=0,y=0;i<limit;i++)

{

si (Time[i]<TimeArray[y]) y++ ;

/***********************************************************

Ajoutez la boucle principale de votre indicateur ci-dessous.

existant avec son iName ou iCustom.

Règle 1 : Ajoutez les entrées externes ci-dessus pour toutes les valeurs nécessaires.

Règle 2 : Utilisez 'TimeFrame' pour le cadre temporel de l'indicateur.

Règle 3 : Utilisez 'y' pour la valeur de décalage de votre indicateur.

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y) ;

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Buy Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]) ;

retour(0) ;

}

//+------------------------------------------------------------------+

Les couleurs s'affichent-elles comme vous le souhaitiez ?
 
mladen:
Est-ce qu'il montre les couleurs comme vous le vouliez ?

cher mladen :

j'en trouve des traces sur https://www.forex-tsd.com/forum/debates-discussions/1131-multi-timeframe-indicators/page762#comment_1831838

Merci beaucoup pour votre aide à tous les membres.

Que Dieu bénisse votre vie