[¡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 608

 
Prompt:) Gracias
 
rigonich:

int iMayor( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Devuelve el índice del valor más alto encontrado (desplazamiento relativo a la barra actual).
Parámetros:
El valor se devuelve como elvalor de la barra más alta:

int iMayor( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Devuelve el índice del valor más alto encontrado (desplazamiento relativo a la barra actual).
Parámetros:
símbolo - Nombre del símbolo cuyos datos se buscarán. NULL significa símbolo actual.
marco temporal - Período. Puede ser uno de los períodos de un gráfico. 0 indica el período del gráfico actual.
tipo - El identificador de la serie temporal. Puede ser cualquiera de los identificadores de series temporales.
contar - Número de elementos de la serie temporal (en la dirección de la barra actual al índice ascendente), entre los que se debe realizar la búsqueda.
iniciar - El índice (desplazamiento desde la barra actual) de la barra de inicio desde la que comenzará la búsqueda del valor más alto. Los valores negativos se ignoran y se sustituyen por valores cero.
Aquí la pregunta es cómo especificar que hay que buscar hasta la barra por encima de la cual apareció el fractal y si el periodo es inferior a un minuto..... ¿cómo hay que hacerlo?
 

Losiento,

eso sería genial. He mirado el tutorial sobre variables globales, entiendo que es lo que necesito, pero no entiendo los matices. Dónde declararlos, cómo escribir los valores necesarios en ellos, etc.

Si hay, por ejemplo, 5 EAs colgados en el terminal en 5 pares diferentes y cada EA tiene 4 variables que necesitan ser escritas, significa que necesitamos 20 variables globales y deben ser nombradas de alguna manera usando el comando Symbol() para que no tenga que escribir cada nombre en el EA.

En definitiva, no es para mi cerebro todavía((

 
i999i:



Recuerde la hora de apertura de la barra en la que se fijó el último fractal, utilícela para encontrar el número de esta barra. si el periodo es inferior a un minuto........, ¿cómo es eso? Si el período del gráfico, menos de un minuto simplemente no está allí.
 
i999i:

Gracias por la respuesta, pero lo que quería decir es cómo saber si el fractal actual se ha roto o no antes de que aparezca el siguiente fractal

Si busca el precio de un fractal fresco (puede desplazar la rueda del ratón en esta página), entonces sabrá si este fractal está roto. Mi perfil tiene enlaces a la exposición B.Williams ProfitUnity. Lo escribí yo mismo. Ahora opero por señales inversas, en la dirección de que el precio vuelva a su media móvil.
 
xant:

Losiento,

eso sería genial. He mirado el tutorial sobre variables globales, entiendo que es lo que necesito, pero no entiendo los matices. Dónde declararlos, cómo escribir los valores correctos en ellos, etc.

Si hay, por ejemplo, 5 EAs colgados en el terminal en 5 pares diferentes y cada EA tiene 4 variables que necesitan ser escritas, significa que necesitamos 20 variables globales y deben ser nombradas de alguna manera usando el comando Symbol() para que no tenga que escribir cada nombre en el EA.

En definitiva, no es para mi cerebro todavía((

Si no tengo suficiente cerebro para las Variables Globales de la terminal, entonces sobre escribirlas en un archivo también...

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);
//----
}

Pero, hay una primera vez para todo. fSave_MineGV() dentro de start() y fGet_MineGV() dentro de init().

Espero que lo descubras, y escribas tus variables de guardado en lugar de Var1, etc.
 
xant:

Losiento,

eso sería genial. He mirado el tutorial sobre variables globales, entiendo que es lo que necesito, pero no entiendo los matices. Dónde declararlos, cómo escribir los valores necesarios en ellos, etc.

Si hay, por ejemplo, 5 EAs colgados en el terminal en 5 pares diferentes y cada EA tiene 4 variables que necesitan ser escritas, significa que necesitamos 20 variables globales y deben ser nombradas de alguna manera usando el comando Symbol() para que no tenga que escribir cada nombre en el EA.

Bueno, todavía no es para mi cerebro((

Las variables que necesitas son realmente 20, no quieres escribirlas en tu EA, hazlo en un archivo separado, hay comandos del preprocesador para predefinir constantes y para un principiante es mucho más fácil trabajar con variables globales, que con archivos, pero por supuesto tú eres el jefe.

string perem = "peremEURUSD-1";
string perem = "peremEURUSD-2";
doble A;
//+------------------------------------------------------------------+
//| función de inicio del programa de script |
//+------------------------------------------------------------------+
int inicio()
{
GlobalVariableSet(peremEURUSD-1,2.5); //crear o asignar un nuevo valor
A=GlobalVariableGet(peremEURUSD-1); //por lo tanto, leer el valor
if(GlobalVariableGet(peremEURUSD-1)==....) //comprobar de esta manera
return(0);
}

//+------------------------------------------------------------------+

P.D. Es mejor predefinir las variables (para un par de divisas) una vez init.

 

rigonich,

por qué, en el EA sólo quiero, pensé por el contrario que la grabación de archivos es más fácil.

TarasBY ,

Gracias, está todo claro, lo probaré, creo que funcionará.

 
por favor, avise... qué demonios... en su forma original (sinPlaySound("alert.wav");) - funciona. Pero si además de la asignación de la bandera se añade alguna acción (reproducir música por ejemplo) ... entonces las banderas se imprimen a 0000 y la música se reproduce a toda velocidad! por favor, dígame dónde está el error?
      if(Stoch_1>Stoch_2) flag1=1 ;  
      {Print (flag1,flag2,flag3,flag4);
      
      if(Stoch_1<Stoch_2 && flag1==1) flag2=1;
      {Print (flag1,flag2,flag3,flag4);
      
      if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) flag3=1; 
      {Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");
      
       if(Stoch_1<Stoch_2 && flag1==1 && flag2==1 &&  flag3==1) flag4=1;
              {Print (flag1,flag2,flag3,flag4);
       if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 &&  flag3==1 && flag4==1) 
       {OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 450, 0, CLR_NONE);
        Print ("OUT");


 
flag1=0;
flag2=0;
flag3=0;
flag4=0;}

}}     
  }}}
=================================================================
.....
 
TarasBY:

Si no tiene el cerebro para las Variables Globales en la terminal, entonces escribir en un archivo...

Pero, hay una primera vez para todo. fSave_MineGV() dentro de start() y fGet_MineGV() dentro de init().

Espero que lo descubras, y escribas tus variables de guardado en lugar de Var1, etc.

Interesante manera, ni siquiera pensaba que se pudieran usar variables globales de esta manera, es conveniente que no tengas que cambiar el código del EA, solo añadir más...
Razón de la queja: