Símbolos personalizados. Errores, fallos, preguntas, sugerencias. - página 9

 
Andrey Khatimlianskii:

Se ha construido en 2009 y en 2025 en el antiguo emplazamiento.

Gracias. He probado las builds 1970+ - todas tienen este error hasta que vuelves a crear los personajes personalizados, permaneciendo dentro de la misma cuenta tore.

 
fxsaber:

2009:

2033:

 

Bug 10.

El símbolo no se puede borrar.

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  MathSrand((uint)TimeLocal());
  
  const string Name = _Symbol + (string)MathRand();

  PRINT(CustomSymbolCreate(Name));

  PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки удаление работает.
  
  PRINT(CustomSymbolDelete(Name)); // false
  PRINT(GetLastError());  
}


CustomSymbolCreate(Name) = true
CustomRatesDelete(Name,0,0) = 0
CustomSymbolDelete(Name) = false
GetLastError() = 5306
 

Bug 11.

CustomTicksAdd no forma barras.

// Проигрываем тиковую историю через таймер.
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnInit()
{
  if (EventSetMillisecondTimer(20)) // С такой частотой будем пробрасывать тики
    MathSrand((uint)TimeLocal());  
}

void OnTimer()
{
  static const string Name = _Symbol + (string)MathRand();
  
  static bool FirstRun = true;
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ.
  
    PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки работает.    
    PRINT(SymbolSelect(Name, false));     // https://www.mql5.com/ru/forum/304554/page9#comment_11680616
    
    PRINT(CustomSymbolDelete(Name));                // Убили.
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Воскресили.
    
    if (SymbolSelect(Name, true)) // Поместили в Обзор рынка
    {
      ChartOpen(Name, PERIOD_M1);            // Открыли чарт
      PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (TimeCurrent() - 3600) * 1000)); // Взяли тики (последний час) для проброса
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
  {
    MqlTick Tick[1];
    
    // Пробрасываем по тику
    Tick[0] = Ticks[Pos++];
    CustomTicksAdd(Name, Tick);
  }
}

Las barras no se formarán en el gráfico abierto. En Market Watch, los ticks se actualizan.

 

Bug 12.

Al crear un símbolo personalizado desde cero (mediante CTRL+U, por ejemplo), el volumen máximo está prescrito de tal manera que el probador no puede calcular su beneficio.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnInit()
{
  // Именно такой макс. объем автоматом прописывается при создании кастомного символа с нуля.
  const double Lot = 1 e11; // SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)
  
  OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0); // После закрытия этой позиции ее профит будет нулевым.
}
 
Por alguna razón, los desarrolladores no se hacen cargo de los errores reproducibles en este hilo.
 
fxsaber:
Por alguna razón los desarrolladores no se ponen las pilas con los fallos reproducibles en este hilo.
Probablemente deberíamos invitarlos a entrar
 

invitó a Slava Stringo.

introduzco un instrumento personalizado en este campo (anexo 1). se abre sin comillas. si lo abro a través del menú, todo está bien.

El anexo 2 es sólo una palabra.

anexo 3: harto de este botón, nadie lo necesita. haz una opción para ocultarlo. hay una ayuda. hagamos una encuesta.

cpsb

Archivos adjuntos:
x34zq9.PNG  2 kb
1wvlwh2.PNG  10 kb
qfd9jf.PNG  2 kb
 
superman:

invitó a Slava Stringo.

introduzco un instrumento personalizado en este campo (anexo 1). se abre sin comillas. si lo abro a través del menú, todo está bien.

El anexo 2 es sólo una palabra.

No es así como invitan.

Así que: @Eslava

 
fxsaber:

Bug 07.

El probador forma barras por Último para intercambiar símbolos personalizados con el precio de oferta de la construcción de la barra.

Por lo tanto, el historial de barras en el Terminal y en el Probador de Estrategias es completamente divergente. Y si alguien utiliza barras en TS (indicadores, por ejemplo), el resultado del backtest es aleatorio para él/ella.

Muestra la especificación del símbolo personalizado.

Y dar las garrapatas personalizadas.

Para arreglar algo, primero hay que reproducirlo