Errores, fallos, preguntas - página 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 lógica que ya existe está rota.

Esto es más interesante.

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

Si no cambiamos las llamadas, el comentario se sobrescribirá como antes.

Si pasamos explícitamente NULL, copiamos el comentario existente

 
Slava:

Se está violando la lógica que ya existe.

Nadie utiliza esa lógica. Razón de más para utilizarlo.

 
Slava:

La lógica que ya existe está rota.

Esto es más interesante.

Si no cambias los retos, el comentario se sobrescribirá como antes.

Si se pasa explícitamente NULL, se copia el comentario existente

Por favor, eche un vistazo y

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

hace 10 (!!!) intentos para cerrar una posición:( Tuve estas situaciones cuando depuré (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 línea resaltada es el segundo intento de cerrar una posición :) Como se puede ver en los registros, no fue del todo exitoso.

En este momento lo estoy utilizando:

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

Ya hay un intento de cerrar la posición por código. Parece correcto dejar que el usuario controle el hecho de cerrar la posición. 10 intentos no son la panacea

 
Slava:

La lógica que ya existe está rota.

Esto es más interesante.

Si no cambiamos las llamadas, el comentario se sobrescribirá como antes.

Si pasamos explícitamente NULL, copiamos el comentario existente

O tal vez sea más 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;
...

Entonces, quien lo necesite lo sobrescribirá con un valor vacío. Se copiará el valor por defecto.

 

Queridos desarrolladores

La terminal se actualizó en 1983. Hay algunos errores extraños en el probador al crear objetos gráficos (estoy creando líneas verticales y líneas de tendencia). En 1981 todo era normal.

Ahora recibo el error 4001.

Código de creación:

//+------------------------------------------------------------------+
//| Создаем трендовую линию на чарте                                                                                    |
//+------------------------------------------------------------------+
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));
  }
 
Además, los comentarios en el probador ya no se muestran.
 

Pregunta para los desarrolladores.

A la funciónmytrade.PositionClose(conststring symbol,ulong deviation=ULONG_MAX) de la biblioteca estándar le falta un parámetro de comentario:conststring comment="".

¿Es un descuido?

 

Parece más apropiado escribir aquí:

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

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