Aprender y escribir juntos en MQL5 - página 31

 
Urain:

¿Pushkin inicializará la cadena?

Hmmm... No soy muy bueno programando, pero ¿no se reiniciaría la cadena cada vez?

Me interesa su valor base, por ejemplo, el valor de double es cero, bool es 1, pero ¿qué?

Un ejemplo de chapoteo:

doble Estado;

void OnTick()
{
si(Statys == 0)
{AbrirCompra();}

}

Y parece que funciona))


(Exactamente, no está a cero). Nunca los inicialicé allí).


 
AUser:

Hmm... No soy bueno en programación, pero ¿no se reiniciaría la cadena cada vez?

Me interesa su valor base, por ejemplo, el valor de double es cero, bool es 1, pero ¿qué es?


Exactamente, no está a cero). Y nunca los inicialicé allí)

En la ayuda de MQL5 se indica claramente en la sección Inicialización de variables:

Cualquier variable puede ser inicializada cuando se define. Si una variable no se inicializa explícitamente, el valor almacenado en esta variable puede ser el que se desee. No se realiza la inicialización implícita.

Sólo tienes suerte durante un tiempo, pero algún día tendrás mala suerte y buscarás penosamente un error en tu código, sin saber que el diablo se esconde en los detalles. No tienes que confiar en el "tendré suerte".
 
Rosh:

La sección de Inicialización de Variables de la ayuda de MQL5 dice explícitamente:

De momento tienes suerte, pero un día tendrás mala suerte y estarás mucho tiempo buscando un error en tu código, sin saber que el diablo se esconde en las minucias. No tienes que confiar en el "tendré suerte".
Sí, gracias)) Lo haré bien)))
 

Estoy escribiendo una función sencilla para comprobar el sentido de la indexación en un array. Las propias matrices se toman de OnCalculate(), es decir, tienen tipos diferentes (double, datetime, etc.). Hay ejemplos de funciones terminales en la referencia que utilizan el tipo de cabecera f(void &array[]) al procesar arrays de diferentes tipos. Pero el compilador jura usar el tipo void en la función de usuario. ¿Existe alguna forma universal de indicar al compilador que el tipo de parámetro del array no es importante para una función de usuario?

 

Me gustaría aclarar la estructura del resultado de la solicitud de comercio (MqlTradeResult)

double price; // Precio en la operación, confirmado por el broker

¿No devuelve el precio de una orden pendiente? El Asesor Experto ha escrito el siguiente código:

double Statys = 0;
void OnTick()
{
if (Statys == 0)
{OpenBuy();}
}

void OpenBuy()
{
MqlTradeRequest o; MqlTradeResult p;
double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);

o.action = TRADE_ACTION_PENDING;
o.símbolo = _Símbolo;
o.volumen = 1;
o.precio = 82.000;
o.sl = 81,800;
o.tp = 82.200;
o.type = ORDER_TYPE_BUY_STOP;
o.type_filling = ORDER_FILLING_AON;
o.type_time = ORDER_TIME_GTC;
OrderSend(o,p);
Statys = p.precio;
}


A juzgar por el hecho de que tenemos muchas operaciones abiertas, me atrevo a adivinar que la respuesta es precio = 0. Sin embargo, es un poco raro.


Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5
 
Yedelkin:

¿Existe alguna forma universal de indicar al compilador que el tipo del parámetro del array no es importante para una función de usuario?

Realiza una función de sobrecarga sobre diferentes tipos de datos en el array.
Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Основы языка / Функции / Перегрузка функций - Документация по MQL5
 
AUser:

Me gustaría aclarar la estructura del resultado de la solicitud de comercio (MqlTradeResult)

double price; // Precio en la operación, confirmado por el broker

¿No devuelve el precio de una orden pendiente? El Asesor Experto ha escrito un código de este tipo:


A juzgar por el hecho de que hay muchas operaciones abiertas, me atrevo a adivinar que la respuesta es precio = 0. Sin embargo, esto es un poco raro.


Una orden pendiente no implica hacer un trato. Echa un vistazo a la ayuda de la estructura de MqlTradeResult:

Descripción del campo

Campo

Descripción

Retomar el código

Código de retorno del servidor de comercio

acuerdo

Ticket de transacción, si se ha realizado una transacción. Informado en la operación comercial TRADE_ACTION_DEAL

pedir

Ordenar billete, si se ha colocado un billete. Notificado durante una operación comercial TRADE_ACTION_PENDING

volumen

Volumen de la operación confirmado por el corredor. Depende del tipo de llenado del pedido

precio

Precio de la transacción, confirmado por el corredor. Dependedel campo de desviación en la solicitud de comercio y/o del tipo de comercio

oferta

Precio de oferta actual del mercado (precio de recotización)

pregunte a

Precio de oferta actual del mercado (precios de recotización)

comentario

Comentario del corredor a la transacción (por defecto, rellenado con una desencriptación)

También, por favor, inserte el código correctamente.
 
Vale, para. ¿También hay que inicializar las cadenas? No es un tipo atómico.
 
Rosh:

Una orden pendiente no constituye una operación. Mira la ayuda de la estructura MqlTradeResult:

También, por favor, inserte el código correctamente.
Lo tengo)
 
TheXpert:
Vale, para. ¿También hay que inicializar las cadenas? No es un tipo atómico.
No debe confiar en la inicialización por defecto. Nunca.
Razón de la queja: