Librerías: Symbol - página 11

 

La impugnación

CLONE(SYMBOL_FORMULA)

es cuestionable. Normalmente los simbolos personalizados en MQL5 calculan barras y ticks por si mismos, y transferir la formula hace imposible gestionar un nuevo simbolo. La idea (fix-request) es construir un símbolo personalizado a partir de un sintético con una fórmula.

Ahora he comentado esta clonación, pero a pesar de que la fórmula ahora no es visible en las propiedades, el símbolo personalizado resultante parece clonar las barras sintéticas de alguna forma. No entiendo lo que está pasando todavía.

ZЫ. He eliminado mi programa generador, pero el símbolo personalizado generado por él sigue actualizándose por ticks sincrónicamente con el sintético en base al cual fue creado. Poltergeist. Hay un fallo en el terminal.

 
Stanislav Korotky #:

El reto es cuestionable. Normalmente los simbolos personalizados en MQL5 calculan barras y ticks por si mismos, y transferir la formula hace imposible gestionar un nuevo simbolo. La idea (fiche-request) es construir un símbolo personalizado a partir de un sintético con una fórmula.

De hecho, puede que no merezca la pena hacer una clonación completa.

Ahora he comentado esta clonación, pero aunque la fórmula ya no es visible en las propiedades, el símbolo personalizado resultante parece seguir clonando las barras sintéticas de alguna forma. Todavía no entiendo qué está pasando.

ZЫ. He eliminado mi programa generador, pero el símbolo personalizado generado por él sigue actualizándose por ticks sincrónicamente con el sintético en base al cual fue creado. Poltergeist. Hay un fallo en el terminal.

Desgraciadamente, hay muchos fallos.

 

@fxsaber

A veces después de reiniciar el terminal el probador deja de abrir posiciones en un símbolo personalizado.

O cuenta cero beneficio.

¿A qué puede deberse?

Archivos adjuntos:
4y48yl.PNG  32 kb
y4xlvu2.PNG  35 kb
 

Mira las monedas del símbolo ANTES y DESPUÉS del reinicio del Terminal...

Una vez tuve que escribir un Servicio para restaurar automáticamente las personalizadas.

 
fxsaber #:

Mira las divisas del símbolo ANTES y DESPUÉS de reiniciar el Terminal....

Una vez tuve que escribir un Servicio para restaurar automáticamente las personalizadas.

Ahora aunque borre todos los símbolos personalizados creados de la terminal y borre la carpeta con las bases personalizadas, se sigue creando un símbolo personalizado fallido.

Creo un símbolo personalizado con este código

// Crear una copia del símbolo para acelerar el Probador
#property script_show_inputs

#include <Symbol.mqh>

void OnStart()
{
  const SYMBOL Symb("TESTER_" + _Symbol); // Creado un símbolo

  if (Symb.IsExist()) // Si se crea el símbolo
  {
    Symb = _Symbol; // Copiar todas las propiedades y el historial de barras (+ historial de ticks si es personalizado) del símbolo principal - clonar

    // Hacer que la moneda del símbolo sea la moneda de la cuenta
    Symb.SetProperty(SYMBOL_CURRENCY_PROFIT, AccountInfoString(ACCOUNT_CURRENCY));
    Symb.SetProperty(SYMBOL_CURRENCY_MARGIN, AccountInfoString(ACCOUNT_CURRENCY));

    if (Symb.On()) // Incluido en la vigilancia del mercado
      ChartOpen(Symb.Name, PERIOD_CURRENT); // Abrir un nuevo gráfico de símbolos
  }
}

Si su servicio es la solución al problema - por favor comparta

 

Ahora he instalado terminal en una nueva virtualización y el problema es el mismo.

Tal vez hay algo en las últimas versiones ?

 

Creo que he encontrado el problema

Si crea un símbolo con el nombre

EURUSD_1

todo va bien.

Si crea un símbolo con el nombre

1_EURUSD

Entonces ocurre el infierno.

Archivos adjuntos:
1.PNG  90 kb
2.PNG  91 kb
 
EgorKim símbolos personalizados después de recargar Terminal.
// El servicio corrige las monedas de todos los caracteres personalizados.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
  return(SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && 
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_BASE, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_MARGIN, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_PROFIT, Currency));
}

void CorrectSymbols( void )
{
  const string Currency = AccountInfoString(ACCOUNT_CURRENCY);
  
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
    CorrectCurrency(SymbolName(i, false), Currency);
    
  return;
}

void OnStart()
{
  CorrectSymbols();
}
 
EgorKim #:

1_EURUSD

entonces pasa lo que pasa.

Esto es si el símbolo tiene margen calculado como en Forex, en otras variantes de cálculo de margen el símbolo de usuario puede llamarse como quieras.