Redactaré un asesor de forma gratuita - página 41

 
Anton Kedo:
el tema parece haber sido abandonado.
No, por qué... lo leen a veces, es que las peticiones como "tengo una idea genial, como un grial" rara vez se cumplen. Especialmente sin un TdR.
 
Buenas tardes. Tengo una idea interesante de cómo mejorar la ilean (martingala) para evitar la caída en picado. La esencia es muy larga de describir aquí, que tratará de explicar la esencia de la idea en Skype.
 
Evgeniu Semenuta:
Buenas tardes. Tengo una idea interesante de cómo modificar el illan (martingala) para evitar la caída en picado. La esencia de una descripción muy larga aquí, que tratará de explicar la esencia de la idea en Skype.
¡Lee el post anterior!
 

De acuerdo. Permítanme intentar describirlo. Digamos que el precio baja, y que el illan ya ha empezado a comprar. Naturalmente, añade posiciones para comprar aumentando el lote y así sucesivamente, hasta que el precio baje o hasta que se agote el depósito. Me gustaría probar la siguiente variante: cuando el precio alcanza las 10 rodillas, el búho coloca inmediatamente 2 órdenes pendientes (el total de LOS de las órdenes previas colocadas dividido por 2) en 15 puntos.

1 orden establece sólo stop loss en el nivel de beneficio de las 10 rodillas anteriores

2) Orden de Stop Loss sobre el nivel de beneficio de las 10 curvas anteriores, beneficio 15

Entonces tenemos dos posibles resultados: el precio establece un stop loss, vuelve, cierra la parrilla de 10 curvas y nos quedamos sin dos órdenes perdedoras. O el mercado baja persistentemente, la segunda orden se cierra sobre el beneficio y pone otra o dos órdenes negativas de la red de 10 curvas después de unos 10 puntos y cierra una o dos negativas. La segunda orden pendiente tira de un stop loss hasta el punto de equilibrio y espera hasta el final.

De alguna manera. Es difícil de explicar con palabras (. Si te interesa, te explicaré la idea en detalle en el gráfico de Skype.

 
Evgeniu Semenuta:

De acuerdo. Permítanme intentar describirlo. Digamos que el precio baja, y que el illan ya ha empezado a comprar. Naturalmente, añade posiciones de compra aumentando el lote y así sucesivamente, hasta que el precio retroceda o hasta que se agote el depósito. Me gustaría probar la siguiente variante: cuando el precio alcanza las 10 rodillas, el búho coloca inmediatamente 2 órdenes pendientes (el total de LOS de las órdenes previas colocadas dividido por 2) en 15 puntos.

1 orden establece sólo stop loss en el nivel de beneficio de las 10 rodillas anteriores

2) Orden de Stop Loss sobre el nivel de beneficio de las 10 curvas anteriores, beneficio 15

Entonces tenemos dos posibles resultados: el precio establece un stop loss, vuelve, cierra la parrilla de 10 curvas y nos quedamos sin dos órdenes perdedoras. O el mercado baja persistentemente, la segunda orden se cierra sobre el beneficio y pone otra o dos órdenes negativas de la red de 10 curvas después de unos 10 puntos y cierra una o dos negativas. La segunda orden pendiente tira de un stop loss a Breakeven y espera hasta el final.

De alguna manera. Es difícil de explicar con palabras (. Si te interesa, te explicaré la idea en detalle en el gráfico de Skype.

¡La idea de siempre que lleva a la inevitable ciruela! Los detalles ya no son interesantes.
 

Buenas tardes, ¿se contempla en este hilo la opción de rehacer el EA original? Si es así, a continuación encontrará la descripción:

Tengo un EA que necesita ser refinado ( no cierra las operaciones por sí mismo, cuando se permite el comercio y dos parámetros no se cumplen : indicación de la zona de cierre y la indicación del tamaño del volumen de cierre parcial )ToR Descripción :

Plazo: cualquiera


Símbolos utilizados:

Bandas de Bollinger : periodo 20

valores atípicos 2

aplicado para cerrar



ADX: período 14

aplicado para cerrar

fijar el nivel en 25



Señal de compra: durante un plano (cuando el nivel ADX está por debajo de 25), espere a que el precio se cierre en la Banda de Bollinger inferior (el parámetro o define el punto de apertura de la orden, la distancia desde la Banda de Bollinger media a la Banda de Bollinger inferior se define como el 100 %, el 0 % está en la Banda de Bollinger inferior, el 10 % es más alto, etc.), luego espere el aumento del precio en la vela de confirmación. Abrimos la compra. El cierre de la orden depende de las opciones en el EA, los parámetros de las opciones se explicarán más adelante. la orden se cierra con el parámetro n cuando toca la banda media de bollinger (el parámetro n se establece en porcentaje, define qué parte del volumen se cierra, en lotes este valor se redondea hacia abajo, 0% significa que no se cierra nada) . El Stop Loss se fija en el precio de apertura de la orden, luego la orden se cierra completamente con el parámetro f (la distancia de la banda de bollinger media a la banda superior es del 100%, el parámetro f definido como un porcentaje define el punto donde se cerrará la orden si el precio lo alcanza, el 0% es el punto en la banda de bollinger superior el 10% es inferior, etc.) )/

