Erreurs, bugs, questions - page 355

 
Est-ce toujours la même chose pour les agents que sur l'ordinateur principal ?
 
dimonsky:
Les agents ont-ils toujours la même histoire que l'ordinateur central ?
L'idée est oui, mais il y a des problèmes avec la synchronisation de l'historique et quelques autres choses.
 

Je n'ai pas lu tout le fil de discussion, alors veuillez m'excuser si cela s'est déjà produit.

1. sera-t-il possible de choisir une heure (à ne pas confondre avec une date) pour commencer et arrêter les tests.

2. Comment, dans le testeur, visualiser les transactions sur d'autres paires, à l'exception des paramètres (pour les multidevises - pour un instrument - "ouvrir le graphique" dans les résultats du test, et pour les autres).

 
Retsam:

Je n'ai pas lu tout le fil de discussion, alors veuillez m'excuser si cela s'est déjà produit.

1. sera-t-il possible de choisir une heure (à ne pas confondre avec une date) pour commencer et arrêter les tests.

2. Comment, dans le testeur, visualiser les transactions sur d'autres paires, à l'exception des paramètres (pour les multidevises - pour un instrument - "ouvrir le graphique" dans les résultats du test, et pour d'autres).

1 Cette fonction n'existe pas - sauf si vous la demandez.

2 De plus, cela n'existe pas,

 

Bonjour !

MT 5.425 Windows 7 x64

Je lance l'indicateur dans une sous-fenêtre (sous-fenêtre 1), j'y place un graphique en utilisant un buffer. Je veux obtenir le prix minimum et maximum de la fenêtre avec ChartGetDouble(0,CHART_PRICE_MAX,1) et ChartGetDouble(0,CHART_PRICE_MIN,1), respectivement.

La sortie est 0, le minimum et le maximum de la fenêtre principale sont affichés correctement (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)). ChartRedraw(0) ne fonctionne pas. Si le graphique commence à défiler avec la souris, les valeurs mourront - il commence à s'afficher correctement.

Cela se produit lorsque je le démarre pour la première fois, ou lorsque je modifie les valeurs dans les propriétés de l'indicateur.

Peut-être que c'est une erreur, ou peut-être que je fais quelque chose de mal.

Quelle est la signification de cette entrée dans le fichier d'aide ?

CHART_PRICE_MINModificateur minimumdu doublement de la carte- numéro de sous-fenêtre

CHART_PRICE_MAX Maximum du graphiquedouble modificateur r/o - numéro desous-fenêtre

Merci !

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Toutes les fenêtres du tableau sont numérotées à partir de zéro. 0 - fenêtre principale du graphique, 1 - fenêtre du premier indicateur, qui est affiché dans une fenêtre séparée. Et ainsi de suite.
 

Je n'arrive pas à comprendre ce qui ne va pas :

si les paramètres de deux indicateurs sont les mêmes, alors l'EA ouvre seulement un Achat, mais si les paramètres sont différents, alors il n'est pas clair comment il ferme la position.......

En théorie, il devrait clôturer les transactions par le deuxième indicateur, mais ce n'est pas le cas. Le code lui-même :

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM=14;
input int TriX_PARAM_Close=50;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit()
  {

   TriXHandle=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM,PRICE_WEIGHTED);
   TriXHandle_Close=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM_Close,PRICE_WEIGHTED);
   return(0);
  }

void OnTick()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if(myposition.Select(_Symbol)==true) { if(myposition.Type()==POSITION_TYPE_BUY) Buy_opened=true;  if(myposition.Type()==POSITION_TYPE_SELL) Sell_opened=true;}

//Закрываем позицию
   if(Buy_opened==true || Sell_opened==true)
     {
      ArraySetAsSeries(TriX_Close,true);
      CopyBuffer(TriXHandle_Close,0,0,4,TriX_Close);

      if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);

     }

//Открываем позицию
   if(Buy_opened==false && Sell_opened==false)
     {
      ArraySetAsSeries(TriX,true);
      CopyBuffer(TriXHandle,0,0,4,TriX);
      
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

     }
  }
 
Puis-je faire en sorte que le terminal ne soit pas mis à jour pendant l'optimisation ?
 
Jager:
Est-il possible d'empêcher la mise à jour du terminal pendant l'optimisation ?

Donc si le terminal est en cours d'exécution et n'a pas été mis à jour depuis 5-10 minutes,

Il ne sera pas mis à jour et même s'il l'est, les nouveaux paramètres ne seront pas enregistrés.

Avant de redémarrer le terminal, vous pouvez bien sûr désactiver l'Internet

 
Mr.FreeMan:

Je n'arrive pas à comprendre ce qui ne va pas :

si deux indicateurs ont les mêmes paramètres, alors l'EA n'ouvre que l'Achat, et si les paramètres sont différents, alors il n'est pas clair comment il ferme les positions.......

En théorie, il devrait clôturer les transactions par le deuxième indicateur, mais ce n'est pas le cas. Le code lui-même :

Le code lui-même : Au début, vous devez marquer les tableaux différemment.

c'est mieux). changez-le :

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,4,TriX);

sur ces lignes

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,3,TriX);

Changez aussi

 if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

à ça.

 if(Sell_opened=true && TriX_Close[0]>TriX_Close[1] && TriX_Close[1]<TriX_Close[2]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[0]<TriX_Close[1] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose(_Symbol);
      if(TriX[0]>TriX[1] && TriX[1]<TriX[2]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[0]<TriX[1] && TriX[1]>TriX[2]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);