Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 799

 
Artyom Trishkin:
La basura está en los topes. Primero hay que introducir un valor en blanco en todos los búferes que se van a dibujar (si son búferes de flecha), y sólo entonces calcular el indicador. No puedo ver el código desde mi móvil, no puedo decir exactamente.

¿Te refieres a hacer ArrayInitialize primero?

 
Roman Sharanov:

¿Te refieres a hacer ArrayInitialize primero?

Esto ya está en marcha.
En el bucle del indicador, tienes que asignar el buffer a un "valor vacío" en la celda del buffer con el índice del bucle.
 
Artyom Trishkin:
Esto ya está en marcha.
En el bucle indicador, hay que asignar un "valor vacío" a la celda del buffer con el índice del bucle.

Bien, gracias.

 
Artyom Trishkin:

Sí, estudia el ejemplo:

Gracias, iré a la fuente del conocimiento :-)


Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta para principiantes sobre MQL4, ayuda y discusión sobre algoritmos y códigos

Artyom Trishkin, 2019.03.31 09:10

Ya está ahí.
En un bucle indicador, es necesario asignar un valor de b úfer "valor vacío" a la celda de búfer con el índice del bucle.

¿Es que hay que dar explícitamente un valor nulo a cada matriz?

Esta basura puede ser tratada mediante PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) ?

 
psyman:

Gracias, iré a la fuente de conocimiento :-)



¿Es necesario poner explícitamente cada matriz a un valor cero?

¿Se puede tratar esta basura con PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0)?

Coloque el cursor sobre el nombre de la función en el editor y pulse F1 y aparecerá un milagro.
 
Descargado el bot, ¿con qué puede estar relacionado este error?
Todos los que instalaron el bot funcionan, yo soy el único que tiene esto. Reinstalé el terminal, lo abrí como administrador, nada ayuda

 
No hay errores ni advertencias durante la compilación. Pero las posiciones no se abren (abrió sólo 1 posición de compra y la cerró en la línea de toma).

Todavía no sé cuál es el problema.

//+------------------------------------------------------------------+
//|                                    Test advisor on iDeMarker.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//------------------параметры советника -------------------------------
extern double lots=0.01; //
extern int Magic=1111678111;
extern int Slippage=1;
//double sell_level=0.7;
//double buy_level=0.3;

extern double StopLoss=50;
extern double TakeProfit=50;
extern double TrailingStop=30;
double SL,TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
   int ticket;
// int cnt,total;

// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:
He descargado el robot, ¿con qué puede estar relacionado este error?
No sé qué hacer con él. He reinstalado el terminal, lo he abierto como administrador, nada ayuda.

Lo único que queda por hacer es reinstalar el sistema operativo, o cambiar... sabes qué.




Tienes una idea equivocada. Me refería al Asesor Experto.

 
Alexey Viktorov:

Lo único que queda por hacer es reinstalar el sistema operativo, o cambiar... sabes qué.




Tienes una idea equivocada. Me refiero al asesor.

¿Cuál es la razón?
 
Roman Sharanov:
¿Cuál es la razón?

En estos casos no trato de resolverlo ni de arreglarlo. Siempre lo tiro sin remordimientos y lo olvido.