Fehler, Irrtümer, Fragen - Seite 2380

 
bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = NULL)
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...
 
fxsaber:

Die bereits vorhandene Logik ist nicht mehr zeitgemäß.

Das ist noch interessanter.

bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = "")
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...

Wenn wir die Aufrufe nicht ändern, wird der Kommentar wie bisher überschrieben.

Wenn wir explizit NULL übergeben, kopieren wir den bestehenden Kommentar

 
Slava:

Es wird gegen die bereits bestehende Logik verstoßen.

Niemand benutzt diese Logik. Ein Grund mehr, sie zu nutzen.

 
Slava:

Die bereits vorhandene Logik ist nicht mehr zeitgemäß.

Das ist noch interessanter.

Wenn Sie die Herausforderungen nicht ändern, wird der Kommentar wie zuvor überschrieben.

Wenn explizit NULL übergeben wird, dann wird der vorhandene Kommentar kopiert

Bitte sehen Sie sich das an und

bool CTrade::PositionClose(const string symbol,const ulong deviation)

es macht 10 (!!!) Versuche , eine Position zu schließen:( Ich hatte solche Situationen beim Debuggen (Netting, Real, Opening):

2019.01.28 16:58:11.764 57384742        Si-3.19 buy     in      1.00    66492   98591318        -1.03   0.00    0.00            Price=66493
2019.01.28 17:01:14.586 57384818        Si-3.19 sell    out     1.00    66503   98591566        0.00    0.00    11.00           
2019.01.28 17:01:14.598 57384819        Si-3.19 sell    in      1.00    66502   98591567        -1.03   0.00    0.00            
2019.01.28 17:04:16.067 57385000        Si-3.19 buy     out     1.00    66514   98591891        0.00    0.00    -12.00          

die hervorgehobene Zeile ist der 2. Versuch, eine Position zu schließen :) Wie Sie aus den Protokollen ersehen können, war es nicht ganz erfolgreich

Im Moment verwende ich es:

bool CTrade::PositionClose(const ulong ticket,const ulong deviation)

Es gibt bereits einen Versuch, die Position per Code zu schließen. Es scheint richtig zu sein, dem Benutzer die Kontrolle über das Schließen der Position zu überlassen. 10 Versuche sind kein Allheilmittel

 
Slava:

Die bereits vorhandene Logik ist nicht mehr zeitgemäß.

Das ist noch interessanter.

Wenn wir die Aufrufe nicht ändern, wird der Kommentar wie bisher überschrieben.

Wenn wir explizit NULL übergeben, kopieren wir den bestehenden Kommentar

Vielleicht wird es aber auch bequemer sein.

bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = NULL)
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...

Derjenige, der sie benötigt, überschreibt sie dann mit einem leeren Wert. Der Standardwert wird übernommen.

 

Liebe Entwickler!

Das Terminal wurde auf den Stand von 1983 gebracht. Bei der Erstellung von grafischen Objekten (ich erstelle vertikale Linien und Trendlinien) treten im Tester einige seltsame Fehler auf. Im Jahr 1981 war alles normal.

Jetzt erhalte ich die Fehlermeldung 4001.

Erstellungscode:

//+------------------------------------------------------------------+
//| Создаем трендовую линию на чарте                                                                                    |
//+------------------------------------------------------------------+
void DrawTrendLine(const string id,// Строковый идентификатор
                   const datetime t1,         // Время первой точки линии
                   const datetime t2,         // Время второй точки линии
                   const double price,// Цена обеих точек линии
                   const color clr            // Цвет линии
                   )
  {
//--- Формируем имя линии
   const string name=_prefix+id+TimeToString(t1)+"_"+TimeToString(t2);
//--- Сбрасываем код последней ошибки
   ResetLastError();
//---
//Print( __FUNCTION__,": Создаем тренд-линию "+name+": t1 = "+TimeToString( t1 )+", t2 = "+TimeToString( t2 )+", price = "+DoubleToString( price ) );
//--- Создаем объект, проверяем создание
   if(ObjectCreate(0,name,OBJ_TREND,0,t1,price,t2,price))   // Если объект создан
     {
      //--- Меняем свойства линий
      ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(0,name,OBJPROP_BACK,true);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
      ObjectSetInteger(0,name,OBJPROP_RAY_LEFT,false);
      ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
     }
   else                                                 // Если объект не создан
   Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(t1)+", t2 = "+TimeToString(t2)+", price = "+DoubleToString(price));
  }
//+------------------------------------------------------------------+
//| Создаем вертикальную линию на чарте                              |
//+------------------------------------------------------------------+
void DrawVLine( const string id,         // Строковый идентификатор
               const datetime time      // Время
               )
  {
//--- Формируем имя линии
   const string name=_prefix+id+TimeToString(time);
//--- Сбрасываем код последней ошибки
   ResetLastError();
//--- Создаем объект, проверяем создание
   if(ObjectCreate(0,name,OBJ_VLINE,0,time,0))   // Если объект создан
     {
      //--- Меняем свойства линий
      ObjectSetInteger(0,name,OBJPROP_COLOR,_vLineClr);
      ObjectSetInteger(0,name,OBJPROP_BACK,true);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
     }
   else                                                 // Если объект не создан
   Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(time));
  }
 
Außerdem werden die Kommentare im Testgerät nicht mehr angezeigt.
 

Frage an die Entwickler.

Der Funktionmytrade.PositionClose(conststring symbol,ulong deviation=ULONG_MAX) der Standardbibliothek fehlt ein Kommentarparameter:conststring comment="".

Ist es ein Versehen?

 

Es scheint angemessener zu sein, hier zu schreiben:

https://www.mql5.com/ru/forum/302709#comment_10570043

Вопросы по проектам / папки Projects и Shared Projects
Вопросы по проектам / папки Projects и Shared Projects
  • 2019.02.08
  • www.mql5.com
Попытался начать работать с проектами, но что-то не ладится. Допустим, уже есть исходный файл с инклудами...
 
Entfernen Sie STATUS_TERMINAL_PATH aus der Dokumentation.