Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 809

 
pycha:

Hola. He buscado en la documentación pero no lo he encontrado. mi pregunta es la siguiente. ¿puedo cambiar esta imagen al iniciar el EA por mi logotipo?

#Icono de la propiedad "\\\\Images\\\\x.ico";
 
evillive:
#Icono de propiedad "\\\\Images\\\\xxx.ico";

Y, después de la compilación, el archivo de iconos estará incrustado en el archivo *.ex4 y no habrá necesidad de mover el archivo de iconos después del archivo compilado.
 
gracias)))
 
roymax:
¿y no se arregló de ninguna manera?

Como puedes ver.

Sin embargo, la forma más lógica y sencilla de proxy es prohibir el cambio de herramienta de la ventana MT. Así que sugiero que lo consideremos un error :)

 
Mi Asesor Experto analiza gráficos de varios meses, pero hay gráficos que devuelven todo el historial en un gráfico de un minuto, y hay gráficos que no muestran más de un mes y medio, e incluso eso es si se desplaza el gráfico hacia atrás manualmente, ni siquiera se desplaza más allá de una fecha determinada.
 
pycha:
Mi Asesor Experto analiza el gráfico durante un determinado número de meses, pero hay gráficos que devuelven todo el historial en el gráfico de minutos, y hay gráficos que no quieren devolver más de un mes y medio, e incluso eso es si se desplaza el gráfico hacia atrás manualmente, incluso más allá de una determinada fecha no se desplaza manualmente.
El corredor decide exactamente la cantidad de historial que debe dar. Si el número máximo de barras se establece en la configuración del terminal, y hay menos de ellos en el gráfico, entonces el corredor no dará más.
 
Lo entiendo, gracias.
 

Hola Estimados usuarios del foro. Me gustaría hacer una petición. ¿Podría alguien publicar un trozo de código con una función iEnvelopesOnArray() que funcione? Todos mis intentos de domarlo hasta ahora han sido infructuosos. Sospecho que es culpa de los desarrolladores. Aquí hay un indicador para comprobar su funcionamiento.

//+------------------------------------------------------------------+
//|                                            Tester_EnvOnArray.mq4 |
//|     Copyright 2005 г. до нашей эры, MetaQuotes Software Company. |
//|                                              https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005 г. до нашей эры, MetaQuotes Software Company."
#property link        "https://www.mql4.com"
#property description "Пример индикатора для проверки работы функции iEnvelopesOnArray()"
#property strict

//--- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 2
#property   indicator_color1  Green
#property   indicator_color2  Red

//--- indicator buffers
double     ExtEnvBuffer[];
double     ExtPriceBuffer[];

//--- bars minimum for calculation
#define  DATA_LIMIT  100

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
  IndicatorShortName("EnvOnArr");
  
  //--- 1 additional buffer are used for counting.
  IndicatorBuffers(2);
  IndicatorDigits(Digits + 2);
  
  //--- drawing settings
  SetIndexStyle(0, DRAW_LINE);
  SetIndexDrawBegin(0, DATA_LIMIT);
  
  SetIndexStyle(1, DRAW_NONE);
  SetIndexDrawBegin(1, DATA_LIMIT);
  
  //--- all indicator buffers mapping
  SetIndexBuffer(0, ExtEnvBuffer);
  SetIndexBuffer(1, ExtPriceBuffer);
  
  //--- name for DataWindow and indicator subwindow label
  SetIndexLabel(0, NULL);
  SetIndexLabel(1, NULL);
  }
  
//+------------------------------------------------------------------+
//| EnvelopesOnArray                                                 |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[])
  {
  int    i, limit;
  double prev = 0.0, Deviation = 1;
  
  //--- check for rates total
  if(rates_total <= DATA_LIMIT)
    return(0);
    
  //--- last counted bar will be recounted
  limit = rates_total - prev_calculated;
  
  if(prev_calculated > 0)
    {
    limit++;
    }
    
  //--- price counted in the 2-nd additional buffer
  for(i=0; i<limit-1; i++)
    ExtPriceBuffer[i] = close[i];
                       
  //--- price counted in the 1-st additional buffer
  for(i=0; i<limit-1; i++)
    ExtEnvBuffer[i] = iEnvelopesOnArray(ExtPriceBuffer, 0, 5, MODE_SMA, 0, 1, MODE_UPPER, i);
  
  //--- done
  return(rates_total);
  }
  
//+------------------------------------------------------------------+
Archivos adjuntos:
 

Hola a todos. Estoy recibiendo errores durante la prueba:

2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: ticket no válido para la función OrderModify

2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: OrderModify error 4051

Lo he comprobado muchas veces, no hay ningún error (por lo que veo).

El fracaso se produce en esta parte del programa:

ModificarCompra, ModificarVenta, SeleccionarCompra, SeleccionarVenta - tienen tipo bool

SendBuy, SendSell-int , int TP = 30


while(true)

 {

  

  SPREAD=MarketInfo(Symb,MODE_SPREAD);

  SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);//buy

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<NormalizeDouble(Ask,Digits))

  {

  ModifyBuy=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(10-SPREAD)*Point,Bid+(30- SPREAD)*Point,0,0); 

  R=1;

  break;

  }//if2

    

  Timen=OrderCloseTime();

  if(Timen>0)

  {

  //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();//значение Long2

   StopLoss_Func();//значение SL

//--------------------------  

   SendBuy=OrderSend(Symb,OP_BUYSTOP,Lote,Ask+Long2*Point,1,Bid-SL*Point,NULL);

   for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==4)

      {

      OrderTicketBuy=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue;  

  }//if2

  

  SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET,MODE_TRADES);//sell

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()-TP*Point,Digits)>NormalizeDouble(Bid,Digits))

  {

   

   ModifySell=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(10-SPREAD)*Point,Ask-(30- SPREAD)*Point,0,0);

   R=2;

   break; //спред

  }//if2

  

   Timen=OrderCloseTime();

  if(Timen>0)

  {

 //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();

   StopLoss_Func();

//--------------------------  

   SendSell=OrderSend(Symb,OP_SELLSTOP,Lote,Bid-Long2*Point,1,Ask+SL*Point,NULL);

    for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==6)

      {

      OrderTicketSell=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue; 

  }//if2

}//while1



Si necesitas el código completo, aquí


Archivos adjuntos:
test3_1.mq4  15 kb
 
¡Caballeros! ¿Puedes decirme el código que dejará de probar un EA cuando no haya suficiente margen para abrir una posición?
Gracias.
Razón de la queja: