[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 19

 
nadya:
Y si lo escribo como una variable global, ¿debo asignar un valor directamente allí?

En estos, más aún porque no restablecen su estado al deseado 0 después de deinit().

es mejor inicializarlos en init().

 
nadya:
Tengo que cambiar la ideología del programa. cuando el middleSL se envía al stoploss, se normaliza, es decir, se redondea a un determinado signo, cuando se divide por 2 sucederá así, es inevitable.
int z;
z=MathMod(Close[0]*10000,2.0);
if ((z==0)&&High[0]>H)
{
H=High[0];
middleSL=OrderOpenPrice()+(Close[0]-OrderOpenPrice())/MIDDLESL;
}

He complicado ligeramente el código, para toda la transacción desde la apertura hasta el cierre sólo 3 veces dio un error, ahora en tiempo real voy a mirar las condiciones en que se producen, básicamente no me molestan, todo funciona como un reloj, pero me temo que el servidor va a desterrar cuando voy a una cuenta real

 
nadya:
y si lo escribo como una variable global, ¿debo asignar el valor directamente allí?


Se puede, pero no tiene sentido, porque no será lo mismo que una variable normal. Cuando arrastre el svetnic sobre el gráfico, aparecerá una ventana, vaya a la siguiente pestaña "Parámetros de entrada" e introduzca los valores deseados, y el svetnic los memorizará

Si quieres que el valor sea constante para cada ciclo del EA, sólo tienes que introducirlo inmediatamente después del inicio, por ejemplo

int N=5; //одновременно объявляется переменная и присваивается ей значение
double K=3,5; //то же самое
 

¡¡¡por favor, dímelo, o voy a reventar ahora!!!

¿puede un EA eliminar órdenes pendientes porque no tiene fondos suficientes?

 
nadya:

¡¡¡por favor, dímelo, o voy a reventar ahora!!!

¿puede un EA eliminar órdenes pendientes porque no tiene suficientes fondos?


si requiere que compruebe el saldo y en caso de insuficiencia cerrar la orden, entonces sí, de lo contrario emitirá un error o algo más, y tal vez incluso cerrar, pero siempre es mejor proporcionar todas las opciones y prescribir en el código

"ERR_NOT_ENOUGH_MONEY 134 No hay suficiente dinero para ejecutar una transacción" puede dar esta, pero se borrará la orden o se quedará colgada no lo sé

 
LazarevDenis:

He complicado un poco el código, para toda la transacción desde la apertura hasta el cierre solo daba 3 errores, ahora en tiempo real miraré las condiciones en las que se producen, en principio no me molestan, todo funciona como un reloj, pero me temo que el servidor banea cuando voy a una cuenta real

Sí, es demasiado complicado, ¿existe tal enfoque de principios?
 
LazarevDenis:

Si se requiere que compruebe el saldo y cierre la orden si hay un déficit, entonces sí, de lo contrario dará un error o algo más, o tal vez la cierre, pero siempre es mejor considerar todas las opciones y prescribirlo en el código.
En realidad no lo necesito, pero mis pedidos se borran de forma extraña, me paso toda la tarde buscando un error.
 
nadya:
El caso es que realmente no lo necesito, pero mis pedidos se borran de forma extraña, estoy buscando un error toda la tarde.


Seguro que es un lote grande y no hay suficiente dinero libre, o ya se han abierto muchos pedidos (si se deja abrir más de uno).

Si estás trabajando en un probador o en una demo, intenta aumentar la cantidad de dinero y establecer un lote mínimo

 
nadya:

¡¡¡por favor, dímelo, o voy a reventar ahora!!!

¿puede un EA eliminar órdenes pendientes porque no tiene fondos suficientes?


¡Si! Mira el registro.
 
LazarevDenis:


más que seguro que se ha fijado un lote demasiado grande y no tiene suficiente dinero libre, o un lote ya está abierto (si le permite abrir más de un pedido)

si trabajas en un probador o demo, intenta aumentar la cantidad de dinero y pon el lote mínimo

¡Ya lo he hecho y ha funcionado de inmediato! ¡Hurra!