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

 
Ivan Butko #:
El anterior, desgraciadamente, no encajaba. He buscado en el código base y 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.

Introdujo la supresión de órdenes, la temporización, la fijación de topes y el arrastre (tomado aquí https://www.mql5.com/ru/code/32662, la misma explicación allí).

Trailing 2SL
Trailing 2SL
  • www.mql5.com
Трал с двумя уровнями стопа. И с установкой ТП
Archivos adjuntos:
Limit.mq4  25 kb
 
Cómo averiguar la identificación
 
Анна Калмыкова #:
¿Cómo se averigua la identificación
¿La identificación de qué?
 
Cómo retirar el dinero.
 
¿Quitarlo de dónde?
 
Ayúdame a escribir un robot de comercio EA. El primer lote compra 0,01 o menos. Si se toman dos puntos, entonces se cierra y se vuelve a comprar 0,01 dos puntos. Si no es así, el lote siempre se duplica y va a la inversa de vender 0,02 por dos o tres puntos dependiendo de las reglas de negociación por punto. Si no se toma, se compra 0,04 y se cierra, si no se toma 0,08 y así hasta ocho veces, es decir, hasta 0,128 de lote. Siempre cambiamos la dirección. Si se tomó, de nuevo 0,01. ***
 
¿Escribes EAs por una tarifa y sin discusión en el foro?
 
Lydvik-kaskad #:
¿Escribes EAs a cambio de una comisión y sin discusión en el foro?

Servicio de redacción remunerado Freelance. Siga el enlace y lea el material de referencia.

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2021.10.02
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5
 

Hola, por favor, ayuda.

Necesito un EA que busque y muestre situaciones en el gráfico como en las capturas de pantalla.

Los cálculos utilizan una parabólica SAR normal y un canal deregresión lineal normal.

El indicador muestra las situaciones buscadas en las últimas 1000 barras.

Las ondas descendentes de la parabólica
El indicador calcula los parámetros después del cambio de la parabólica.
Para el cálculo, tomamos las dos ondas de la parabólica que se suceden,
En este caso, las ondas descendentes (puntos por encima del precio).
1) Cada onda tiene el punto más bajo, la onda 1 tiene el punto A, la onda 2 tiene el punto B.
2) El nivel del punto B debe ser superior al del punto A.
3) Estos puntos están conectados por un canal de regresión y el canal se dirigirá hacia abajo - este es el
la formación deseada.

Ondas ascendentes parabólicas
El indicador calcula los parámetros después del cambio de la parabólica.
Para el cálculo, se toman dos ondas de una parabólica que se suceden,
En este caso, las ondas ascendentes (puntos por debajo del precio).
1) Se toma el punto más alto de cada onda, la onda 1 tiene el punto A, la onda 2 tiene el punto B.
2) El nivel del punto B debe ser inferior al del punto A.
3) Estos puntos están conectados por un canal de regresión y el canal debe estar dirigido hacia arriba - esto es el

la formación deseada.


Se lo agradecería mucho. Puedo compartir las entradas.

Archivos adjuntos:
yxc3e4dpz2.png  64 kb
4cprtquce6.png  62 kb
 
var58 #:

Se lo agradecería mucho. Puedo compartir las entradas.

Por qué burlarse de ParabolicSAR - muestra las entradas y salidas perfectamente como es.

Captura de pantalla 2021-10-05 114315