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

 
Valeriy Yastremskiy #:

Si quieres mirar en el probador, puedes quitar la prueba para una hora posterior a la actual. Esto es en OnInit. Y no recuerdo si en 4ka en el probador una solicitud de tiempo devolverá exactamente el tiempo del probador. Creo que devolverá la hora actual, por lo que en el probador sólo hay que poner órdenes a la vez y ya está. Además, al solicitar la hora local se obtendrá la hora local actual.

Es en el 5k en el probador un emulador de entorno completo.

Gracias por la aclaración

 
El anterior, desgraciadamente, no encajaba. Después de una mirada más cercana a la base de código, he encontrado casi exactamente lo que necesito

https://www.mql5.com/ru/code/10236

//+------------------------------------------------------------------+
//|                                                    i`lbeback.mq4 |
//|                                Copyright ? 2011, AM2 && Tiburond |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2011, AM2 && Tiburond"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int  StopLoss    = 1300;   //???????? ??????
extern int  StartHour   = 21;     //??? ?????? ????????(???????????? ?????)
extern int  Distance    = 250;    //?????????? ?? ???? ??? ????????? ??????
extern int  Step        = 50;     //??? ????????? ???????
extern int  Count       = 4;      //?????????? ??????????????? ???????
extern int  Expiration  = 4;      //????? ????????? ??????
extern double  Lots     = 1;      //???
extern bool  MM         = true;   //?????????? ???????????????
extern double  TSP      = 5;      //????
extern bool  BU         = true;   //?????????? ?????? ??????? ? ????????? ? ??????? ???
extern int  BUHour      = 2;      //??? ????? ??????? ??????? ??????? ? ?????????

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int  init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int  deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int  start()
  {
   int  b=0,s=0,res;
   datetime  expiration = TimeCurrent()+3600*Expiration;
   double  BuyPrice=fND(Open[0]-Distance*Point);
   double  SellPrice=fND(Open[0]+Distance*Point);  
   for (int  i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;
        }  
     }
   if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
   if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();  
   if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {
     {              
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);      
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }
        
   if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {  
     {              
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }    
//----  
   return(0);
  }
//+------------------------------------------------------------------+
double  fND(double  d, int  n=-1)
  {  
   if (n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
double  fLots()
  {
   double  lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  );
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  );
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP );
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );      
      double  dollarsPerPip=0.0;

      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
void  ClosePositions()
  {
   if(BU)
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
double  AllProfit()
  {
   double  Profit = 0;
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
    }
   return (Profit);
  }
//+------------------------------------------------------------------+


Por favor, ayúdenme a hacer correcciones. Este EA no cierra forzosamente las órdenes abiertas. Me gustaría que junto a la hora de establecer los límites también pudiéramos establecer la hora de su cierre forzoso.
Necesitamos TP y trall para optimizarlos. Un trall, para que todos los límites se cerraran en una pequeña forma pero recoger el ruido nocturno.
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
Hola. Quién puede ayudar con un EA para MT4. Necesito un EA sin ningún tipo de truco para seguir las órdenes colocadas manualmente (con o sin magia). Si una orden se cierra en un stop loss, elEA abrir á una nueva orden en la misma dirección con un lote, SL y TP especificados. Si una orden se cierra en un take profit, el EA abrirá una nueva orden en la dirección opuesta con un lote, SL y TP especificados. Quizás haya alguna solución ya hecha, yo no he sido capaz de encontrar nada. Muchas gracias de antemano.
 
Anton Yakovlev:
Si tienes una buena estrategia y estás dispuesto a compartirla, puedo escribir un EA.
Hola, necesito un indicador que funcione en base a los movimientos de las velas (patrón). es posible escribirlo, cuánto y cómo pasar su solicitud.
 
¡Hola!
¿Puedes escribir un asesor pips para mt4
Estrategia :
Establezca 2 órdenes limitadas de compra/venta dirigidas de forma diferente a una distancia X entre sí con stop, take, trawl.
Por ejemplo:
Si el precio alcanza cualquiera de los límites y cierra esta orden en el stop o en la toma, el límite opuesto se cancela y se vuelven a establecer 2 límites dirigidos de forma diferente.
Parámetros de EA:
Lote
Stop
Tome
Red de arrastre
Espacio límite
Magia
Deslizamiento
 
Ivan Bielyi #:
Establecimiento de 2 órdenes de compra/límite de venta dirigidas de forma diferente con un límite de diferencial en

¿Cómo puedo limitar el spread en las órdenes limitadas?

 
Evgeny Belyaev #:

¿Y cómo se puede limitar la extensión de los limitadores?

Es decir, si el spread es superior a 5 pips, por ejemplo, entonces no coloque órdenes pendientes, pero si es demasiado problema, puede omitir este parámetro.
 
Ivan Bielyi #:
Me refiero a que si el spread es superior a 5 puntos entonces no debemos colocar órdenes pendientes, pero si es muy problemático, podemos omitir este parámetro.

¿Qué sentido tiene? No se ejecutarán ahora (son límites). Y cuando llegue el momento de la ejecución, el diferencial será completamente diferente.

 
Evgeny Belyaev #:

¿Qué sentido tiene? No se ejecutarán ahora (son límites). Y cuando llegue el momento de la ejecución, el diferencial será completamente diferente.

Tonto, entonces exactamente sin este parámetro))
 
Daniil Osipov #:
Lo que toma como base y lo complejo que es el algoritmo.

Determina la tendencia de la media móvil

TrendUp := MAvg[1]>TrendUp[1] ? max(Up,TrendUp[1]) : Up