Questions des débutants MQL5 MT5 MetaTrader 5 - page 1341

 
voir ce que dit le retcode après avoir envoyé la commande
 
Fast235 #:
voir ce que le retcode dit après l'envoi de la commande

Merci.

10018

COMMERCE_RETCODE_MARCHÉ_FERMÉ

Le marché est fermé.

Cela signifie qu'il y a un problème avec le courtier.

 

Salutations, s'il vous plaît ne me donnez pas trop de coups de pied)
J'ai un EA. Je veux y implémenter la fonction d'ouverture d'une position, si sur plusieurs paires de devises, une barre d'indice 1, a la même direction (haussière ou baissière).
J'essaie de le faire avec iclose et iopen.

Все происходит в bool-ой функцие.
Хотел реализовать конструкцию следующего вида:
if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Но ничего не получилось, и открываются позиции при любой комбинации баров с индексом 1.


Но работает следующая конструкция.

if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;

Тут советник правильно находит комбинацию из баров. Но таким способом можно искать либо комбинации из бычьих баров, либо медвежьих.


Ибо код такого вида не работает.
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

И такого тоже)
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
   return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}


Quelle estdonclabonne façon derechercher des combinaisons de barres baissières et haussières en même temps ? Encore une fois, ne le frappez pas trop fort).

 
Scarick #:

Salutations, s'il vous plaît ne me donnez pas trop de coups de pied)
J'ai un EA. Je veux y implémenter la fonction d'ouverture d'une position, si sur plusieurs paires de devises, une barre d'indice 1, a la même direction (haussière ou baissière).
J'essaie de le faire avec iclose et iopen.

if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Quelle estdonclabonne façon derechercher des combinaisons de barres baissières et haussières en même temps ? Encore une fois, ne me frappez pas avec un coup de poing).

UtilisezCopyRates, et assurez-vous de contrôler la quantité commandée et la quantité reçue. Voici un exemple :

   MqlRates rates_current[],rates_eurgbp[],rates_eurjpy[];
   ArraySetAsSeries(rates_current,true);
   ArraySetAsSeries(rates_eurgbp,true);
   ArraySetAsSeries(rates_eurjpy,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_current)!=count)
      return;
   if(CopyRates("EURGBP",Period(),start_pos,count,rates_eurgbp)!=count)
      return;
   if(CopyRates("EURJPY",Period(),start_pos,count,rates_eurjpy)!=count)
      return;
//---
   bool signal_buy=false,signal_sell=false;
   if((rates_current[1].open>rates_current[1].close) && (rates_eurgbp[1].open>rates_eurgbp[1].close) && (rates_eurjpy[1].open>rates_eurjpy[1].close))
     {
      signal_buy=true;
      signal_sell=false;
     }
   else
     {
      if((rates_current[1].open<rates_current[1].close) && (rates_eurgbp[1].open<rates_eurgbp[1].close) && (rates_eurjpy[1].open<rates_eurjpy[1].close))
        {
         signal_buy=false;
         signal_sell=true;
        }
     }
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Bonjour à tous !

Situation.

Le conseiller expert est écrit, disons, sur muwings. Lorsque vous avez fini de le tester dans le testeur, les manœuvres utilisées (avec les paramètres utilisés) apparaissent dans la fenêtre. C'est bon.

Question.

Mais lorsque cette EA est également téléchargée sur le marché et qu'un utilisateur télécharge la démo, celle-ci apparaîtra-t-elle également après la fin du test ? Ou est-ce que mql a une politique de confidentialité à cet égard ?


Конечно, можно самому заморочиться и проверить. Но те кто, заливал продукты, поймут, что лучше просто спросить)  

 
Anton Iudakov #:

Bonjour à tous !

Situation.

Le conseiller expert est écrit, disons, sur muwings. Lorsque vous avez fini de le tester dans le testeur, les manœuvres utilisées (avec les paramètres utilisés) apparaissent dans la fenêtre. C'est bon.

Question.

Mais lorsque cette EA est également téléchargée sur le marché et qu'un utilisateur télécharge la démo, celle-ci apparaîtra-t-elle également après la fin du test ? Ou est-ce que mql a une politique de confidentialité à cet égard ?


Bien sûr, il est plus facile de demander, mais tous ceux qui ont téléchargé un EA sur le marché ne l'ont pas vérifié par la suite.

En fait, quelle différence cela fait-il de savoir où le dossier de l'EE a été obtenu ? Il fonctionnera de la même manière, qu'il ait été téléchargé par un développeur ou crypté sur le marché...

 
Anton Iudakov #:

Bonjour à tous !

Situation.

Le conseiller expert est écrit, disons, sur muwings. Lorsque vous avez fini de le tester dans le testeur, les manœuvres utilisées (avec les paramètres utilisés) apparaissent dans la fenêtre. C'est bon.

Question.

Mais lorsque je télécharge le même EA sur le marché et qu'un utilisateur télécharge la démo, ces données apparaîtront-elles également à la fin du test ? Ou est-ce que mql a une politique de confidentialité à cet égard ?


TesterHideIndicators
 
Pouvez-vous me dire comment, après avoirtesté un EA dans MQL5, faire apparaître n'importe laquelle de mes statistiques dans une fenêtre pop-up lorsque la souris est au-dessus des flèches ?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

Aidez-moi à réparer l'indicateur. Il dessine un échelon/une grille de prix à partir d'une valeur spécifiée. Le problème est que lorsque je le supprime, les lignes restent sur le graphique. De même, je ne peux pas ajouter un deuxième indicateur de ce type au graphique. En général, comment le faire disparaître complètement du graphique pour que je puisse lancer le même indicateur sur le graphique avec d'autres valeurs.

#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots   0
//--- входные параметры 
input int count = 500;      //количество линий вверх вниз от цены
input int step  = 100;     //шаг линий 
input double pr = 1.1;  //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine(const string name="HLine",double price=0)
  {
//--- создадим горизонтальную линию 
   if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clrDodgerBlue);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
   return(true);
  }
//+------------------------------------------------------------------+
//| Custom indicator 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[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for(int i=0;i<=count;i++)
     {
      HLine("HLine"+(string)i,price+step*i*_Point);
      HLine("HLine"+(string)(i+count+1),price-step*i*_Point);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


 
Green handsome #:

Aidez-moi à réparer l'indicateur. Il dessine un échelon/une grille de prix à partir d'une valeur spécifiée. Le problème est que lorsque je le supprime, les lignes restent sur le graphique. De même, je ne peux pas ajouter un deuxième indicateur de ce type au graphique. En général, comment le faire disparaître complètement du graphique, de sorte qu'il soit possible d'ajouter le même indicateur sur le graphique avec des valeurs différentes.

Dans OnDeinit, vous devez faireObjectsDeleteAll- supprimer par préfixe (dans votre cas, le préfixe est "HLine").

int  ObjectsDeleteAll(
   long           chart_id,   // идентификатор графика
   const string     prefix,   // префикс имени объекта
   int       sub_window=-1,   // индекс окна
   int      object_type=-1    // тип объекта для удаления
   );

Документация по MQL5: Графические объекты / ObjectsDeleteAll
Документация по MQL5: Графические объекты / ObjectsDeleteAll
  • www.mql5.com
ObjectsDeleteAll - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Raison: