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

 
Alexey Viktorov:

Cela dépend de l'objectif de la mise à jour. Pourquoi ne pas simplement remplir le tableau ?

Quelle importance a l'objectif ? La question est de savoir pourquoi un événement aussi évident est si difficile à saisir, étant donné qu'il existe un grand nombre d'autres propriétés moins utilisées et nécessaires. Dans ce cas, l'objectif est la notification (alerte).

 
leonerd:

Quelle différence cela fait-il de savoir quelle est la cible ? La question est de savoir pourquoi un événement aussi évident est si difficile à saisir, alors qu'il existe de nombreuses autres propriétés moins utilisées et nécessaires. Dans ce cas, l'objectif est la notification (alerte).

C'est donc cet événement évident qui est mis en évidence dans le type de transaction. Essayez la bibliothèque de Trishkin dans 58 articles. Il y a peut-être une option simple.

 
в 58 ми статьях

Eh bien, merci.)

Je soupçonne qu'il tient son registre de la même façon.

Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния ORDER_STATE_STARTED versORDER_STATE_PLACED ou deORDER_STATE_PLACED versORDER_STATE_PARTIAL, etc.)


Il me suffirait de savoir que ce n'est pas le premier ORDER_STATE_PLACED sur un ticket de commande particulier.

Il s'avère que deux TRADE_TRANSACTION_ORDER_UPDATE interviennent lorsque la première commande est passée. Ici, et le troisième me conviendrait déjà comme un changement, qui dans mon cas n'est qu'un changement de prix. Ou le secondORDER_STATE_PLACED.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Vous devriez également vérifierORDER_TIME_SETUP. C'est nouveau à chaque fois ?
 
Suivi de l'exemple MT4 "STRINGS : ASCII CHARACTERS TABLE AND USE"

//+------------------------------------------------------------------+
//| StringLowerCase |
//+------------------------------------------------------------------+
string StringLowerCase(string str)
  {
   string s = str;
   int lenght = StringLen(str) - 1, symbol;
   while(lenght >= 0)
     {
      symbol = StringGetChar(s, lenght);
      if((symbol > 64 && symbol < 91) || (symbol > 191 && symbol < 224))
         s = StringSetChar(s, lenght, symbol + 32);// тут possible loss of data due to type conversion
      else
         if(symbol > -65 && symbol < -32)
            s = StringSetChar(s, lenght, symbol + 288);// тут possible loss of data due to type conversion
      lenght--;
     }
   return(s);
  }
//+------------------------------------------------------------------+
//| StringUpperCase |
//+------------------------------------------------------------------+
string StringUpperCase(string str)
  {
   string s = str;
   int lenght = StringLen(str) - 1, symbol;
   while(lenght >= 0)
     {
      symbol = StringGetChar(s, lenght);
      if((symbol > 96 && symbol < 123) || (symbol > 223 && symbol < 256))
         s = StringSetChar(s, lenght, symbol - 32);// тут possible loss of data due to type conversion
      else
         if(symbol > -33 && symbol < 0)
            s = StringSetChar(s, lenght, symbol + 224);// тут possible loss of data due to type conversion
      lenght--;
     }
   return(s);
  }

Si cela ne vous dérange pas, aidez-moi à le réparer...
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SGarnov:
J'ai fait l'exemple de MT4 "STRINGS : ASCII CHARACTERS TABLE AND HIS USE"


Si cela ne vous dérange pas, aidez-moi à le corriger...

StringSetChart() bool renvoie un bool. Et tu l'assignes à une variable de type chaîne... Si c'est la question.

 
Il est possible de créer dessymboles personnalisés sans utiliser le menu MT5, simplement en plaçant les bons fichiers dans les bons dossiers ?
 

Bonjour. J'ai écrit une fonction qui vérifie les conditions d'entrée dans une position.

Le problème est que si la condition (surlignée en jaune) n'est pas remplie, la fonction ne se termine pas mais passe à la condition suivante. Ainsi, le signal ne fonctionne pas correctement.

Que faut-il faire pour que la fonction cesse de fonctionner lorsque l'une des conditions n'est pas remplie - immédiatement après la condition incorrecte ?

bool BuySignal_new()
{
   double Sig_Up[];                 // динамический массив для хранения значений индикатора на покупку для каждого бара
   double Sig_Down[];               // динамический массив для хранения значений индикатора на продажу для каждого бара
   ArraySetAsSeries (Sig_Up,true);   // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатора
   ArraySetAsSeries (Sig_Down,true); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатора
   ResetLastError();
   double close = NormalizeDouble(iClose(_Symbol,_Period,1),Digits());
   double close_1 = NormalizeDouble(iClose(_Symbol,_Period,0),Digits());
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),Digits());
if(CopyBuffer(Handle_stepma_line,0,1,5,Sig_Up)==5 && CopyBuffer(Handle_stepma_line,1,1,4,Sig_Down)==4 )
  {
   Print("Данные скопированы. Ошибок нет.");
   
  } 
else
    {
     Print("Ошибка копирования. Нет данных");
     return(false);
    }

if (Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0])
  {
   Print("условие 1 - ок");
  }
else
    {
    Print("условие 1 НЕ выполненно");
    return(false);
    }
if (close < Sig_Up[1]&& Bid > Sig_Up[0])
  { 
   Print ("условие 2 - ок");
   return(true);
  }   
else
    {
    Print("условие 2 НЕ выполненно");
    return(false);
    }   
 
Sergey:

Que faut-il faire pour que, si l'une des conditions de la fonction n'est pas remplie, l'ensemble de la fonction s'arrête immédiatement après la condition incorrecte ?

Supprimez le branchement par ailleurs, vous pouvez essayer de cette façon :

   if(CopyBuffer(Handle_stepma_line, 0, 1, 5, Sig_Up) != 5)
   {
      Print("Ошибка копирования. Нет данных");
      return(false);
   }

   if(CopyBuffer(Handle_stepma_line, 1, 1, 4, Sig_Down) != 4)
   {
      Print("Ошибка копирования. Нет данных");
      return(false);
   }


   if(!(Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0]))
   {
      Print("условие 1 НЕ выполненно");
      return(false);
   }

   if (!(close < Sig_Up[1] && Bid > Sig_Up[0]))
   {
      Print("условие 2 НЕ выполненно");
      return(false);
   }
//--- если дошли сюда, то все условия выполнены
   return(true);
 
Igor Makanu:

enlever le branchement par l'autre, vous pouvez essayer comme ça :

Merci, je vais essayer.