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

 
Artyom Trishkin:

¿En el probador en un símbolo diferente? ¿O en demo/real en un símbolo diferente? ¿O en el probador de este símbolo? ¿O en demo/real en este símbolo?

¿Por qué tienes que sacar todo de ti?

¿Qué quieres decir? ¿Qué diferencia hay en el lugar donde lo has probado? La cuestión es si Punto = 0. Y si se puede, ¿cómo escribo el código correctamente para no encontrarme con un error: división por cero?
 
LuckySith:

Lo siento, soy muy friki, no lo entiendo.
Tal vez usted tiene el indicador más simple con un código de algunos, tengo una analogía de entender? Porque no pude encontrar ninguno.

Tengo un código muy simple que pone puntos en el centro de la barra. Cómo hago para que aparezca el texto al pasar el ratón por encima de ellos, o una caja, lo que sea.



#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars;
//----  
   for(int i=limit; i>=0; i--)
     {
      double       fabody0 = fabs(Close[i]-Open[i]);
      double       fabody1 = fabs(Close[i+1]-Open[i+1]);
      double       fabody2 = fabs(Close[i+2]-Open[i+2]);
      double       fabody3 = fabs(Close[i+3]-Open[i+3]);
      double       fabody4 = fabs(Close[i+4]-Open[i+4]);
      double       fabody5 = fabs(Close[i+5]-Open[i+5]);
      double       fabody6 = fabs(Close[i+6]-Open[i+6]);
      double       fabody7 = fabs(Close[i+7]-Open[i+7]);
      if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1]))
      {  
         if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1)))
         ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2;
      }
     }
//----
   return(0);
  }
Prueba con
Archivos adjuntos:
gmxdk8j.mq4  6 kb
 
Gevorg Hakobyan:
¿Qué quieres decir? ¿Qué diferencia hay en el lugar donde lo has probado? La cuestión es si Punto = 0. Y si se puede, ¿cómo debo escribir el código correcto para no encontrarme con un error: división por cero?
Como quieras.
Así que comprueba el divisor a cero antes de dividir.
Pensé que te interesaba la causa, no el efecto, y la muleta adecuada.
 
Artyom Trishkin:
Como quieras.
Así que comprueba el divisor a cero antes de dividir.
Pensé que te interesaba la causa, no el efecto, y la muleta adecuada.
No he leído todo el diálogo, pero sospecho que se trata de un problema de impresión del quinto decimal.
 
Alexey Viktorov:
No he leído todo el diálogo, pero sospecho que es un problema de impresión del quinto decimal.
No, divide por Punto() y obtiene una división por cero.
Por eso estoy tratando de obtener una respuesta coherente sobre cómo y de dónde obtiene los datos de los símbolos.

 
Artyom Trishkin:
No, divide por Punto() y obtiene la división por cero.
Estoy tratando de obtener una respuesta clara de cómo y dónde toma los datos para el símbolo.

if(v=="NZD")
{
h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+
(iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+
(iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD",MODE_POINT)+
(iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+
(iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+
(iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+
(iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT);
}
 
Alexey Viktorov:
No he leído todo el diálogo, pero sospecho que es un problema de impresión del quinto decimal.
¿Podría ser ese el problema?
 
Gevorg Hakobyan:
¿Podría ser ese el problema?
No. Es sólo la invisibilidad del quinto dígito al imprimir y en las alertas.
 
Alekseu Fedotov:
Prueba con
En general, eso es lo que necesitas, pero el problema es que la descripción será bastante grande, y este método puede escribir literalmente un par de palabras - el resto simplemente no aparece
 

Hola.

Por favor, ayuda.

Ahora el lote de cada orden siguiente se incrementa en 1, 2, 3, 4, 5...

Quiero aumentar el lote no cada orden, sino en pasos de 3, así que 1, 1, 1, 1, 2, 2, 2, 3, 3, 3...


extern double   LotStop        = 0.01;
extern double   Plus_LotStop   = 0.01;
extern double   Plus_N_ORD  = 3;        //каждые N ордеров
void OnTick()
  {
//---
      for (int i=1; i<=OrdersStop; i++)
   {
         if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1))
         {
            OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i);
            numB++;
            PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits);
          
            OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i);
            numS++;
            PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits);
         }
      
      LOTs=LOTs+Plus_LotStop;
      }
  }
Razón de la queja: