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

 
Iurii Tokman:

le code doit être inséré Alt+S
et où se trouve la fonction ?
comment l'avez-vous compilé ? aucune erreur ?

Son code fonctionne avec les ordres en attente et la fonction fonctionne avec les positions - il faut le modifier un peu.

 
Vitaly Muzichenko:

Son code fonctionne avec des ordres en attente, alors que la fonction fonctionne avec des positions - nous devons faire quelques ajustements.

Exactement, cela ne fonctionne qu'avec les ordres à cours limité sellstop et buystop. Que devez-vous corriger ?

 
sibiriyak73:

Tout à fait exact, seuls les ordres limites de vente et d'achat sont en cours de traitement. Qu'est-ce qui doit être réparé ?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг торгов сегодня.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isTradeToDay(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()<=6) { 
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 
Vitaly Muzichenko:

Cette fonction s'applique-t-elle à l'achat ou à l'achat et à la vente ?

Dois-je conserver les 6 types de commande surlignés en jaune ?

Il a été compilé sans erreur, mais il n'ouvre pas les commandes.

 
sibiriyak73:

Cette fonction s'applique-t-elle à l'achat ou à l'achat et à la vente ?

Dois-je conserver les 6 types de commande surlignés en jaune ?

Il compile correctement mais n'ouvre pas les commandes

C'est pour tous les types. Ça devrait fonctionner si vous l'utilisez correctement.


P.S. Essayez d'analyser logiquement pourquoi cela pourrait ne pas fonctionner et ce qui l'empêche de le faire.

 

Et il est probablement préférable d'insérer la fonction une seule fois, peu importe le type qui est ou qui a été sur le marché de toute façon.

if(Hour()==Nac && !isTradeToDay(Symbol()))
 {
   if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
   {
     int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем
   }

   if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
   {
     int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем
   }
 }
 
Bonne année Bulls à tous ! Croissance haussière à tous)

Pouvez-vous me dire comment calculer la valeur du point du jour (ou de l'heure) précédent entre le prix le plus bas et le prix le plus haut.
 
Порт-моне тв:
Bonne année Bulls à tous ! Croissance haussière à tous)

Pouvez-vous me dire comment calculer la valeur du point du jour (ou de l'heure) précédent entre le prix le plus bas et le prix le plus haut.
( High[1] - Low[1] ) / Point()
 
Bonjour à tous !

Pouvez-vous me dire ce que signifie ce code ou plus précisément comment il fonctionne en principe ? Dans ce cas, la substitution de macro est utilisée, et c'est la principale condition pour ouvrir des ordres. PS. La variable globale n'est modifiée nulle part.

#define  MARKET_WATCH          (0)

bool  Gl_Var_MarketWatch    =  MARKET_WATCH;  // глобальная переменная

if(Gl_Var_MarketWatch) ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,0,0,co,mn,0,clOpen);
      else ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,sl,tp,co,mn,0,clOpen);
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression может...
 
Tom Seljakin:
Bonjour à tous !

Pouvez-vous me dire ce que signifie ce code ou plus précisément comment il fonctionne en principe ? Dans ce cas, la substitution de macro est utilisée, et c'est la principale condition pour ouvrir des ordres. PS. La variable globale n'est modifiée nulle part.

peut-être que c'est

MARKET_WATCH,                               // окна "Обзор рынка"