Alexey Navoykov: Inline es una reliquia, en mi opinión. El compilador inline todo bien por sí mismo, así que no hay necesidad de sobrecargar el código. Y en MQL este especificador no es nada, se añade sólo por compatibilidad (no sé para qué, si se podría declarar tal macro por uno mismo).
¿Y quién puede garantizar que el compilador ha inlineado 100500 llamadas de la función GetTo() en un bucle, si la llamada está precedida por if(algo) y este algo es falso una vez en cinco años?
Me resulta más fácil escribir en línea que buscar en el código del desensamblador para comprobarlo.
Vladimir Simakov: ¿Quién puede garantizar que el compilador alineará 100500 llamadas a GetTo() en un bucle, si la llamada está precedida por if(algo) y este algo es falso una vez en cinco años?
Me resulta más fácil escribir en línea que mirar el código del desensamblador para comprobarlo.
Vladimir Simakov: No. ¿Hay alguna complejidad fundamental ahí?
No hay que confundirlo con la descompilación: son cosas diferentes.
He hecho una pregunta concreta. Ha dado una respuesta concreta.
Y "confundir algo con algo" es una invención tuya. Por favor, no se preocupe: lo sé, y no estoy confundido, y sus otras preguntas son redundantes aquí.
Vladimir Simakov: ¿Y quién puede garantizar que el compilador incrustó 100500 llamadas a la función GetTo() en el bucle, si esta llamada está precedida por if(algo) y este algo es falso una vez en cinco años?
Me resulta más fácil escribir en línea que mirar el código del desensamblador para comprobarlo.
¿Y has conseguido optimizar mucho con tus inlines en modo Release? )
p.d. ¿No eras tú el que estaba jugando con las alineaciones el otro día?
Amigos, me pueden decir que es lo que hace, un mes todo funcionaba bien, pero me atreví a cargar un depósito y ahora me da un error - el karma está negro :(
//+------------------------------------------------------------------+//|значение Regressor Номера буферов: 0 - Up, 1 - Center, 2 - Low |//+------------------------------------------------------------------+double Regressorf(int Bufer,int index)
{
double MA[1];
ResetLastError();
if(CopyBuffer(handle_Regressor,Bufer,index,1,MA)<0)
{
Print("handle_Regressor: Bufer=",Bufer," index=",index);
PrintFormat("Failed to copy data from the handle_Regressor indicator, error code %d",GetLastError());
return(0.0);
}
Print("handle_Regressor: Bufer=",Bufer," index=",index," arr=",MA[0]);
return MA[0];
}
Desde julio probé activamente todo en una cuenta real bajo mi mirada, no había ningún error, y ahora lo tengo :(
2019.08.1520:51:11.827 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) Failed to copy data from the handle_Regressor indicator, error code 48062019.08.1520:51:58.329 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) handle_Regressor: Bufer=1 index=6272019.08.1520:51:58.329 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) Failed to copy data from the handle_Regressor indicator, error code 48062019.08.1520:52:44.840 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) handle_Regressor: Bufer=0 index=6272019.08.1520:52:44.840 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) Failed to copy data from the handle_Regressor indicator, error code 48062019.08.1520:53:31.350 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) handle_Regressor: Bufer=2 index=6272019.08.1520:53:31.350 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) Failed to copy data from the handle_Regressor indicator, error code 48062019.08.1520:54:17.867 TZ_Sky_and_Ground_V_04_test (Si-9.19,M1) handle_Regressor: Bufer=1 index=627
¿Qué puede ser? Al mismo tiempo el indicador en sí funciona visualmente, la reinicialización del EA solucionó el problema.
Puede que sea una pregunta tonta, pero no consigo saber qué estoy haciendo mal. Empecé a aprender MQL5 y surgió el primer problema. No puedo utilizar el script para la apertura inmediata de una orden (compra/venta, cualquier orden). Acabo de tomar el código listo de MQL5 Reference y he intentado ejecutarlo (adjuntar el script a la ventana del gráfico). No funcionó. Al compilar, no se produjo ningún error, por supuesto. No puedo adjuntarlo al gráfico. Tal vez todo sea obvio, pero estoy perdido.
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Открытие позиции Buy |//+------------------------------------------------------------------+voidOnStart()
{
//--- объявление и инициализация запроса и результатаMqlTradeRequest request={0};
MqlTradeResult result={0};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.1; // объем в 0.1 лот
request.type =ORDER_TYPE_BUY; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера//--- отправка запросаif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операцииPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
Por favor, aconséjeme, ¿qué es lo que está mal? ¿O el código es correcto y yo soy un torpe?
Puede que sea una pregunta tonta, pero no consigo saber qué estoy haciendo mal. Empecé a aprender MQL5 y surgió el primer problema. No puedo utilizar el script para la apertura inmediata de una orden (compra/venta, cualquier orden). Acabo de tomar el código listo de MQL5 Reference y he intentado ejecutarlo (adjuntar el script a la ventana del gráfico). No funcionó. Al compilar, no se produjo ningún error, por supuesto. No puedo adjuntarlo al gráfico. Tal vez todo esté claro, pero estoy perdido.
Por favor, dígame qué pasa. ¿O el código es correcto y yo sólo soy torpe?
Inline es una reliquia, en mi opinión. El compilador inline todo bien por sí mismo, así que no hay necesidad de sobrecargar el código. Y en MQL este especificador no es nada, se añade sólo por compatibilidad (no sé para qué, si se podría declarar tal macro por uno mismo).
¿Quién puede garantizar que el compilador alineará 100500 llamadas a GetTo() en un bucle, si la llamada está precedida por if(algo) y este algo es falso una vez en cinco años?
Disculpe, ¿desmonta los códigos ex4, ex5?
Artyom, como moderador por favor ayúdame con esto, escribí antes :
"Para los administradores de sitios:
No he podido encontrar dónde, escribo aquí
Es necesario cambiar los datos del vendedor en el perfil.
¿Cómo hacer esto?
Escribí un mensaje hace tiempo en la cuenta del vendedor, sin respuesta.
¿tal vez haya otra forma?
"
Artyom, como moderador por favor ayúdame con esto, escribí antes :
"Para los administradores de sitios:
No pude encontrar dónde, escribo aquí
Es necesario cambiar los datos del vendedor en el perfil.
¿Cómo hacer esto?
Escribí un mensaje hace tiempo en la cuenta del vendedor, sin respuesta.
¿tal vez haya otra forma?
"
Escriba en este hilo (+ pasó su solicitud a la administración):
Disculpe, ¿desmonta los códigos ex4, ex5?
No. ¿Hay alguna complejidad fundamental ahí?
He hecho una pregunta concreta. Ha dado una respuesta concreta.
Y "confundir algo con algo" es una invención tuya. Por favor, no se preocupe: lo sé, y no estoy confundido, y sus otras preguntas son redundantes aquí.
¿Y quién puede garantizar que el compilador incrustó 100500 llamadas a la función GetTo() en el bucle, si esta llamada está precedida por if(algo) y este algo es falso una vez en cinco años?
¿Y has conseguido optimizar mucho con tus inlines en modo Release? )
p.d. ¿No eras tú el que estaba jugando con las alineaciones el otro día?
Amigos, me pueden decir que es lo que hace, un mes todo funcionaba bien, pero me atreví a cargar un depósito y ahora me da un error - el karma está negro :(
Aquí está la llamada del indicador del Asesor Experto
Desde julio probé activamente todo en una cuenta real bajo mi mirada, no había ningún error, y ahora lo tengo :(
¿Qué puede ser? Al mismo tiempo el indicador en sí funciona visualmente, la reinicialización del EA solucionó el problema.
¡Buenas tardes!
Puede que sea una pregunta tonta, pero no consigo saber qué estoy haciendo mal. Empecé a aprender MQL5 y surgió el primer problema. No puedo utilizar el script para la apertura inmediata de una orden (compra/venta, cualquier orden). Acabo de tomar el código listo de MQL5 Reference y he intentado ejecutarlo (adjuntar el script a la ventana del gráfico). No funcionó. Al compilar, no se produjo ningún error, por supuesto. No puedo adjuntarlo al gráfico. Tal vez todo sea obvio, pero estoy perdido.
Por favor, aconséjeme, ¿qué es lo que está mal? ¿O el código es correcto y yo soy un torpe?
¡Buenas tardes!
Puede que sea una pregunta tonta, pero no consigo saber qué estoy haciendo mal. Empecé a aprender MQL5 y surgió el primer problema. No puedo utilizar el script para la apertura inmediata de una orden (compra/venta, cualquier orden). Acabo de tomar el código listo de MQL5 Reference y he intentado ejecutarlo (adjuntar el script a la ventana del gráfico). No funcionó. Al compilar, no se produjo ningún error, por supuesto. No puedo adjuntarlo al gráfico. Tal vez todo esté claro, pero estoy perdido.
Por favor, dígame qué pasa. ¿O el código es correcto y yo sólo soy torpe?