Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1115

 
Maxim Kuznetsov:

voir l'api d'oanda - si je ne me trompe pas dans l'image c'est PositionBook

Merci !

 
Artyom Trishkin:

Vous devez donc désactiver le graphique à défilement automatique. Et rappelez-vous que c'est une commande asynchrone.

Désactivé....

 
Сергей Таболин:

Désactivé....

Alors vous devez regarder dans votre propre code.

 

J'essaie de prendre les données de l'indicateur MA à partir de l'ancienne période dans MT5.

//OnInit
 if((slowMovingHandleHigherTF=iMA(_Symbol, HighMovingsTF, SlowMovingPeriod_HigherTF, 0, MA_Method, MA_Apply_To))==INVALID_HANDLE) {
      PrintFormat("Slow moving (HigherTF) handle troubles");
      return (INIT_FAILED);
   }
//OnCalculate
 if(!FillArrayFromBuffer(slowMovingHandleHigherTF,SlowValuesHigherTF,0,40)) Print("Beda");

Mais je reçois l'erreur 4806 (Requested data not found). Quand je le prends à partir de l'horizon temporel actuel, tout est OK. Il faut des données. Mais j'ai des problèmes avec le plus haut. Veuillez me conseiller sur la manière de le réparer.

 
Artyom Trishkin:

Alors vous devez regarder dans votre propre code.

Pouvez-vous me dire où je me trompe ?

void OnStart()
{
   ArraySetAsSeries(rates,true);
   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,false);
   

   for(int i = 0; i < in_range; i++)
   {

   // Тут рассчитываю X
      if(X)       {          ChartNavigate(ChartID(),CHART_END,-i);          if(MessageBox(ask,"ASK",MB_OKCANCEL) == IDOK)          {             ObjectCreate(ChartID(),"SigDN_"+IntegerToString(i),OBJ_VLINE,0,rates[i].time,rates[i].open);             //return;             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_COLOR,clrRed);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTABLE,true);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTED,false);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);             Print("SigDN_",i);          }       }    } }

J'ai lancé le script sur H2 au début de l'heure.

Comme je l'ai écrit précédemment, cela fonctionne bien, et puis, à partir d'un certain point, le graphique se positionne à la fin etMessageBox apparaît. Pourquoi répondre à une demande, si je ne peux pas voir le chiffre trouvé ?

 

2361
À partir de la période H1, une variable ou une fonction produit des valeurs étranges.

Print(_Period);
Print(Period());
H1
16385
16385
H4
16388
16388

etc.

 
Roman:

2361
À partir de la période H1, une variable ou une fonction produit des valeurs étranges.

etc.

Quelle est leur "étrangeté" ?

 
Artyom Trishkin:

Quelle est leur "étrangeté" ?

La variable _Period et Period() jusqu'à M30 inclus, produit la valeur en minutes.
Si la période est M1, alors 1
Si la période M2 alors 2
...
Si période M30 alors 30

Il est logique que la période horaire soit de 60 ans.
période de deux heures 120
trois heures 180
etc.

Mais à partir de H1 les mauvaises valeurs sont affichées.

 
Roman:

La variable _Period et la fonction Period(), jusqu'à M30 inclus, donnent la valeur en minutes.
Si période M1 alors 1
Si la période M2 alors 2
...
Si la période de M30 alors 30

Il est logique que la période horaire soit de 60 ans.
période de deux heures 120
trois heures 180
etc.

Mais à partir de H1 les mauvaises valeurs sont affichées.

EnumToString(Période())

 
Сергей Таболин:

EnumToString(Période())

L'aide indique qu'il faut renvoyer la valeur de l'intervalle de temps, et non l'identifiant converti avecEnumToString()
La variable _Period renvoie un int.
ENUM_TIMEFRAMES Period() implique également que int est retourné.