Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 184

 
Roger:
За эту минуту советник откроет ему до сорока ордеров.

А если первый не откроет? Следующий сигнал час ждать? Нормально:

Есть сигнал --> Проверили, есть ли ордер/позиция, установленный/открытая на данной свече, нету --> ставим/открываем, есть --> значит и не нужно больше.

 
Sepulca:

Так контролировать нужно...либо кол-во ордеров, либо только первое обращение к функции..


Значит уже не одна строка, как у тебя.
 
Всем спасибо за помощь. Функция работает. Результат получен.
 
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);
}

Видно опоздал, но все равно может кому пригодится моё решение:

 
digits:

Видно опоздал, но все равно может кому пригодится моё решение:


Спасибо и тебе. Боле универсально, если

bool NewBar( datetime SecondsAfterTheBar = 0 )

Тогда при вызове можно указать запаздывание в секундах.

 


Здравствуйте друзья. Подскажите пожалуйста как получить значение цвета индикатора на предыдущей свече и записать это в переменную, ну например если красный то double col =1, если желтый то 2, если зеленый то 3. Вроде несложно пробовал по разному не получается. Я так понял значение цвета зависит от наличия единицы в буфере, но почему то не получается вытащить именно последнее зафиксированное значение т.е. на действующей свече он постоянно меняет цвет при появлении новой свечи предыдущая закрывается последним действовавшим цветом. Как его узнать ?)

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

вот этот цвет:

Индикатор

Спасибо за ответ.

 
Kero:


Здравствуйте друзья. Подскажите пожалуйста как получить значение цвета индикатора на предыдущей свече и записать это в переменную, ну например если красный то double col =1, если желтый то 2, если зеленый то 3. Вроде несложно пробовал по разному не получается. Я так понял значение цвета зависит от наличия единицы в буфере, но почему то не получается вытащить именно последнее зафиксированное значение т.е. на действующей свече он постоянно меняет цвет при появлении новой свечи предыдущая закрывается последним действовавшим цветом. Как его узнать ?)

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);
  }
вот так - если цвета с номерами не перепутал
 

Это условие на открытие ордеров??? Я правильно понимаю

 
KeinRich:

Это условие на открытие ордеров??? Я правильно понимаю


Ето условие на все что душе угодно, так как можно только догадываться что делают ети пользовательские функции по их названиям
order_total(0)
open(0,Lot,0,TP);
last_trade(1);
modify_orders(1);

 
KeinRich:

Всем привет... Ребят подскажите что тут написано

int start()
...

return(0);

Всё сугубо на моих догадках и лишь предположительно:

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