Errori, bug, domande - pagina 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:

La logica che già esiste è rotta.

Questo è più interessante.

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

Se non cambiamo le chiamate, il commento sarà sovrascritto come prima.

Se passiamo esplicitamente NULL, copiamo il commento esistente

 
Slava:

La logica che già esiste viene violata.

Nessuno usa questa logica. Tanto più che è falso.

 
Slava:

La logica che già esiste è rotta.

Questo è più interessante.

Se non cambiate le sfide, il commento sarà sovrascritto come prima.

Se passa esplicitamente NULL, allora copia il commento esistente

Per favore, date un'occhiata e

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

fa 10 (!!!) tentativi per chiudere una posizione:( Ho avuto queste situazioni durante il debugging (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          

la linea evidenziata è il 2° tentativo di chiudere una posizione :) Come potete vedere dai log non ha avuto completamente successo

Al momento lo sto usando:

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

C'è già un tentativo di chiudere la posizione per codice. Sembra corretto lasciare all'utente il controllo della chiusura della posizione. 10 tentativi non sono una panacea

 
Slava:

La logica che già esiste è rotta.

Questo è più interessante.

Se non cambiamo le chiamate, il commento sarà sovrascritto come prima.

Se passiamo esplicitamente NULL, copiamo il commento esistente

O forse sarà più conveniente.

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;
...

Poi chiunque ne abbia bisogno lo sovrascriverà con un valore vuoto. Il valore predefinito sarà copiato.

 

Cari sviluppatori!

Il terminale è stato aggiornato al 1983. Ci sono alcuni strani errori nel tester quando si creano oggetti grafici (sto creando linee verticali e linee di tendenza). Nel 1981 tutto era normale.

Ora ottengo gli errori 4001.

Codice di creazione:

//+------------------------------------------------------------------+
//| Создаем трендовую линию на чарте                                                                                    |
//+------------------------------------------------------------------+
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));
  }
 
Inoltre, i commenti nel tester non vengono più visualizzati.
 

Domanda per gli sviluppatori.

La funzionemytrade.PositionClose(conststring symbol,ulong deviation=ULONG_MAX) della libreria standard manca di un parametro di commento:conststring comment="".

È una svista?

 

Sembra più appropriato scrivere qui:

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

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