Errores, fallos, preguntas - página 2218

 
fellow:

¿qué son esos números entre comillas?

probablemente el valor del campo

 
Georgiy Merts:

Exactamente.

En mi opinión, todas las partes estructurales de los programas deberían convertirse en bloques independientes de la plataforma (las interfaces virtuales, en mi opinión, son muy adecuadas para ello), de modo que los cambios en las plataformas afecten a pequeñas áreas aisladas de código. Además, existe la ventaja de poder conectar nuevas plataformas.

En cuanto a las nuevas i-Funciones, sólo veo una: buscar un bar por una hora determinada. Quizás esta función funcione más rápido que la mía. El resto -estoy seguro- no dará un aumento de velocidad en comparación con el mío, lo que significa que uno no busca lo bueno de lo malo.

Hace tiempo que escribí mi propia biblioteca sobre barras y es poco probable que utilice las innovaciones

 
Alexey Volchanskiy:

Hace tiempo que escribí mi biblioteca en barras y es poco probable que utilice innovaciones

La búsqueda nativa de la barra por tiempo puede ser realmente más rápida.

Ahora se limita a calcular el índice de barras requerido por el tiempo de la primera barra, la última barra y el tiempo requerido, con la corrección posterior.

Yo también utilizaba la búsqueda binaria, pero el cálculo directo con corrección resultó ser más rápido.

Y los desarrolladores pueden tener un índice que encuentre la barra correcta mucho más rápido que estas dos opciones.

 
fellow:

¿qué son esos números entre comillas?

una cadena es una matriz uchar

Entre comillas hay un carácter, a la izquierda de las comillas hay un código de carácter.


más precisamente :

void OnStart()
  {
   string s;
   uchar u[1];
   for(int i=32; i<=255; i++)
     {
      u[0]=(uchar)i;
      if(i%16==0) s="";
      s+=IntegerToString(u[0],3)+"-"+CharArrayToString(u)+"  ";
      if (i==152) s+=" ";
      if(i%16==15)  Print(s);
     }
  }
 

que actualizó a 1860, ¿confirma el problema indicado anteriormente por varios usuarios durante las pruebas?

porque es la segunda vez que el broker Otkritie envía esta actualización ))

 
Vitaly Muzichenko:

Si usas software libre, entonces mantenlo actualizado, y si hay anuncios en el futuro, también está bien (software libre). Nadie te debe nada.

El software no es gratuito: le cuesta mucho dinero al corredor. Yo, como comerciante, pago al corredor una comisión, de la que se pagan los promotores. Soy un comerciante y quiero que me traten como es debido.

No me importan las funciones (al diablo con ellas - las reescribí), pero el probador comenzó a fallar y a estrellarse cada 2-3 ejecuciones, podrías haber subido una versión estable

 
Por lo menos, toma el hecho de que en 10 años nunca enseñaron al software a calcular correctamente las detracciones. Tuve que escribir todo yo mismo
 
// Воспроизведение ситуации, когда OrderSend успешно выполнилась, но ордера нет ни среди живых, ни среди мертвых.

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
/*
  // Посылаем поочередно ордера на открытие/закрытие позиций
  while (!IsStopped() &&
         (OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0) != -1) &&
         OrderSelect(0, SELECT_BY_POS) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ;
*/

  MqlTradeResult Result;
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_DEAL;
  Request.symbol = _Symbol;
  
  do
  {
    Request.position = PositionSelect(Request.symbol) ? PositionGetInteger(POSITION_TICKET) : 0;  
    Request.type = Request.position ? (ENUM_ORDER_TYPE)(1 - PositionGetInteger(POSITION_TYPE)) : ORDER_TYPE_SELL;
    Request.price = Request.position ? PositionGetDouble(POSITION_PRICE_CURRENT) : Bid;
    Request.volume = Request.position ? PositionGetDouble(POSITION_VOLUME) : 1;
          
  } // Посылаем поочередно ордера на открытие/закрытие позиций
  while (!IsStopped() && (OrderSend(Request, Result) ? OrderSelect(Result.order) || HistoryOrderSelect(Result.order) : true));
  
  PRINT(Result.order);
  PRINT(OrderSelect(Result.order));
  PRINT(HistoryOrderSelect(Result.order));
}


Resultado enForexTimeFXTM-Demo01

Result.order = 2210942086
OrderSelect(Result.order) = false
HistoryOrderSelect(Result.order) = false


El script abre y cierra posiciones hasta que detecta una "orden fantasma", ni entre las actuales ni en el historial. ¿Debo considerarlo un error o una característica de la plataforma?


El guión está escrito de tal manera que pueden abrirse varios puestos debido a este matiz. Pero no impide que se reciba una "orden fantasma".

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.02.08
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Lo mismo ocurrió en BCS forex hace un año, después de que la dtz cambiara algo en su asesor
 

Hola. Hoy he actualizado a la versión 1860 y mientras optimizaba el Asesor Experto me he encontrado con este problema:

Retraso en la optimización

El retraso entre pases es de 1 minuto. ¿Puede indicar cuál puede ser el problema?

p.d. Antes de la actualización todo funcionaba como un reloj.

Razón de la queja: