Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1272

 
Alexey Viktorov:

Das hängt davon ab, was der Zweck des Abfangens der Aktualisierung ist. Wie wäre es, wenn Sie das Feld einfach überfüllen?

Was spielt es für eine Rolle, was der Zweck ist? Es stellt sich die Frage, warum ein so offensichtliches Ereignis so schwer zu erfassen ist, wo es doch eine ganze Reihe anderer, weniger genutzter und benötigter Eigenschaften gibt. In diesem Fall ist das Ziel die Benachrichtigung (Alarm).

 
leonerd:

Was macht es für einen Unterschied, was das Ziel ist? Es stellt sich die Frage, warum ein so offensichtliches Ereignis so schwer zu erfassen ist, obwohl es eine Menge anderer, weniger genutzter und benötigter Eigenschaften gibt. In diesem Fall ist das Ziel die Benachrichtigung (Alarm).

Dieses offensichtliche Ereignis wird also in der Transaktionsart hervorgehoben. Versuchen Sie Trishkins Bibliothek mit 58 Artikeln. Vielleicht gibt es eine einfache Option.

 
в 58 ми статьях

Vielen Dank ))

Ich vermute, dass er sein Register auf dieselbe Weise führt.

Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния ORDER_STATE_STARTED zuORDER_STATE_PLACED oder vonORDER_STATE_PLACED zuORDER_STATE_PARTIAL, usw.).


Es würde ausreichen, wenn ich wüsste, dass dies nicht der erste ORDER_STATE_PLACED für ein bestimmtes Auftragsticket ist.

Es stellt sich heraus, dass zwei TRADE_TRANSACTION_ORDER_UPDATE kommen, wenn der erste Auftrag erteilt wird. Hier, und das dritte würde mir schon als Änderung passen, die in meinem Fall nur eine Preisänderung ist. Oder der zweiteORDER_STATE_PLACED.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Sie sollten auchORDER_TIME_SETUP überprüfen. Ist sie jedes Mal neu?
 
Folgen Sie dem MT4 Beispiel "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);
  }

Wenn es Ihnen nichts ausmacht, helfen Sie mir bitte, es zu reparieren...
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SGarnov:
Ich habe das Beispiel aus MT4 "STRINGS: ASCII CHARACTERS TABLE AND HIS USE"


Wenn es Ihnen nichts ausmacht, bitte helfen Sie mir, es zu beheben...

StringSetChart() bool gibt ein bool zurück. Und Sie weisen es einer String-Variablen zu... Wenn das die Frage ist.

 
Könnenbenutzerdefinierte Symbole erstellt werden, ohne das MT5-Menü zu benutzen, indem man einfach die richtigen Dateien in die richtigen Ordner einfügt?
 

Hallo. Ich habe eine Funktion geschrieben, die die Bedingungen für die Eingabe einer Position überprüft.

Das Problem besteht darin, dass die Funktion nicht abbricht, wenn die (gelb markierte) Bedingung nicht erfüllt ist, sondern zur nächsten Bedingung übergeht. Daher funktioniert das Signal nicht richtig.

Was ist zu tun, damit die Funktion aufhört zu arbeiten, wenn eine der Bedingungen nicht erfüllt ist - unmittelbar nach der falschen Bedingung?

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:

Was ist zu tun, damit, wenn eine der Funktionsbedingungen nicht erfüllt ist, die gesamte Funktion unmittelbar nach der fehlerhaften Bedingung beendet wird?

Entfernen Sie die Verzweigung durch andere, können Sie es auf diese Weise versuchen:

   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:

die Verzweigung durch die andere zu entfernen, können Sie es auf diese Weise versuchen:

Danke, ich werde es ausprobieren.