Orden de venta: durante un plano (cuando el ADX está por debajo de 25), espere a que el precio cierre en la banda superior de Bollinger (o especifica el punto de entrada de la orden, la distancia de la banda media de Bollinger a la banda superior es del 100 por ciento, el 0 por ciento está en la banda superior de Bollinger, el 10 por ciento está por debajo, etc.), luego espere a que la vela de confirmación cierre moviéndose hacia el precio inferior. Abrimos la venta. El cierre de la orden depende de las opciones en el EA, los parámetros de las opciones se explicarán más adelante. La orden se cierra con el parámetro n cuando toca la banda de bollinger media. (el parámetro n se establece en porcentajes, define qué parte del volumen se cierra, en lotes este valor se redondea hacia abajo, significa que no se cierra nada).Stop Loss se establece en el precio de apertura, además la orden se cierra completamente con el parámetro f. (la distancia de la banda de bollinger media a la banda inferior se considera como el 100 %, el parámetro f definido como un porcentaje define el punto en el que se cerrará la orden si el precio lo alcanza, el punto 0 % en la banda de bollinger inferior, el 10 % superior, etc.)



Opciones :

Los Stop Loss se pueden establecer en las opciones del Asesor Experto o en ninguna. Hay dos tipos de Stop Loss: el Stop Loss regular que se da en pips y el Stop Loss en función del beneficio esperado, es decir, cuando se abre una orden desde el precio de la orden hasta las Bandas de Bollinger opuestas (superior o inferior) se calcula la distancia en pips. En las opciones se fija el coeficiente S (de 0 a 1), que se multiplica por el beneficio potencial. Este valor es el Stop Loss, es decir, si el coeficiente es 0,5, el Stop Loss será igual a la mitad del beneficio potencial. )

El programador que escribió este EA está principalmente interesado en escribir cualquier asesor basado en las líneas de Bollinger y no se planea una modificación adicional. En el archivo adjunto veo las estadísticas de la estrategia en el historial, en la que se basa el asesor y muestras de la ejecución de media semana del asesor en el VPS (ejecuté tres términos con diferentes manimanagement). A continuación se muestra el código:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      BBPeriod=20;
input double   BBdeviation=2.0;
input int      ADX=14;
input double   AdxLevel=25;
input double      SL=2000;
input double      TP=0;
input int      Obuy=5;
input int      Osell=5;
input double   Lot=0.1;
input bool     CloseMiddle=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen=false;
bool sellOpen=false;
double _Obuy;
double _OSell;
int TryShots= 3;
int Slippage=50;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   _Obuy=Obuy/100;
   _OSell=Osell/100;

   if(!IsTradeAllowed())
     {
      string message="You must allow trading!";
      Print(message);
      Comment(message);
      return INIT_FAILED;
     }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevTime;
   datetime currentTime=iTime(Symbol(),0,0);
   if(prevTime==currentTime)
     {
      return;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx=iADX(NULL,0,ADX,PRICE_CLOSE,0,2);

   if(adx<AdxLevel)
     {
      double bbMain1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,2);
      double close=iClose(NULL,0,2);
      if(!buyOpen)
        {
         double bbDown1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,2,2);
         BuyPosition(bbDown1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen=false;
           }
        }

      if(!sellOpen)
        {
         double bbUp1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,1,2);
         SellPosition(bbUp1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen=false;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition(double bbDown,double bbMain,double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if(close<DownProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent>openCurrent)
        {

         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Bid-SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Bid+TP*Point,Digits);
            Print(Ask+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_BUY !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_BUY !"); break; }
              }
            else
              {
               buyOpen=true;
               break;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition(double bbUp,double bbMain,double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if(close>UpProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent<openCurrent)
        {
         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Ask+SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Ask-TP*Point,Digits);
            Print(Bid+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_SELL !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_SELL !"); break; }
              }
            else
              {
               sellOpen=true;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos(int or_tp)
  {
   int i,err,k=OrdersTotal();
//---
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(or_tp==OrderType())
              {
               for(int it=0; it<TryShots; it++)
                 {
                  ResetLastError();
                  RefreshRates();
                  double _price=Ask; if(or_tp==OP_BUY) _price=Bid;
                  //---
                  if(!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if(it>=TryShots) { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                     err=GetLastError();
                     if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*100);
                     else { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                    }
                  else break;

                 }
              }
           }
        }
     }
  }

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

Añado más capturas de pantalla desde el terminal, corriendo en el VPS: capturas "1" y "2" ejemplos cuando el asesor no abre las ofertaspor sí mismo

Captura de pantalla "Bloqueo", el Asesor Experto no cerró la posición de compra por sí mismo y abrió una posición de venta debido a las condiciones de venta que aparecen.
Captura de pantalla "pedido recibido", en este caso el pedido se abrió correctamente.
Archivos adjuntos:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

Quién tiene un script que cierra todas las órdenes en el beneficio total - por favor, envíelo a nosotros.

Se lo agradecería.

 

En la actualidad, la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo.

De hecho, ¡incluso podría intentar escribir uno yo mismo si entiendo qué variables utiliza para mostrar los marcadores "ojo", azul y rojo en la pantalla!

 
baikot:

En la actualidad, la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo, y la mayoría de los países de la Unión Europea están en proceso de desarrollo.

De hecho, ¡incluso podría intentar escribir uno yo mismo si entiendo qué variables utiliza para mostrar los marcadores "ojo", azul y rojo en la pantalla!

¿Dónde está el propio indicador?
 
Victor Nikolaev:
¿Dónde está el propio indicador?
Pero no es necesario. Sólo encontrarás el descompuesto y entrarás en la casa de baños.