Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 184

 
Roger:
Durante este minuto, o Conselheiro Especialista abrirá até quarenta pedidos.

E se o primeiro não abrir? Esperar o próximo sinal por uma hora? Está tudo bem:

Há um sinal --> verificar se há um conjunto de ordem/posição aberta neste castiçal, não há --> conjunto/aberto, há --> então não há necessidade de mais.

 
Sepulca:

Esta é a maneira de controlar...ou o número de pedidos ou apenas a primeira chamada para a função...


Portanto, há mais de uma linha como a sua.
 
Obrigado a todos por sua ajuda. A função está funcionando. O resultado é recebido.
 
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);
}

Provavelmente estou muito atrasado, mas qualquer um pode usar minha solução de qualquer maneira:

 
digits:

Obviamente estou atrasado, mas minha solução pode ser útil para alguém de qualquer forma:


Obrigado. Mais universalmente, se

bool NewBar( datetime Seconds AfterTheBar = 0 )

Então você pode especificar o atraso em segundos ao chamá-lo.

 


Olá amigos. Você pode me dizer como obter o valor da cor do indicador do castiçal anterior e escrevê-lo em uma variável, por exemplo, se for vermelho então duplo col =1, se for amarelo então 2, se for verde então 3. Eu tentei variantes diferentes, mas não funcionou. Entendo que o valor da cor depende da disponibilidade de unidades no buffer, mas por alguma razão não consigo obter exatamente o último valor fixo, ou seja, a vela ativa, ela muda constantemente de cor com o aparecimento de uma nova vela anterior que fecha a última cor atuante. Como posso saber ?)

#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);
  }

esta cor:

Indicador

Obrigado pela resposta.

 
Kero:


Olá amigos. Você pode me dizer como obter o valor da cor do indicador do castiçal anterior e escrevê-lo em uma variável, por exemplo, se for vermelho então duplo col =1, se for amarelo então 2, se for verde então 3. Eu tentei variantes diferentes, mas não funcionou. Entendo que o valor da cor depende da disponibilidade de unidades no buffer, mas por alguma razão não consigo obter exatamente o último valor fixo, ou seja, a vela ativa, ela muda constantemente de cor com o aparecimento de uma nova vela anterior que fecha a última cor atuante. Como posso saber ?)

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);
  }
assim - se as cores com os números não estiverem misturadas
 

Esta é uma condição para abrir pedidos??? Eu entendo corretamente?

 
KeinRich:

Esta é uma condição para abrir pedidos??? Eu entendo corretamente?


Esta condição é para tudo o que você precisa, pois só podemos adivinhar o que essas funções personalizadas fazem por seus nomes
order_total(0)
open(0,Lot,0,TP);
last_trade(1);
modify_orders(1);

 
KeinRich:

Olá a todos... Vocês podem me dizer o que isto diz?

int start()
...

retorno(0);

Tudo está puramente no meu palpite e apenas presumivelmente:

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()
}