[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 611

 

Una vez más, me pregunto cuál es el índice de posición. Si es un número de posición en el historial, ¿qué hace esta función?

GetIndexLastPos Índice de la última posición abierta o -1 ???

¡¡¡el índice de la última posición abierta es siempre 1 porque es la última !!!

evidentemente, no estoy entendiendo bien el INDEX ....

pista ¿quién sabe?

 
lottamer:

¿Cómo cree que debería compararse?

Comencemos:

1.Si(Stoch_1>Stoch_2) flag1=1 ; , entonces la condición que le sigue (Stoch_1<Stoch_2 && flag1==1) no puede en principio ser cierta, porque si Stoch_1<Stoch_2 flag1==0 y si flag1==1entonces Stoch_1>Stoch_2. es el mismo con todas las condiciones posteriores en esta función, por lo que sólo flag1 puede cambiar el valor. Es decir, su programa ejecutará las dos primeras líneas, se saltarála tercera, ejecutarála cuarta, se saltarála quinta, ejecutará la sexta, ejecutará la séptima y se saltará todas las demás.


	          
 
xant:

TarasBY,

Var1 y otros nombrados como yo, insertado el bloque fGet_MineGV() dentro de init y el bloque fSave_MineGV() dentro de staft.

Al compilar, el EA daba un montón de errores.

Lo probé uno por uno. Primero lo inserté dentro de init y luego lo compilé. Hay 0 errores, una observación: no está referenciada y será eliminada de exp-file. Bueno, para mí tiene sentido, no puede encontrar el archivo, porque todavía no existe. Tiene que estar escrito dentro del pentagrama.

Así, cuando intento escribir el segundo bloque dentro del staft, se producen muchos errores.

Algoritmo estructural:

int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

Por supuesto, ¿hiciste eso? ¿Y no compila?

 
lottamer:

Una vez más, me pregunto cuál es el índice de posición. Si es un número de posición en el historial, ¿qué hace esta función?

GetIndexLastPos Índice de la última posición abierta o -1 ???

¡¡¡el índice de la última posición abierta es siempre 1 porque es la última !!!

evidentemente, no estoy entendiendo bien el INDEX ....

pista ¿quién sabe?


¡¡¡el índice del último abierto es siempre 1 porque es el último !!! No 1, sino 0, y no en la historia. En el historial 0 es el índice de la última posición cerrada o de la última orden borrada, y no siempre, porque además del mercado, también hay órdenes pendientes, que no son posiciones.
 
Profi, por favor, dime cómo escribir lo siguiente programáticamente: "Poner una orden pendiente a nivel de SL con parámetros de una orden de cierre teniendo en cuenta el spread" y dónde adjuntarlo en el código de un EA?
 
yosuf:
Profi, por favor dígame cómo escribir lo siguiente programáticamente: "Poner una orden pendiente a nivel de SL con parámetros de una orden de cierre incluyendo el spread" y dónde adjuntarlo en el código del EA?

No se puede hacer con parámetros de un orden cercano. El precio de apertura también es un parámetro.
 

TarasBY

Sí, he hecho lo que has escrito. Y no compila.

Obviamente, he hecho algo mal, pero no sé qué exactamente. Puedes ir paso a paso.

 
rigonich:

No hay manera con los parámetros del que se va a cerrar. El precio de apertura también es un parámetro.
¿Por qué? Por ejemplo, se ha abierto una orden con O=1,2900, TP 1,300 y SL 1,2800. La orden pendiente debe tener los parámetros BAY O= 1,2800 con TP 1,2900 y SL 1,2700. Si es posible, dé por perdida la difusión.
 
yosuf:
¿Por qué? Por ejemplo, una orden BAY está abierta en O=1,2900 con un TP de 1,300 y un SL de 1,300. La orden pendiente debe tener los parámetros BAY O= 1,2800 con TP 1,2900 y SL 1,2700. Si es posible, dé por perdida la difusión.


La primera orden tiene un precio abierto de 1 ,2900 y un TP de 1,300. La segunda orden tiene un precio abierto de1,2800 y un TP de 1,290. Son parámetros diferentes. El primero es BAY, el segundo es BAY_STOP. También son parámetros diferentes. Y cuando cierras sobre el SL, no pierdes el spread, sino mucho más (spread+SL*Punto).
 
rigonich:

Comencemos:

1.Si(Stoch_1>Stoch_2) flag1=1 ; , entonces la condición que le sigue (Stoch_1<Stoch_2 && flag1==1) no puede en principio ser cierta, porque si Stoch_1<Stoch_2 flag1==0 y si flag1==1entonces Stoch_1>Stoch_2. es el mismo con todas las condiciones subsiguientes en esta función, por lo que sólo flag1 puede cambiar el valor. Es decir, su programa ejecutará las dos primeras líneas, se saltarála tercera, ejecutarála cuarta, se saltarála quinta, ejecutará la sexta, ejecutará la séptima y se saltará todas las demás.


Te equivocas, porque no entiendes nada. Lo hace, y todo funciona perfectamente, tal y como lo necesito. Tal vez el código podría ser simplificado, pero ahora ya no es a la grasa ... Sólo tengo que terminar toda la EA y ya mirar el RESTO de la idea de comercio que contiene....

y programar por programar no me interesa mucho...