Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 79

 

Hola, hay una pregunta simple como esta. Primero abrimos una operación de ida y pagamos el diferencial. Luego abrimos una contraoperación con el mismo lote y el spread también se toma de él. En otras palabras, cuando cerramos estas operaciones entre sí, significa que pagamos dos diferenciales?

 

por favor, aconseja un par de líneas de código

1) cómo hacer que los búhos funcionen, digamos, una vez cada 10 segundos

2)establecer una orden pendiente si no hay ninguna orden pendiente a este precio

3) si es el caso, por favor, indique cómo calcular la diferencia entre las órdenes establecidas (abiertas)

 
Rustem71:


Sólo dime qué quieres hacer cuando llegue la garrapata.

Hay mucho trabajo extra que estás haciendo.

Y escribe el código correctamente, no abrevies los paréntesis. Si se supone que debes escribir llaves en la condición, debes escribirlas. Será más fácil entender el código. Cuando le cojas el tranquillo, puedes empezar a abreviar.

Estoy esperando aclaraciones sobre la garrapata.


La idea es que se abran primero 2 órdenes pendientes que funcionen con el lote inicial, por ejemplo COMPRA inmediatamente borrada SELLSTOP y en el mismo lugar se pone SELLSTOP pero con doble lote, simplemente se abre SELL poniendo BUYSTOP *2 lote, y luego, por ejemplo si no se dispara el trilling stop y la tendencia se da la vuelta se pone pendiente con *2 lote. Y luego si entra sin pérdida en el plus, por ejemplo 0,05 se pondrá trailing stop. ¡¡Así!! ¡Si me dicen cómo optimizar + sus comentarios sobre mis errores serán muy agradecidos! ¡No puedo entender por qué tengo un lugar de una orden pendiente, órdenes pendientes abiertas hasta el drenaje total del depósito!
 
Akinak:
¡Mira, por favor! ¡Si puedes explicar lo que hice mal! ¡He probado de todo, ya sea sin abrir un pedido o abriendo un montón en bucle!

si es mayor o igual a uno (más simple - mayor que cero) - no abrir, lo mismo debe repetirse para los baikas

y tú lo tienes al revés:

if(s==1)

Así que debería ser algo así:

if(s==0)
{ 
//открываем селл
}
 
Akinak:
Por favor, échale un vistazo. ¡Si puedes explicar lo que hice mal! ¡¡¡Como solo no he probado o no abre un pedido o abre un paquete por el ciclo!!!


Si lo he entendido bien es así. El resto depende de ti.

Y escribir los códigos correctamente.

Archivos adjuntos:
888.mq4  8 kb
 
Hola! Por favor, ayúdame con esta función, ya estoy agotada y no sé cómo hacerlo bien! Necesito que sea capaz de introducir en los parámetros, la hora de mi ordenador. Gracias de antemano.
extern bool    HOUR = false;             // Часы Вкл (true) / Выкл (folse)
extern string  TimeBegin = "13:30";      // Время начала (ЧЧ:ММ)
extern string  TimeEnd   = "17:00";      // Время окончания (ЧЧ:ММ)
//Отправляет true если по времени разрешено торговать
bool isTradeTimeString()
{
 datetime hbegin = StrToTime(TimeBegin) + TimeGMTOffset();
 datetime hend = StrToTime(TimeEnd) + TimeGMTOffset();
 
 datetime dtBegin, dtEnd;        // Время начала и окончания работы
 int      hc, he;                // Часы текущего времени и окончания работы

 dtBegin=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+TimeToStr(hbegin,TIME_MINUTES));
 dtEnd=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+TimeToStr(hend,TIME_MINUTES));
 hc = TimeHour(TimeCurrent());
 he = TimeHour(dtEnd);
 if(dtBegin>=dtEnd)
 {
  if(hc>=he)
   dtEnd+=24*60*60;
  else
   dtBegin-=24*60*60;
 }
 if(HOUR==true)
 {
  if(TimeCurrent()>=dtBegin && TimeCurrent()<=dtEnd)
   return(true);
  else
  {
   if(CountTrades()==0)
    return(false);
  }
 }
 return(true);
}
 
Arseniy Barudkin:
Hola! Por favor, ayúdame con esta función, ya estoy agotada y no sé cómo hacerlo bien! Necesito que sea capaz de introducir en los parámetros, la hora de mi ordenador. Gracias de antemano.
TiempoLocal()
 
Rustem71:


Si lo has entendido bien, es así. Tú te encargas a partir de aquí.

Y escribir los códigos correctamente.


¡Muchas gracias! ¡Muy útil! ¡Llevo poco más de dos semanas escribiendo y todavía no conocía esas sutilezas!
 
¡Hola, queridos miembros del foro! ¡Cuando creo un simple EA, me da un error! ¿Puede decirme la razón de esto?
Archivos adjuntos:
meryjj.jpg  197 kb
 
naravat:
¡Hola, queridos miembros del foro! ¡Cuando creo un simple EA, me da un error! ¿Puede decirme la razón?

Hay que poner paréntesis después de return y en ellos hay que escribir algún valor del mismo tipo que el de la función.
Razón de la queja: