Preguntas de un "tonto" - página 40

 

Por favor, explique por qué ninguno de los EAs en MetaTrader 5 están siendo probados en el probador de estrategias. Presiono el botón de inicio y no pasa nada. Por favor, explíquelo.

 
PATRIOT:

Por favor, explique por qué ninguno de los EAs en MetaTrader 5 están siendo probados en el probador de estrategias. Presiono el botón de inicio y no pasa nada. Por favor, explíquelo.

Busca en el libro de registro (para empezar).
 

No se pueden recuperar datos de estructuras predefinidas en funciones creadas. Por ejemplo:

void OnTick()
{
//--- Объявляем структуру
 MqlRates rates[];
 ArraySetAsSeries(rates,true);

//--- Скопировать необходимое количество значений в массив
 if(CopyRates(NULL,0,0,4,rates) < 0) { Print(ErrorDescription(GetLastError())); return; }
...
}

Entonces, al intentar recuperar valores en una función creada:

void Trailing_Stop_Loss(ENUM_POSITION_TYPE Type, double Trailing_Stop)
{
 string Val_Time = TimeToString(rates[1].time,TIME_DATE|TIME_MINUTES);

...
}

Recibimos un mensaje de error:

¿Cómo declaro las estructuras para que estén disponibles en todas las partes del programa?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
tol64:

No se pueden recuperar datos de estructuras predefinidas en funciones creadas. Por ejemplo:

Entonces, al intentar recuperar valores en una función creada:

Recibimos un mensaje de error:

¿Cómo declaro las estructuras para que estén disponibles en todas las partes del programa?

En el ámbito global. Fuera de la función.
 
¿Qué funciones se pueden utilizar para comprobar si un hilo comercial está libre para realizar una operación comercial? En MQL4, las funciones IsTradeAllowed() y IsTradeContextBusy() estaban destinadas a este fin.

La clase CAccountInfo de la biblioteca estándar tiene la función TradeAllowed(). Está escrito en la ayuda que significa: "El comercio está permitido/prohibido para esta cuenta". No he encontrado ningún código de error en los códigos de retorno del servidor de comercio, lo que significa que el flujo de comercio puede estar ocupado. ¿Esta comprobación está ahora en el propio terminal de comercio? Por favor, aclárese.


 
tol64:
¿Qué funciones se pueden utilizar para comprobar si un hilo comercial está libre para realizar una operación comercial? En MQL4, las funciones IsTradeAllowed() y IsTradeContextBusy() estaban destinadas a este fin.

La clase CAccountInfo de la biblioteca estándar tiene la función TradeAllowed(). Está escrito en la ayuda que significa: "El comercio está permitido/prohibido para esta cuenta". No he encontrado ningún código de error en los códigos de retorno del servidor de comercio, lo que significa que el flujo de comercio puede estar ocupado. ¿Esta comprobación está ahora en el propio terminal de comercio? Por favor, aclárese.

En MT5, el hilo de negociación nunca está ocupado porque las operaciones de negociación son asíncronas. Alégrate.
 
tol64:
¿Qué funciones se pueden utilizar para comprobar si un hilo comercial está libre para realizar una operación comercial? En MQL4, las funciones IsTradeAllowed() y IsTradeContextBusy() estaban destinadas a este fin.

La clase CAccountInfo de la biblioteca estándar tiene la función TradeAllowed(). Está escrito en la ayuda que significa: "El comercio está permitido/prohibido para esta cuenta ". No he encontrado ningún código de error en los códigos de retorno del servidor de comercio, lo que significa que el flujo de comercio puede estar ocupado. ¿Esta comprobación está ahora en el propio terminal de comercio? Por favor, explique.


En MetaTrader5 no existe el hilo comercial ocupado, mientras que MT4 podía procesar sólo una orden de un operador, en MT5 se procesan muchas órdenes en paralelo. Los códigos de retorno del servidor para cualquier orden se pueden obtener en la función OnTrade().
 
uncleVic:

Sólo hay que fijar el precio.

Si no se establece ningún precio (por defecto es 0,0) o si se establece el precio de mercado, CExpertTrade es solicitado por CExpert para abrir una posición en el mercado.

Si el precio se fija mejor que el mercado (por debajo del precio actual de compra y por encima del precio actual de venta), CExpertTrade colocará una orden limitada (si se respeta el margen).

Si el precio está por debajo del mercado (por encima de la oferta actual y por debajo de la demanda actual), CExpertTrade colocará una orden de stop (sujeta a sangría).

bool Chhhh::OpenLongParams(double& price, double& sl, double& tp, datetime& expiration)
{
   printf("11111111");
   if(2+2==4)
   {
      price=1.5;
      sl=0;
      tp=0;
      expiration=0;
      return(true);
   }
   else
   {
      return(false);
   }
}

int Chhhh::LongCondition()
{
  printf("222222222");
  return(60);
}
OpenLongParams no funciona en absoluto, ni siquiera devuelve "1111111111",
y LongCondition devolverá "2222222" y abrirá una orden,
¿es algo malo o está configurado de forma diferente?
 
sergeev:

El tipo específico se establece cuando se realiza el pedido. PedirEnviar
¿Qué tiene que ver OrderSend con esto?
 
Lodar:
OpenLongParams no se ejecuta en absoluto, ni siquiera escribe "1111111111",
pero LongCondition escribirá "222222222" y abrirá una orden,
¿estoy haciendo algo mal o está configurado de forma diferente?

En principio, las cosas son mucho más sencillas. En el 99% de los casos, el nivel de entrada puede ajustarse mediante un parámetro de entrada:

input double Inp_Signal_PriceLevel    =0.0;

El valor se establece en pips "grandes" (es decir, 2/4 dígitos).

Valor = 0 - entrada en el mercado.

Valor > 0 - entrada por orden limitada.

Valor < 0 - entrada por orden de parada.

El parámetro se refiere a la señal principal (en la que se recogen las señales seleccionadas en el Asistente para la votación). El algoritmo de fijación de niveles de precios ya está implementado en la clase base CExpertSignal (cuya instancia es la señal principal).

Pero si quieres usar un algoritmo que difiere del implementado... Pero eso es para más adelante, cuando sea interesante.