Pouvez-vous me dire comment spécifier la condition pour que le testeur détermine le numéro de la barre du délai inférieur dans le texte.
Par exemple : Le testeur commence avec H1, puis il détermine l'heure de début de la n-ième bougie dans le cadre de texte, et l'étape suivante est de déterminer le numéro de la bougie, qui a commencé au même moment, mais par le cadre temporel ci-dessous. iBarShift écrit toujours 0. Le bloc responsable du calcul de la barre est ci-dessous :
Ce n'est pas la façon de faire. Dans le testeur, vous devez exécuter la chouette sur le TF minimum utilisé dans cette chouette aux prix d'ouverture. Il est préférable de faire fonctionner la chouette sur l'ouvert sur les minutes. Et il vaut mieux prescrire le TF, explicitement !
Je veux créer une MA multi-temporelle, qui change de couleur lorsque la tendance change. J'ai fait l'affichage du prix moyen à partir d'autres horizons temporels, mais je ne sais pas comment résoudre le problème du changement de couleur.
//+------------------------------------------------------------------+//| MA-MTFC.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#property indicator_chart_window#property indicator_buffers 3#property indicator_color1 Yellow#property indicator_color2 Green#property indicator_color3 Red//+------------------------------------------------------------------+externint MA_TF=1440;
externint MA_Period=89;
externint MA_Shift=0;
externint MA_Method=2;
externint MA_AP=0;
//+------------------------------------------------------------------+double Buffer_Yellow[];
double Buffer_Lime[];
double Buffer_Red[];
string Symb;
double MA;
int init()
{
Symb=Symbol();
//---if (MA_TF != 1)
if (MA_TF != 5)
if (MA_TF != 15)
if (MA_TF != 30)
if (MA_TF != 60)
if (MA_TF != 240)
if (MA_TF != 1440)
if (MA_TF != 10080)
if (MA_TF != 43200)
if (MA_TF != 0)
return;
//---SetIndexBuffer(0,Buffer_Yellow);
SetIndexBuffer(1,Buffer_Lime);
SetIndexBuffer(2,Buffer_Red);
//---SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//---return(0);
}
int deinit()
{
return(0);
}
int start()
{
double MA;
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
if (limit>1)
limit=Bars-1;
for(int i=limit-1;i>=0;i--)
{
int pos=iBarShift(NULL, MA_TF, Time[i]);
MA=iMA(Symb,MA_TF,MA_Period,MA_Shift,MA_Method,MA_AP,pos);
Buffer_Yellow[i]=MA;
Buffer_Lime[i]=MA;
Buffer_Red[i]=MA;
if(Buffer_Yellow[i]>Buffer_Yellow[i+1])
{
Buffer_Red[i]=EMPTY_VALUE;
}
elseif(Buffer_Yellow[i]<Buffer_Yellow[i+1])
{
Buffer_Lime[i]=EMPTY_VALUE;
}
else
{
Buffer_Red[i]=EMPTY_VALUE;
Buffer_Lime[i]=EMPTY_VALUE;
}
}
return(0);
}
Roman.: Ce n'est pas la façon de faire. Dans le testeur, vous devez exécuter la chouette sur le TF minimum utilisé dans cette chouette aux prix d'ouverture. Il est préférable de faire fonctionner la chouette sur l'ouvert sur les minutes. Et il vaut mieux prescrire le TF, explicitement !
Roman, j'essaie de faire en sorte que l'indicateur soit affiché dans le testeur de stratégie. L'indicateur utilise des délais plus courts pour l'analyse.
FAQ: Il serait préférable de montrer le code complet, et de le coller en utilisant le bouton "SRC".
OK, je vais essayer d'ajouter du code à ce post.
En fait, je sais ce que je veux réaliser au final - je fais du commerce depuis longtemps, mais je n'ai commencé à programmer qu'après avoir réalisé exactement ce que je voulais programmer.
Mon objectif maintenant est d'obtenir une flèche verte sur chaque barre clôturée au-dessus des trois glissements et une flèche rouge sur chaque barre clôturée en dessous des trois et seulement pour les barres clôturées après avoir attaché au graphique. Je ne suis pas intéressé par le bar actuel.
Je veux que ces flèches restent sur le graphique pendant que l'indicateur y est attaché, puis retiré.
Je dessine maintenant les curseurs uniquement pour des raisons de clarté, puis je les supprimerai de l'EA.
Nous avons maintenant des curseurs et des flèches, mais ils apparaissent et disparaissent maintenant et apparaissent sur de mauvaises barres. C'est ce que je ne comprends pas.
Je pense que j'ai peut-être confondu quelque chose avec j ou j+1 dans les lignes 106-111 et avec quel élément les épingler.
Merci si vous pouvez me donner un indice.
Pour une raison quelconque, le bouton SRC ne fonctionne pas. Je vais essayer d'insérer le fichier comme un mq4 normal.
C'est-à-dire que nous exécutons le testeur sur un TF bas de gamme, et modifions toute la logique de l'indicateur pour l'adapter à un TF plus haut de gamme ?
Merci beaucoup ! Donc, l'EA négocie par ticks, mais puis-je le changer pour négocier sur des intervalles (chandeliers) ? Je suis tellement confus à ce sujet.
Bonne journée à ce fil ! Vous savez, l'indicateur se compile, mais il ne dessine rien, et je ne sais pas ce qui ne va pas, ce qu'il faut penser, comment chercher un bug. Quoi qu'il en soit, le code fonctionnait, j'y ai ajouté une fonction avec des changements minimes, mais maintenant il ne fait rien du tout !!!
Peut-être que le problème se situe quelque part dans les déclarations qui commencent par la grille, ou peut-être que je suis trop lent et que je me suis trompé... Ça marchait !
//+------------------------------------------------------------------+//| ИндюкДимонакомпил.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#import "user32.dll"int PostMessageA(int hWnd,int Msg,int wParam,string lParam);
#import#define WM_COMMAND 0x0111int delimiter = 0;
#property indicator_chart_windowdouble ВерхняячертаBuffer1[];
double НижняячертаBuffer2[];
double СинняячертаBuffer3[];
double вершина;
double основание_первого_снижения;
double начало;
double вершина_волны_3;
externint T=4,K=200;
int timeframe, start ;
int бар_вершина ;
int бар_основание_первого_снижения;
int бар_начало;
int pereklutsatel;
double naklon,linija2; int P;externint RO=49;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
for (int i=limit;i>=0;i--) {
//----for ( int J=0;J<=RO;J++){
//----// for(int i=Bars; i>=0;i--)
i=Bars;
бар_вершина=iHighest( NULL, timeframe, MODE_HIGH, K, start ) ;
вершина =High[ бар_вершина ];
бар_основание_первого_снижения=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble ( бар_вершина/2,0), start ) ;
основание_первого_снижения=Low[ бар_основание_первого_снижения ];
бар_начало=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble (бар_вершина*1.5,0), бар_вершина ) ;
начало=Low[ бар_начало ];
if(начало>основание_первого_снижения){naklon=(начало-основание_первого_снижения)/(бар_начало-бар_основание_первого_снижения);
НижняячертаBuffer2[бар_начало]=начало;linija2=начало;for(i=бар_начало-1;i>=0;i--){linija2=linija2-naklon;
НижняячертаBuffer2[i]=linija2;
}
НижняячертаBuffer2[бар_основание_первого_снижения]=основание_первого_снижения;}
for (i=0;i<100;i++){ СинняячертаBuffer3[i]= Open[i];}
for (i=330;i<500;i++){ СинняячертаBuffer3[i]= Open[i];}
ВерхняячертаBuffer1[бар_начало]=начало;
double точка4; int бар_точка4; бар_точка4=iHighest( NULL, timeframe, MODE_HIGH, бар_основание_первого_снижения, 3 ) ;
точка4 =High[ бар_точка4 ];
if(вершина>точка4){naklon=(начало-точка4)/(бар_начало-бар_точка4);
double linija1=начало;for(i=бар_начало-1;i>=0;i--){linija1=linija1-naklon;ВерхняячертаBuffer1[i]=linija1; }}
double vulf=НижняячертаBuffer2[0];
if ( vulf==Ask&&vulf==Bid)vulf=1;
else{ for (vulf=vulf+Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf-Point){
if ( vulf==Ask&&vulf==Bid){vulf=1;}}
for (vulf=vulf-Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf+Point){
if ( vulf==Ask&&vulf==Bid)vulf=1;}
}
if (vulf==1){Comment (" Есть вульв!!! " , " timeframe " , timeframe);return(0); }
if (vulf!=1&&pereklutsatel==1) {
if(delimiter<3){delimiter++;Comment(delimiter);return(0);}
delimiter=0;
fChangePeriod();P++;
} } }
//----return(0);
}
//+------------------------------------------------------------------+void fChangePeriod(){int ii,hwd = WindowHandle(Symbol(),Period());
switch(Period()){
casePERIOD_W1 : ii = 33134; break; //PERIOD_D1;casePERIOD_D1 : ii = 33136; break; //PERIOD_H4;casePERIOD_H4 : ii = 33135; break; //PERIOD_H1;casePERIOD_H1 : ii = 33140; break; //PERIOD_M30;casePERIOD_M30 : ii = 33139; break; //PERIOD_M15;casePERIOD_M15 : ii = 33138; break; //PERIOD_M5;casePERIOD_M5 : ii = 33137; break; //PERIOD_M1;casePERIOD_M1 : ii = 33141; break; //PERIOD_W1;
}
PostMessageA(hwd, WM_COMMAND, ii, 0);
return;
}
Pouvez-vous me dire comment spécifier la condition pour que le testeur détermine le numéro de la barre du délai inférieur dans le texte.
Par exemple : Le testeur commence avec H1, puis il détermine l'heure de début de la n-ième bougie dans le cadre de texte, et l'étape suivante est de déterminer le numéro de la bougie, qui a commencé au même moment, mais par le cadre temporel ci-dessous. iBarShift écrit toujours 0. Le bloc responsable du calcul de la barre est ci-dessous :
Yuri, pouvez-vous suggérer quelque chose à propos de ma question juste au-dessus ?
Vérification du script
Résultat
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 1 TimeOpen : 00:00 Bar : 1057
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 5 TimeOpen : 00:00 Bar : 212
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 15 TimeOpen : 00:00 Bar : 70
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 30 TimeOpen : 00:00 Bar : 35
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 60 TimeOpen : 00:00 Bar : 17
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily : TimeFrame : 240 TimeOpen : 00:00 Bar : 4
Un conseil, s'il vous plaît :
Je veux créer une MA multi-temporelle, qui change de couleur lorsque la tendance change. J'ai fait l'affichage du prix moyen à partir d'autres horizons temporels, mais je ne sais pas comment résoudre le problème du changement de couleur.
Ce n'est pas la façon de faire. Dans le testeur, vous devez exécuter la chouette sur le TF minimum utilisé dans cette chouette aux prix d'ouverture. Il est préférable de faire fonctionner la chouette sur l'ouvert sur les minutes. Et il vaut mieux prescrire le TF, explicitement !
Il serait préférable de montrer le code complet, et de le coller en utilisant le bouton "SRC".
OK, je vais essayer d'ajouter du code à ce post.
En fait, je sais ce que je veux réaliser au final - je fais du commerce depuis longtemps, mais je n'ai commencé à programmer qu'après avoir réalisé exactement ce que je voulais programmer.
Mon objectif maintenant est d'obtenir une flèche verte sur chaque barre clôturée au-dessus des trois glissements et une flèche rouge sur chaque barre clôturée en dessous des trois et seulement pour les barres clôturées après avoir attaché au graphique. Je ne suis pas intéressé par le bar actuel.
Je veux que ces flèches restent sur le graphique pendant que l'indicateur y est attaché, puis retiré.
Je dessine maintenant les curseurs uniquement pour des raisons de clarté, puis je les supprimerai de l'EA.
Nous avons maintenant des curseurs et des flèches, mais ils apparaissent et disparaissent maintenant et apparaissent sur de mauvaises barres. C'est ce que je ne comprends pas.
Je pense que j'ai peut-être confondu quelque chose avec j ou j+1 dans les lignes 106-111 et avec quel élément les épingler.
Merci si vous pouvez me donner un indice.
Pour une raison quelconque, le bouton SRC ne fonctionne pas. Je vais essayer d'insérer le fichier comme un mq4 normal.
Vérification du script
J'ai décidé de modifier votre code et de faire un contrôle pour répondre à mes besoins (je l'ai exécuté sur H1).
Et le voici
J'ai décidé de modifier votre code et de faire un contrôle pour répondre à mes besoins (je l'ai exécuté sur H1).
Et voilà ce que j'ai obtenu
Vous enregistrez le testeur en ouvrant les prix. Roman a donc déjà écrit comment le faire.
Prix de clôture de la barre précédente Close[1]
Bonne journée à ce fil ! Vous savez, l'indicateur se compile, mais il ne dessine rien, et je ne sais pas ce qui ne va pas, ce qu'il faut penser, comment chercher un bug. Quoi qu'il en soit, le code fonctionnait, j'y ai ajouté une fonction avec des changements minimes, mais maintenant il ne fait rien du tout !!!
Peut-être que le problème se situe quelque part dans les déclarations qui commencent par la grille, ou peut-être que je suis trop lent et que je me suis trompé... Ça marchait !