[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 500

 

Dime si soy un programador que no sabe mucho de programación.

¿Mira el historial al abrir un pedido o no?

extern int dDay;
//extern bool fl;

int init()
  {
      return(0);
  }

int deinit()
  {
      return(0);
  }

int start()
  {
      double MA2,MA3;
      double Fr,Fr1;
      double SAR;
      double prof;
      int total,cnt;
      
      MA2 = iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,0);
      MA3 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
      Fr = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,0);
      Fr1 = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,1);
      
      //SAR = iSAR(NULL,0,0.2,2,0);
      
      if((Hour() == 22) && (OrdersTotal() == 0) && (dDay != Day()))
      {
         //if(Open[0] > MA) // BUY
         if(MA3 < MA2)
         //if(SAR < Open[0])
         {
            OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
            //fl = true;
         }
         //if(Open[0] < MA) // SELL
         if(MA3 > MA2)
         //if(SAR > Open[0])
         {
            OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
            //fl = true;
         }
      
         dDay = Day();
      }
      
      /*if((Hour() == 8) && (OrdersTotal() == 1) && fl)
      {
         fl = false;
         if(OrdersTotal() != 0)
         {
            total = OrdersTotal();
            for(cnt=0;cnt<total;cnt++)
            {  
               OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);         
               prof = OrderProfit() / 10;
               if(prof <= -10)
               {
                  if(OrderType()==OP_BUY)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
                     OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
                  }
                  if(OrderType()==OP_SELL)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
                     OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
                  }
               }
            }
         }
      }*/
  
      
      if(OrdersTotal() != 0)
      {
         total = OrdersTotal();
         for(cnt=0;cnt<total;cnt++)
         {  
            OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);                     
            prof = OrderProfit() / 10;
            if(prof >= 4)
            {
               if(OrderType()==OP_BUY)
               {
                  OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
               }
               if(OrderType()==OP_SELL)
               {
                  OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               }
            }
         }
      }

      return(0);
  }
 
baykanur:

Dime, si no soy bueno programando.

¿se ve esto en el historial al abrir un pedido o no?



1) utilizar la etiqueta SRC al insertar el código

2) borrar lo que se comenta.

3) díganos qué quiere ver y cuál es la discrepancia

 
ilunga:

1) utilizar la etiqueta SRC al insertar el código

2) eliminar lo que se comenta

3) dígame qué quiere ver y cuál es la discrepancia

src insertado

¿Qué se comenta?

hay una discrepancia en el número de acuerdos rentables en el probador, por eso pregunté

 

Quiero aprender a dibujar niveles en el gráfico en función de los valores del indicador en una ventana independiente. Por ejemplo, si el MACD cruza el nivel 0 de abajo a arriba, se dibuja una línea en el gráfico según el mínimo de la barra donde se produce el cruce. Cuando el MACD se cruza desde arriba hacia abajo, la línea en Alto se dibujará en consecuencia. He escrito algo, se compila sin errores, pero no pasa nada. ¿Puede ayudarme, por favor?

#property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  Blue

double    Buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Buffer);

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double level;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
      
      double    macd = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
      double    macd1 = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
      
      if (macd > 0 && macd1 < 0)
      {
      level = iLow("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iLow[i]?
      Buffer[i]=level;
      }
      else if (macd < 0 && macd1 > 0)
      {
      level = iHigh("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iHigh[i]?
      Buffer[i]=level;
      }
   return(0);
  }
 
baykanur:

src insertado

No sé lo que se ha comentado

hay una discrepancia en el número de operaciones rentables en el probador

siempre hay 2 objetos en la partida que se comparan.

¿el probador no coincide con la demo en el mismo periodo? Por ejemplo, debido a que la difusión en el probador es diferente

 
Ichimo:

Quiero aprender a dibujar niveles en el gráfico en función de los valores del indicador en una ventana independiente. Por ejemplo, si el MACD cruza el nivel 0 de abajo a arriba, se dibuja una línea en el gráfico según el mínimo de la barra donde se produce el cruce. Cuando el MACD se cruza desde arriba hacia abajo, la línea en Alto se dibujará en consecuencia. He escrito algo, se compila sin errores, pero no pasa nada. Por favor, ayuda.

la línea es de al menos 2 puntos ;)

Buffer[i]=level;

es un punto, los adyacentes son probablemente cero. es por eso que la línea no tiene donde dibujarse

 //Почему выскакивает ощибка если написать просто iLow[i]?
porque Low[i] no tiene "i" al principio
 
Vinin:

¿Dónde está esa cesta?
Puedo dirigirte a tu cesta... :)
 
¿Hay alguna manera de dividir la distancia entre los dos precios en 3-4 partes, no sólo dividirlos, sino también conocer el precio de cada una de las partes resultantes?
 
sss2019:
¿Existe alguna forma de dividir la distancia entre los dos precios en 3-4 partes, y no sólo dividirlas, sino también averiguar el precio de cada una de las partes resultantes?
double price1;

double price2;

...

if (price1 > price2)
{
   double delta = price1 - price2;
   double level1 = price2 + delta*0.25;
   double level2 = price2 + delta*0.5;
   double level3 = price2 + delta*0.75;
}
=)
 
ilunga:

una línea son al menos 2 puntos ;)

este es un punto, los vecinos son probablemente cero. por lo tanto no hay ningún lugar donde dibujar la línea

porque Low[i] no tiene "i" al principio



Así que, o bien tengo que crear un punto anterior o dibujar una Flecha en lugar de una línea. Gracias, seguiré devanando los sesos.
Razón de la queja: