Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 379

 
ALXIMIKS:


...

4) ¿por qué hay que pasar por las pausas?

...


¡О! ¿Puedes mostrarme cómo no pasar por ellos?

Por supuesto, la pregunta es interesante: ¿es mejor añadir OrderProfit() + OrderCommission() + OrderSwap() que suman 0 y no cambian nada, o tenemos que hacer si para cada orden?

 
Example2:


No importa cómo se reconstruya, siempre que funcione.


Hay alguna diferencia en algunos casos. Si for (int i = 0; i < OrdersTotal(); i++), se llama a la función OrdersTotal() en cada bucle, y si for (int i = OrdersTotal()-1; i>=0; i--), se llama a la función OrdersTotal() sólo una vez. No he experimentado con la velocidad de ejecución en mql. Una vez, en php, la función count() funcionó durante 17 segundos en un bucle de avance y 0,01 segundos en uno de retroceso.
 
Se ha medido la velocidad del ciclo de avance y retroceso. 100 órdenes, el ciclo inverso es 5 veces más rápido. Pero nunca hay tantos pedidos, 10 como máximo. Si hay 10 pedidos, la velocidad es 3 veces mayor. Es palpable que hay que elegir el ciclo inverso.
 
Integer:
Se ha medido la velocidad del ciclo de avance y retroceso. 100 órdenes, el ciclo inverso es 5 veces más rápido. Pero nunca hay tantos pedidos, 10 como máximo. Si hay 10 pedidos, la velocidad es 3 veces mayor. Es bastante sensato elegir un ciclo inverso.


¿Pueden aconsejar cómo normalizar el precio? (Mi post anterior) .

 
Example2:


¿Puedes decirme cómo normalizar el precio? (Mi post anterior).

Existe una función NormalizeDouble().

NormalizeDouble(_High+Point*20,Digits);

Al multiplicar, es mejor poner primero double y luego int, de lo contrario en algunos casos se puede perder la parte fraccionaria.

 
if(Line_7 > Lines_1 > Line_6)
{
Alert("Сигнал на покупку");
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,SL_Typ,TP_Typ);
}
return;}
¿Es posible fijar la apertura de una orden de esta manera?
 
Link_x:
¿Es posible fijar la apertura de una orden de esta manera?


No.

Así es como debe hacerse:

if(Line_7 > Lines_1 && Lines_1 > Line_6)
 

También he comprobado la velocidad de cálculo de beneficios sumando los beneficios de todas las órdenes y seleccionando sólo las órdenes de mercado:

Prof1+=OrderProfit()+OrderSwap()+OrderCommission();

и

if(OrderType()==OP_BUY || OrderType()==OP_SELL){
 Prof2+=OrderProfit()+OrderSwap()+OrderCommission();
}
La primera opción es un poco más rápida, pero no significativamente. La relación de velocidad es de aproximadamente 1/1.1
 
Integer:

Existe una función NormalizeDouble().

Al multiplicar, es mejor poner primero double y luego int, de lo contrario en algunos casos se puede perder la parte fraccionaria.


Ahora obtengo el error 3: "Se han enviado parámetros incorrectos a la función de negociación, por ejemplo, símbolo incorrecto, operación comercial no identificada, tolerancia de precio negativa, número de entrada inexistente, etc. Hay que cambiar la lógica del programa".

 
Example2:


Ahora obtengo el error 3: "Se han enviado parámetros incorrectos a la función de comercio, por ejemplo, símbolo incorrecto, comercio no identificado, tolerancia de precio negativa, número de billete inexistente, etc. Hay que cambiar la lógica del programa".


Traslade el cursor al primer paréntesis de apertura después de OrderSend, borre este paréntesis, vuelva a entrar, esto abrirá un aviso de tipo de parámetro, compruebe que todos los parámetros son del tipo correcto.