Questions d'un "mannequin - page 187

 
G001:
Je suis complètement épuisé. Il ne s'ouvre pas correctement.

Aidez-moi, s'il vous plaît. Où est l'erreur ?

Essayez ça :
MqlTradeRequest request={0};
MqlTradeResult result={0};
MqlTradeCheckResult check={0};
 
fyords:
Essayez comme ça :
Merci.
Il s'ouvre, mais ne lit pas correctement les signaux de l'indicateur.
Est-ce que ça aide ?
 
G001:
Merci.
Il s'ouvre, mais ne lit pas correctement les signaux de l'indicateur.
Est-ce que ça va aider ?
ArraySetAsSeries(Bull,true);

Il est fait une fois dans OnInit.

CopyBuffer(Indicator,1,0,3,Bull);
Tu ne t'es pas trompé dans les chiffres de la mémoire tampon ?
 
fyords:

Ceci est fait une fois à OnInit.

Les numéros de tampon sont-ils corrects ?
Je ne pense pas. L'indicateur se trouve à la page précédente.
 
G001:
Il s'ouvre, seulement il ne lit pas correctement les signaux de l'indicateur.

Que voulez-vous dire par "mauvais" ?

Vous pouvez imprimer la valeur de l'indicateur pour vérifier - " qu'est-ce qu'on obtient ? ".

 
fyords:

Que voulez-vous dire par "mauvais" ?

Vous pouvez imprimer la valeur de l'indicateur pour vérifier - " qu'est-ce qu'on obtient ? ".

J'ai vérifié l'EA avec d'autres indicateurs et il fonctionne.
Peut-être y a-t-il un problème avec l'indicateur ?
Il s'ouvre sur le premier tick avec cet indicateur.

Désolé, je ne sais pas où ajouter l'impression.

Exemple pour BUY_STOP, passe du rouge au gris.

//+------------------------------------------------------------------+ 
//|                                                      MACDATR.mq5 | 
//|                                      Copyright © 2011, Svinozavr | 
//+------------------------------------------------------------------+ 
//---- Indicator settings
#property indicator_separate_window 
#property indicator_buffers 4 
#property indicator_plots   4
#property indicator_level1 +0.0005
#property indicator_level2 -0.0005
#property indicator_levelcolor DimGray
#define RESET 0
//-----
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 Gray
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_label1 "MACD"
//-----
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 Green
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
#property indicator_label2 "Bull"
//-----
#property indicator_type3 DRAW_HISTOGRAM
#property indicator_color3 Red
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
#property indicator_label3 "Bear"
//-----
#property indicator_type4 DRAW_LINE
#property indicator_color4 Olive
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
#property indicator_label4 "ATR"
//-----
//----- Indicator parameters
//+------------------------------------------------------------------+
input uint FastEMA      = 12;
input uint SlowEMA      = 26;
input uint SignalEMA = 9;
input int  ATRG         = 0;
input ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;
//+------------------------------------------------------------------+
//-----
double ATRmin=0;
double kATR=1;
int min_rates_total;
int ATRHandle,MACDHandle;
double MACDBuffer[],ATRBuffer[],Bull[],Bear[];
//+------------------------------------------------------------------+    
//| MACD indicator initialization function                           | 
//+------------------------------------------------------------------+  
void OnInit()
{
//-----
  if(ATRG) min_rates_total=int(MathMax(FastEMA,SlowEMA)+ATRG);
  else min_rates_total=2*int(MathMax(FastEMA,SlowEMA));
//-----
  int ATR;
  if(!ATRG) ATR=int(SlowEMA); 
  else ATR=ATRG;
  ATRmin*=_Point;
//-----
  ATRHandle=iATR(NULL,0,ATR);
  if(ATRHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà ATR");
//-----
  MACDHandle=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,AppliedPrice);
  if(MACDHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà MACD");
//-----
  SetIndexBuffer(0,MACDBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(MACDBuffer,true);
//-----
  SetIndexBuffer(1,Bull,INDICATOR_DATA);
  PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bull,true);
//-----
  SetIndexBuffer(2,Bear,INDICATOR_DATA);
  PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bear,true);
//-----
  SetIndexBuffer(3,ATRBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(ATRBuffer,true);
//-----
  string shortname;
  StringConcatenate(shortname,"MACDATR (",FastEMA,", ",SlowEMA,", ",SignalEMA,", ",EnumToString(AppliedPrice),")");
//-----
  IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//-----
  IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//-----
}
//+------------------------------------------------------------------+  
//| MACD iteration function                                          | 
//+------------------------------------------------------------------+  
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[]
                )
  {
//----- Check for data
  if(rates_total<min_rates_total) return(0);
//-----
  int to_copy,limit,i;
  double atr,Atr[];
  datetime Time[1];
//-----
  if(prev_calculated>rates_total || prev_calculated<=0)
  {
    limit=rates_total-min_rates_total;
  }
  else limit=rates_total-prev_calculated;
//----- 
  ArraySetAsSeries(Atr,true);
//-----
  to_copy=limit+1;
//-----
  if(CopyBuffer(ATRHandle,0,0,to_copy,Atr)<=0) return(RESET);
  if(CopyBuffer(MACDHandle,MAIN_LINE,0,to_copy,MACDBuffer)<=0) return(RESET);
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
    atr=kATR*Atr[i]; // ATR
    atr=MathMax(atr,ATRmin);
//-----
    if(MACDBuffer[i]>0) {ATRBuffer[i]=MACDBuffer[i]-atr;}
    if(MACDBuffer[i]<0) {ATRBuffer[i]=MACDBuffer[i]+atr;}
  }
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
//-----
    Bear[i]=0;
    Bull[i]=0;
//-----
    if(MACDBuffer[i]>0 && MACDBuffer[i+1]<MACDBuffer[i] && ATRBuffer[i]>=0) {Bull[i]=MACDBuffer[i];}
    if(MACDBuffer[i]<0 && MACDBuffer[i+1]>MACDBuffer[i] && ATRBuffer[i]<=0) {Bear[i]=MACDBuffer[i];}
  }
//+------------------------------------------------------------------+
//----- Done
  return(rates_total);
}
//+------------------------------------------------------------------+

 
G001:
J'ai testé l'EA avec d'autres indicateurs et il fonctionne.
Peut-être que l'indicateur est le problème ?
Avec cet indicateur, il s'ouvre sur le premier tick.

Désolé, je ne sais pas où ajouter l'impression.

Exemple pour BUY_STOP, passe du rouge au gris.

Je n'ai pas trouvé de problème, tout fonctionne. J'ai pris les codes de la page 189.

 

Question sur la propriété du programme#property tester_file "" .

J'ai besoin de connecter beaucoup de fichiers à mon EA pour les tester, 3800 pour être exact.

Niveaux quotidiens des options pour plusieurs instruments uniquement pour cette année .

Quelle est la solution ?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Karlson: Question sur la propriété du programme#property tester_file "" .

J'ai besoin de connecter de nombreux fichiers à l'EA pour des tests, 3800 pour être exact. Niveaux quotidiens des options pour plusieurs instruments uniquement pour cette année. Quelle est la solution ?

A titre d'essai, il s'avère que toutes les informations contenues dans ces fichiers doivent être immuables (archivées). J'essaierais d'écrire deux fonctions : l'une réinitialise toutes les données de centaines de fichiers dans un seul fichier, l'autre lit ce fichier selon des règles bien définies. Avez-vous essayé de cette façon ?
 
Yedelkin:
A titre d'essai, il s'avère que toutes les informations contenues dans ces fichiers doivent être immuables (archivées). J'essaierais d'écrire deux fonctions : l'une réinitialise toutes les données de centaines de fichiers dans un seul fichier, l'autre lit ce fichier selon des règles bien définies. Avez-vous essayé de cette façon ?
Je ne l'ai pas encore essayé, mais l'idée de rassembler dans un seul fichier est compréhensible. Peut-être que les développeurs indiqueront une option - un moyen de connecter les données immuables d'un dossier.