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

 
Roger:
Durante este minuto, el Asesor Experto abrirá hasta cuarenta órdenes.

¿Y si la primera no se abre? ¿Esperar la siguiente señal durante una hora? Está bien:

Hay una señal --> Comprueba si hay una orden/posición establecida/abierta en esta vela, no hay --> establecida/abierta, hay --> entonces no hay necesidad de más.

 
Sepulca:

Esta es la forma de controlar... ya sea el número de órdenes o sólo la primera llamada a la función...


Así que hay más de una línea como la suya.
 
Gracias a todos por su ayuda. La función está funcionando. Se recibe el resultado.
 
extern int SecondsAfterTheBar = 0; 

int start(){
...
if(NewBar() == TRUE){
...
}
return(0);
}

bool NewBar(){
   RefreshRates();
   static bool initial = FALSE;
   static datetime stat_dtime = 0;
   if ((TimeCurrent() - stat_dtime >= Time[0] - Time[1] + SecondsAfterTheBar) == TRUE){
      stat_dtime = Time[0];
    if (initial == TRUE){
      return(TRUE);
    }else{
      initial = TRUE;
      }
   }
  return(FALSE);
}

Probablemente llegue demasiado tarde, pero de todos modos cualquiera puede utilizar mi solución:

 
digits:

Obviamente llego tarde, pero mi solución puede ser útil para alguien de todos modos:


Gracias. Más universalmente si

bool NewBar( datetime SecondsAfterTheBar = 0 )

A continuación, puede especificar el retardo en segundos al llamarlo.

 


Hola amigos. Me pueden decir como obtener el valor del color del indicador de la vela anterior y escribirlo en una variable, por ejemplo si es rojo entonces doble col =1, si es amarillo entonces 2, si es verde entonces 3. He probado diferentes variantes, pero no ha funcionado. Entiendo que el valor del color depende de la disponibilidad de unidades en el buffer, pero por alguna razón no puedo obtener exactamente el último valor fijo, es decir, la vela activa, cambia constantemente de color con la aparición de una nueva vela anterior cierra el último color actuante. ¿Cómo lo sé?)

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1

#property  indicator_buffers 3
#property  indicator_color1  DarkGreen
#property  indicator_color2  Crimson
#property  indicator_color3  Yellow
//---- indicator parameters      
extern int RSI=8;
extern int valeur1=55;
extern int valeur2=45;

//---- indicator buffers
double   ExtBuffer1[];
double   ExtBuffer2[];
double   ExtBuffer3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle (0,DRAW_HISTOGRAM, EMPTY,4,DarkGreen);
   SetIndexBuffer(0,ExtBuffer1);
   SetIndexStyle (1,DRAW_HISTOGRAM, EMPTY,4,Crimson);
   SetIndexBuffer(1,ExtBuffer2);
   SetIndexStyle (2,DRAW_HISTOGRAM, EMPTY,4,Yellow);
   SetIndexBuffer(2,ExtBuffer3);
//---- names
   IndicatorShortName("RSI above/under 45/55");
   SetIndexLabel(0,"RSI"+RSI +" is above 55");
   SetIndexLabel(1,"RSI"+RSI +" is under 45");
   SetIndexLabel(2,"RSI is in the mid zone ");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;
        }
       else 
        ExtBuffer3[i]=1;
   
   return(0);
  }

este color:

Indicador

Gracias por la respuesta.

 
Kero:


Hola amigos. Me pueden decir como obtener el valor del color del indicador de la vela anterior y escribirlo en una variable, por ejemplo si es rojo entonces doble col =1, si es amarillo entonces 2, si es verde entonces 3. He probado diferentes variantes, pero no ha funcionado. Entiendo que el valor del color depende de la disponibilidad de unidades en el buffer, pero por alguna razón no puedo obtener exactamente el último valor fijo, es decir, la vela activa, cambia constantemente de color con la aparición de una nueva vela anterior cierra el último color actuante. ¿Cómo lo sé?)

int col;
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;if(i=1)col =1;return;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;if(i=1)col =3;return;
        }
       else 
       {
        ExtBuffer3[i]=1;
        if(i=1)col =2;
       }
   return(0);
  }
así - si los colores con los números no se mezclan
 

¿Es esta una condición para la apertura de pedidos? ¿Lo he entendido bien?

 
KeinRich:

¿Es esta una condición para la apertura de pedidos? ¿Lo he entendido bien?


Esta condición es para todo lo que necesitas, porque sólo podemos adivinar lo que hacen estas funciones definidas por el usuario por sus nombres
order_total(0)
open(0,Lot,0,TP);
last_trade(1);
modify_orders(1);

 
KeinRich:

Hola a todos... ¿Pueden decirme qué dice esto?

int inicio()
...

return(0);

Todo es puramente en mi conjetura y sólo presumiblemente:

int start() {
   Comment(Info());                 // Вывод какой-то информации на экран
   int KOL_BUY  = order_total(0);   // Подсчёт количества Buy-позиций
   int KOL_SELL = order_total(1);   // Подсчёт количества Sell-позиций
   double l;                              

   if (order_total()==0) {          // Если количество ордеров равно нулю
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      }
   if (KOL_BUY==0 && KOL_SELL!=0) { // Если нет Buy и есть Sell
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(1);              // Берём лот прошлой Sell
      open(1,l,0,0);                // Открываем Sell лотом прошлой Sell скорее всего без стопа и тейка
      modify_orders(1);             // Что-то модифицируем в Sell (в какой и что - не понятно)
      }
   if (KOL_BUY!=0 && KOL_SELL==0) { // Если нет Sell и есть Buy
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(0);              // Берём лот прошлой Buy
      open(0,l,0,0);                // Открываем Buy лотом прошлой Buy скорее всего без стопа и тейка
      modify_orders(0);             // Что-то модифицируем в Buy (в какой и что - не понятно)
      }
   return(0);                       // Выход из start()
}