Una vez hice una de estas cosas... - página 14

 

Privaval está baneado y, de alguna manera, silencioso, así que empezaré con un mensaje para él: Sergey, si estás leyendo esto, hazme saber alguna vez si recibiste mi respuesta a tu correo electrónico.


Mientras tanto, he hecho un guión, marcando los niveles de acuerdo con otra idea - y estos niveles se ven muy bien. Por desgracia, es un poco pesado para recoger buenas estadísticas. Pero tengo la sospecha de que casi cualquier sistema de niveles puede quedar bien en un gráfico de precios :)


Además, me he tomado el tiempo de escribir un Asesor Experto Probador de Estrategias utilizando el algoritmo descrito anteriormente. Sin embargo, aún no lo he probado porque acabo de terminarlo y no me gustan los Asesores Expertos. Sin embargo, parece que funciona. Aquí está el código completo en el archivo adjunto para la demostración.

int start() {
  if (Start) {
    Start = false;
    HalfPoint = 0.5*Point;
    DLvl = 1000*Point;
    RecDLvl = 1.0/DLvl;
    dStopLevel = StopLevel*Point;
  }

// Блок сопровождения ордеров
  double Price;
  bool IsBuyStop = false;
  bool IsSellStop = false;
  for(int ord=OrdersTotal();ord>=0;ord--) {
    if(OrderSelect(ord,SELECT_BY_POS,MODE_TRADES)==false) continue;
    switch(OrderType()) {
      case OP_BUY: 
        if (TimeCurrent()-OrderOpenTime() > LT) OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
        break;
      case OP_SELL: 
        if (TimeCurrent()-OrderOpenTime() > LT) OrderClose(OrderTicket(),OrderLots(),Ask,5,Yellow);
        break;
      case OP_BUYSTOP: 
        IsBuyStop = true;
        Price = GetBuyStopLevel(dStopLevel);
        if (OrderOpenPrice()-Price > HalfPoint) OrderModify(OrderTicket(),NormalizeDouble(Price,Digits),0,0,0,Blue);
        break;
      case OP_SELLSTOP: 
        IsSellStop = true;
        Price = GetSellStopLevel(dStopLevel);
        if (Price-OrderOpenPrice() > HalfPoint) OrderModify(OrderTicket(),NormalizeDouble(Price,Digits),0,0,0,Yellow);
        break;
    }  //  switch(OrderType())
  }  //  for(int ord=OrdersTotal();ord>=0;ord--)
  
//  Блок установки орлеров  
  static int Mnt;
  static int PreMnt;
  Mnt = TimeMinute(TimeCurrent());
  if (Mnt != PreMnt) {
    PreMnt = Mnt;
    if (!IsBuyStop) OrderSend(Symbol(),OP_BUYSTOP,Lots(),NormalizeDouble(GetBuyStopLevel(dStopLevel),Digits),5,0,0,NULL,0,0,Blue);
    if (!IsSellStop) OrderSend(Symbol(),OP_SELLSTOP,Lots(),NormalizeDouble(GetSellStopLevel(dStopLevel),Digits),5,0,0,NULL,0,0,Yellow);
  }
  return(0);
}

No puedo seguir adelante sin Prival, él tendrá que decir si la prueba es suya o no.


P.D. Asesor Experto sólo para cinco dígitos.

Archivos adjuntos:
 

Cambiado el Asesor Experto, si nos centramos en la reversión en el nivel, entonces en la primera aproximación al nivel no se debe colocar una orden de stop. A grandes rasgos, el EA anterior debería dar la misma cantidad de bais y ventas en cada nivel, mientras que este EA debería dar una compra más cuando se acerca por arriba y una venta más cuando se acerca por abajo y viceversa.

La pendiente de la ciruela para el nivel 00 y la onda de parada de 20 ppt (cinco dígitos) tiene un diferencial ligeramente menor por operación, es el eurodólar del verano de 2004

La dependencia del equilibrio del nivel (es decir, la optimización por el parámetro Delta en incrementos de 50 puntos (cinco dígitos) es bastante coherente con los datos obtenidos anteriormente sobre las intersecciones de las barras de un minuto


Lógicamente ahora toca hablar de muchas cosas; de resbalones, de barcos, de focas , de coles y reyes, y de otros contextos y filtros. :)

 

Intentar introducir stops y separar las estrategias de ruptura y rebote por tiempo/volatilidad.

 

