[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 5

 
granit77:

Pregunta: ¿Cómo puedo poner un terminal limpio? Después de todo, cuando intento reiniciar, el sistema me reconoce automáticamente, permitiéndome recargar el archivo del terminal y guardando la información acumulada anteriormente: cuenta demo, indicadores escritos, etc. Aparentemente hay un archivo entre los guardados que no permite recargar los datos históricos. :)
 
Hola, mi pregunta es si los EAs de MT4 funcionarán en este dispositivo
 
boris.45:
Simplemente descargue de nuevo desde su agente y póngalo en un directorio diferente. Introduzca su nombre de usuario y contraseña de la cuenta de demostración manualmente si lo necesita, pero es mejor abrir una nueva.
Y como un bebé recién nacido estarás completamente libre de pecado.
 
afirius:
Hola! La pregunta es si los EAs de MT4 funcionarán en este dispositivo
¡lo hará!
 
Genial) por fin un remedio).
T-G:
lo será.
 
que ayudaría, cambiar comprar por vender en el código de este experto
Archivos adjuntos:
ema_wma.mq4  5 kb
 

Hola. Este es el problema.

El mismo Asesor Experto opera normalmente en una cuenta demo y en el probador, pero se niega a funcionar o funciona incorrectamente en una cuenta real.

¿Qué debo hacer para solucionarlo?

extern int ma1 = 7;
extern int ma2 = 100;
extern int ma3 = 200;
extern int ma4 = 300;
extern int shift = 15;
extern double StartLot = 0.5;
extern double LotStep = 0.25;
extern int candleAmount = 25;
extern bool workAlone = true;

double   MA1;
double   MA2;
double   MA3;
double   MA4;
int      Trend;
int      i;
datetime shiftTime;
int      ticket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if (Digits == 3 || Digits == 5)
      shift = shift*10;
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);
   if (MA1<MA2 && MA1<MA3 && MA1<MA4)        {Trend = 1;}
   else if (MA1>MA2 && MA1>MA3 && MA1>MA4)   {Trend = 4;}
   else                                      {Trend = 2;}
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);

   if (Trend == 2)
   {  if (MA1<MA2 && MA1<MA3 && MA1<MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_BUY)
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(Symbol()),NormalizeDouble(Bid,Digits),shift,0,0,"",777,0,Red);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 1;
      }
      else if (MA1>MA2 && MA1>MA3 && MA1>MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_SELL)
              OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(Symbol()),NormalizeDouble(Ask,Digits),shift,0,0,"",777,0,Blue);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 4;
      }
   }

   if (Trend == 1)
   {  if (MA1>MA2 || MA1>MA3 || MA1>MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);}}}}}

   if (Trend == 4)
   {  if (MA1<MA2 || MA1<MA3 || MA1<MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);}}}}}
//----
   return(0);
  }

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

double LotsOptimized(string symbol)
{  double lot = StartLot;
   int    losses = 0;
   if (LotStep > 0)
   {  for (int c = OrdersHistoryTotal() - 1; c >= 0; c--)
      {  if (OrderSelect(c,SELECT_BY_POS,MODE_HISTORY) == false) break;
         if (OrderSymbol() != symbol) continue;
         //----
         if (OrderProfit() > 0) break;
         if (OrderProfit() < 0) losses++;
      }
      if (losses >= 1) lot = NormalizeDouble(lot + LotStep * losses,2);
   }
   if (lot < MarketInfo(symbol,MODE_MINLOT)) lot = MarketInfo(symbol,MODE_MINLOT);
   return (lot);
}

//+------------------------------------------------------------------+ 
 
deboir:

Hola. Este es el problema.

El mismo Asesor Experto opera normalmente en una cuenta demo y en el probador, pero se niega a funcionar o funciona incorrectamente en una cuenta real.

¿Qué debo hacer para solucionarlo?


Los milagros no ocurren. ¿Qué empresa de corretaje tiene? Algunas empresas de corretaje no le permiten colocar órdenes de mercado si su orden contiene instrucciones para establecer un stop loss y/o take profit. Broco, por ejemplo, es así. En este caso, hay que abrir primero una orden de mercado y sólo después colocar órdenes de stop mediante una modificación.
 
Concretamente he realizado una prueba con el parámetro x=1, luego con el parámetro x=2, luego he optimizado x de 1 a 2 paso 1. todas las casillas están desactivadas, saltando también los cortes inútiles. el algoritmo genético ha sido activado y desactivado. los resultados son diferentes, ¡ayuda!

he desmarcado "saltar los cortes inútiles" y los cortes aparecen. sólo que difieren de una prueba simple. por ejemplo, con el parámetro x=1 una prueba simple da como resultado 500 tratos, con x=2 - 700 tratos. Debo optimizar este parámetro y x=1 ahora obtiene 1 trato, x=2 también obtiene 1 trato. Mi Asesor Experto está utilizando la modificación de gráficos virtuales, ¿es posible que sea que la optimización falla para crear un objeto gráfico?

aconsejar lo que podría ser, lo he probado en el probador, las órdenes están abriendo y cerrando normalmente, he seleccionado el parámetro, he probado todos los resultados son rechazados, he cambiado manualmente este parámetro en la prueba, todo está bien. He activado el algoritmo genético durante la optimización y desactivado, cambiado mi configuración.
 

dzhini, eddy

Advertencia por duplicación de mensajes. Mensajes duplicados eliminados. A partir de ahora habrá una prohibición.