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 !

[Supprimé]  
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.

[Supprimé]  
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.

[Supprimé]  
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é.