El número de variantes posibles es muy grande, por lo que tiene sentido investigar colectivamente. Está claro que es necesario variar el código, es decir, sin unos conocimientos iniciales en mql será difícil hacerlo. Lo principal es que los resultados y la forma de obtenerlos sólo serán útiles si se publican. Bueno, vale, el grial puede estar prohibido :), pero ciertamente la gente debería conocer los resultados negativos.


Se detiene para entrar - es una inserción bastante estándar en el código. Pero en mi opinión, si no es un "seguro" de paradas lejanas, no dará nada más que otra forma de encajar.


Hacer una estrategia de ruptura como si fuera fácil - sólo desactivar la configuración de la orden si hay cualquier orden de la misma dirección (no sólo pendiente) y establecer una parada suficientemente grande (comparable a la distancia entre los niveles). Pero hacer un rebote correcto sólo a partir de ese sencillo y bello esquema no me resultó tan fácil. En idea, debemos cronometrar el hecho del cruce de niveles y colocar una orden sólo después de que se produzca. La sutileza es que este hecho no se puede registrar para el nivel más cercano de manera estándar - después de todo, el nivel más cercano rebota en el momento en que se cruza. Puede durar hasta tres ticks si el nivel medio está exactamente en el nivel. Por eso los resultados del post anterior se obtuvieron usando el Expert Advisor considerablemente cambiado. No lo publiqué aquí porque se sugirió para Codobase (cómo entender si no el nivel de interés real en este tema :)).


Los filtros de tiempo se consideran uno de los más eficaces y suelen ser bastante sencillos de aplicar, sería interesante ver los resultados. Puedes enviarme un mensaje :)


Por supuesto, los filtros de volatilidad también son de gran interés, pero hay aún más variantes de construcción, necesitamos variantes y resultados específicos para ellos.

 
Aquí puedes conseguir un experto.
 

Se ha encontrado una imprecisión en LevelsTrade_1.mq4 que provoca la asimetría de una compra-venta. Aquí tenemos que reemplazar una línea en esta función:

double GetSellStopLevel(double StopLvl) {
  int ILvl = (Bid+HalfPoint)*RecDLvl;
  double DownLvl = DLvl*ILvl;
//  if (DownLvl > Bid-StopLvl-HalfPoint) DownLvl -= DLvl ;
  if (Bid-StopLvl < DownLvl-HalfPoint) DownLvl -= DLvl ;
  return (DownLvl);
}

Aquí se comenta la línea equivocada. La versión correcta se adjunta al post.

Archivos adjuntos:
 
Balbesik06:



¡Candidato!

Te he visto y me dirijo a ti.

Pregunta fuera de tema.

¿Te gustaría volver a Zig-Zag?

Le escribí en "privado", no hubo respuesta.

Y sobre el EA (argumentar o no), tengo estadísticas (en el mío) 7(+) - 1(-), pero el EA de otro autor.

Y hay muchas preguntas.

Si lo comprueban (en privado) y se confirman las estadísticas, entonces me corrigen el Zig-Zag según su esquema.

Y el algoritmo (para el Asesor Experto) tiene el derecho de publicar más tarde.

¿Te gusta?

Sinceramente.

 
Balbesik06:

...

Le he escrito en la sección "privado" y no ha habido respuesta.

No he escuchado nada en privado, inténtalo de nuevo. Como último recurso puedes enviarme un correo electrónico, en mi perfil está la dirección de mi página, es fácil encontrar mi correo allí.
 
Balbesik06:

"... Como mínimo, puede enviar un correo electrónico"...

Sí, inténtalo, pasa del tema.

El punto es simple - demostrado en ONIX todos "vuelan" excepto el suyo.

No le veo sentido a ningún sevetnik si "NO TIENE" comillas.

Saludos.


P.D. Intenta (si no es muy difícil) escribir - Hola.
 

Hmm, comprobado el buzón de Onyx (y rara vez miro allí), está vacío. Y los problemas con el correo son bastante misteriosos.

Eugene, permíteme decirlo así: revisa tu cuenta personal en este foro, allí debería haber un mensaje mío desde anteayer. Sólo tienes que responder, describir el problema o dar un enlace a su descripción, escribir lo que necesitas exactamente.

Según tengo entendido, hay un problema con los vértices colgantes de diferentes Zigzags. El mío no tiene este problema. Recuerdo, cuando escribí que el problema de colgar los vértices en zigzag (lo más probable es que fuera CZZ) era casi universal. Traté de entender su causa, y creo que lo hice. Pero ha pasado mucha agua desde entonces, y creo que ahora tampoco se congelan muchos zigzags.

En cualquier caso, no está claro qué necesita exactamente. ¿Para que vuelva a hacer todos los zigzags incluidos en el ZUP?