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

 
sergeev:

La documentación y un libro de texto de MQL son como la Biblia y un libro de texto de MQL.

Piensa qué elegir para leer y estudiar: ¿la documentación primaria o la interpretación del autor?

El caso es que ya me he leído el libro de texto (5 o 6 veces y he tomado nota para mí), y la propia documentación (al menos 3 veces), y he hecho algunos scripts e indicadores.... Estas preguntas que hago ahora son una especie de "limpieza" de los puntos que quedan sin entender... Esto es lo que justifica mi "molesta" repetición de preguntas... No quiero dejar ningún agujero negro...

 
7777877:
MQL es mi primer idioma en absoluto (aparte del ruso y el ucraniano), así que, por desgracia, no hay manera de "dominar" la Documentación))

Piense en esto: MQL es uno de los pocos lenguajes de programación escritos originalmente por hablantes nativos de la lengua y la mentalidad rusas. Y no uno traducido, como la mayoría de los lenguajes de programación. Así que entender su esencia no es realmente difícil. Además, es muy, muy fácil, y se adapta perfectamente al papel de "primera lengua". Si la documentación le resulta demasiado pesada, puede seguir aprendiendo con un tutorial (de los que hay muchos en Internet), pero recuerde que cualquier interpretación de algo implica la visión y los métodos del intérprete. Te recomiendo encarecidamente que estudies la documentación, necesitas conocerla como la tabla de multiplicar. Llegarás de todos modos, así que para qué dar un rodeo.
 
Pacman:

Hola a todos.

Estoy empezando a aprender MQL (por favor, no juzguen con demasiada dureza).

Tengo una pregunta del tutorial de MQL4.

He iniciado el programa y funciona.

No entiendo cómo el programa cuenta de 10 a 19, si el operador de bucle"for( int i=20; i<=90; i=i+10)" cuenta de 20 y"for(int j=1; j<=9; j++)" de 1 a 9.

Por favor, explique.

La cuenta va a partir de 20, ya que todos los valores del array ANTES de 20 están INCLUIDOS inicializados (establecidos) explícitamente en las líneas: Texto[1]="uno";Texto[2]="dos"; ... ; Texto[20]="veinte". El resto (del 21 al 29; del 31 al 39; ...) se establecen mediante bucles for
 
¿Qué pasa con las órdenes que se cierran solas después de un tiempo? ????
 
JokerJoke:
¿Qué pasa con las órdenes que se cierran solas después de un tiempo? ????

Sí, si el tío Kolya está aquí....
 
borilunad:

double valHigh = iHigh(Symbol(),PERIOD_H1,1);
double valLow  = iLow(Symbol(),PERIOD_H1,1);


no funciona, diferentes marcos de tiempo tienen diferentes datos y se necesita la última hora:(
 
Elektronik:

no funciona, diferentes datos en diferentes marcos de tiempo, y lo necesito para la última hora :(
¿Has visto esta función?
int iMayor( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0) ?
 
snail09_1:
¿Has mirado esta función?
int iMayor( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0) ?


TOTALMENTE:)

Gracias

 
kostikk:


¡¡¡Gracias!!!

¿Conoces la función donde se puede establecer el tiempo de negociación, es decir, las operaciones de EA sólo de 11:00 a 19:00 después de 19:00 cierra la posición o coloca una parada y no abre una posición hasta la mañana siguiente 09:00

Gracias


De nada. No utilizo la función de tiempo abierto. Es una mejor opción para la optimización:

extern int    stArt  = 11;
extern int    stOpen = 19;

------------------------------
int start()
{
  int h = TimeHour(TimeCurrent());

------------------------------

    if((stArt < stOpen && h >= stArt && h < stOpen) || (stArt >= stOpen && (h >= stArt || h < stOpen)))//условие входа

//для выключения действия условия поставь любое значение, одинаковое для переменных. 
//Экономит число перестановок,значит и время при оптимизации! 
Buena suerte.
 

Por favor, dígame qué me he perdido al rehacer el código de las líneas horizontales

int start()
  {
  bool fm=false;
  int GLE=0;
  double SvojstvoUP=111,SvojstvoDOWN=111,SvojstvoAM=TimeLocal()-4*60*60,SvojstvoPM=0;
  
  fm=ObjectCreate("UP_LEVEL",OBJ_HLINE,0,Time[0],Bid+111*Point);
  if(fm==0 || fm==-1)
  fm=ObjectSet("UP_LEVEL",OBJPROP_COLOR,Green);
  if(fm==0 || fm==-1)
  fm=ObjectSet("UP_LEVEL",OBJPROP_WIDTH,5);
  if(fm==0 || fm==-1)
   
 
  SvojstvoUP=ObjectGet("UP_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoUP==111)
  if(SvojstvoUP!=Bid+111*Point){
   fm=ObjectSet("UP_LEVEL",OBJPROP_PRICE1,Bid+111*Point);
  if(fm==0 || fm==-1)
  return(0);}
 
 
  fm=ObjectCreate("DOWN_LEVEL",OBJ_HLINE,0,0,Bid-111*Point);
  if(fm==0 || fm==-1)
  fm=ObjectSet("DOWN_LEVEL",OBJPROP_COLOR,Red);
  if(fm==0 || fm==-1)
  fm=ObjectSet("DOWN_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
 
  SvojstvoDOWN=ObjectGet("DOWN_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoDOWN==111)
  if(SvojstvoDOWN!=Bid-111*Point){
   fm=ObjectSet("DOWN_LEVEL",OBJPROP_PRICE1,Bid-111*Point);
  if(fm==0 || fm==-1)
  return(0);}         

en el código de las líneas verticales.

  fm=ObjectCreate("AM_LEVEL",OBJ_VLINE,0,TimeLocal()-4*60*60,0);
  if(fm==0 || fm==-1)
  fm=ObjectSet("AM_LEVEL",OBJPROP_COLOR,Yellow);
  if(fm==0 || fm==-1)
  fm=ObjectSet("AM_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
  
 
  SvojstvoAM=ObjectGet("AM_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoAM==TimeLocal()-4*60*60)
  if(SvojstvoAM!=TimeLocal()-4*60*60){
   fm=ObjectSet("AM_LEVEL",OBJPROP_PRICE1,TimeLocal()-4*60*60);
  if(fm==0 || fm==-1)
  return(0);}
 
 
  fm=ObjectCreate("PM_LEVEL",OBJ_VLINE,0,Time[0],0);
  if(fm==0 || fm==-1)
  fm=ObjectSet("PM_LEVEL",OBJPROP_COLOR,Black);
  if(fm==0 || fm==-1)
  fm=ObjectSet("PM_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
 
  SvojstvoPM=ObjectGet("PM_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoPM==0)
  if(SvojstvoPM!=Time[0]){
   fm=ObjectSet("PM_LEVEL",OBJPROP_PRICE1,Time[0]);
  if(fm==0 || fm==-1)
  return(0);}         
   
  return(0);
  }

Si no hay líneas, se dibujan normalmente, el error en la segunda parte cuando. Cuando empiecen a comprobar su presencia y reorganizar si no están en su sitio.