Versión beta del libro en línea sobre la programación de MQL4 - por Sergey Kovalev (SK.) - página 7

 

También me pregunto por qué el texto utiliza funciones sin paréntesis OrderType() OrderOpenPrice()

 
Climber:
// Критерии закрытия ордеров

if
(_OrdersTotal == 1) //Выполнять следующее если открыт 1 ордер
{
OrderSelect(0, SELECT_BY_POS);
Tip = OrderType;
OPrice = OrderOpenPrice;

if (Tip = 0) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + (TakeProfit*Point) + Spread;
if (Bid >= Cprice)
{
Cls_B = True;
}
}
if (Tip = 1)                 
{
Cprice = OPrice - (TakeProfit*Point) - Spread;
if (Ask <= Cprice)
{
Cls_S = True;
}
}
En tu código, no es la falta de paréntesis lo que está mal, sino otros errores, como la falta de otro signo igual en la condición (marcado en rojo)
 
No ayudó ==. En los errores se sigue escribiendo el mismo paréntesis. ¿No se puede escribir el criterio de cierre en el código, si se establece el take profit? ¿O puede no funcionar, por ejemplo, si el precio está repentinamente cerca del TP y de repente cambia varios puntos en un tick, saltando por encima del TP?
 
Climber:
¿O podría fallar, por ejemplo, si el precio se acerca repentinamente al TP y cambia de repente varios pips en un solo tick, saltando por encima del TP?


Esto es teóricamente posible. Es decir, la orden se seguirá cerrando, pero puede que no se cierre al precio TP, sino al primer precio que aparezca.
Creo que le puede interesar leer el Tutorial MQL4 - Operaciones de Comercio - Parámetros de la Orden y Reglas de las Operaciones de Comercio. Trata un ejemplo similar con el deslizamiento.

 
Otra característica original en la etapa de aprendizaje de la programación - todo el tiempo para poner una coma presiono la letra b, donde hay una coma en la disposición Inglés))). Resulta que escribes en ruso, pero cuando pones una coma te olvidas de que la disposición rusa.
 
Climber:
Otra característica original en la etapa de aprendizaje de la programación - todo el tiempo para poner una coma presiono la letra b, donde hay una coma en la disposición Inglés))). Resulta que escribes en ruso, pero cuando pones una coma te olvidas de que la disposición rusa.

Por eso mucha gente escribe el software en inglés, sin usar el ruso, es más rápido y fácil, el diseño no cambia tan a menudo, y luego el programa se adapta al ruso para otra persona, si se requieren comentarios, sólo en este período de trabajo, es más conveniente russify, por alguna razón:) La maquetación en inglés es la base para las personas que se dedican a este tipo de escritos, el ruso se utiliza en una escala muy mínima, si se estima el % de uso de la maquetación en inglés, es el 99% de las veces. Antes quería escribir programas en ruso, pero después de divertirme con 1C este deseo se ha evaporado.
 
Rosh:
Si se descubre el problema, lo arreglaremos.

Ahora puedo ver los dibujos en https://book.mql4.com/ru/metaeditor/compose
 

Me pregunto cómo habéis hecho desaparecer mis mensajes. No es una discusión justa, chicos. Si no tenéis nada que decir, decidlo. Lo entiendo.

 

Sólo espero que aquellos a los que escribí hayan leído y respondido

 
He encontrado las funciones que necesito en el foro. Uno devuelve el número de compás del extremo del ZigZag por su número de compás y el segundo devuelve el extremo del ZigZag por su número de compás. El primero me ayudará a determinar si ha surgido un nuevo extremo del ZigZag (si el número de barra del ZigZag cero = 0) y proceder a partir de ahí a comprobar otros criterios. El segundo también será útil. Pero es demasiado pronto para la segunda. Me gustaría encargarme del primero.

He implementado esta función en el editor y he creado un indicador. No he añadido ni quitado nada. Pero durante la compilación, tengo muchos errores. Son horribles. Luego traté de crear un Asesor Experto utilizando sólo esta función. Tengo el mismo resultado.((
//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
¿Qué ocurre aquí? ¿Por qué grita sobre los errores?
Razón de la queja: