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

 
evillive:
Верно, при использовании полос Боллингера не надо вызывать iCustom, а надо вызывать iBands, для каждой линии индикатора - отдельно. Как альтернатива без вызова индикатора ("без использования всяких буферов, массивов, циклов")- внедрять в советник алгоритм расчёта этого индикатора и считать нужное значение когда надо (можно считать только нужное значение, например, только нижнюю линию). Но совсем без циклов и массивов всё равно не выйдет.

Хорошо. Тогда как вот это записать правильно?:

        MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
     Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Как извлечь значения ExtUpperBuffer[0] и ExtUpperBuffer[1], ну и нижней соответственно?

 
rapid_minus:

Хорошо. Тогда как вот это записать правильно?:

        MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
     Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Как извлечь значения ExtUpperBuffer[0] и ExtUpperBuffer[1], ну и нижней соответственно?

Тут опять неправильно записан вызов индикатора.

Правильно я уже писал как будет вот здесь. Не надо выдумывать ничего от себя, всё есть в справочнике.

Ещё раз:

High_2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,2); //это и есть ExtUpperBuffer[2]
High_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,1); //ExtUpperBuffer[1]
High_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0); //ExtUpperBuffer[0]
Low_2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,2); //ну и нижние соответственно, ExtLowerBuffer[2]
Low_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,1); //ExtLowerBuffer[1]
Low_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0); //ExtLowerBuffer[0]
 
evillive:

Тут опять неправильно записан вызов индикатора.

Правильно я уже писал как будет вот здесь. Не надо выдумывать ничего от себя, всё есть в справочнике.

Ещё раз:

Ну, с третьего раза понял. Кажется.

Значит, в МВ_2 ошибка в том, что отсутствует обозначение вызываемой линии, да? Но я пока не нашел, как вызвать среднюю линию Боллингера. Или просто как скользящую среднюю? MODE_SMA ?

 
rapid_minus:

Ну, с третьего раза понял. Кажется.

Значит, в МВ_2 ошибка в том, что отсутствует обозначение вызываемой линии, да? Но я пока не нашел, как вызвать среднюю линию Боллингера. Или просто как скользящую среднюю? MODE_SMA ?

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - на нулевой бар (последняя цифра в скобках - смещение до нужного бара).

Не надо спешить, читайте внимательно справку.

 
evillive:

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - на нулевой бар (последняя цифра в скобках - смещение до нужного бара).

Не надо спешить, читайте внимательно справку.

Спасибо!

Только как Это найти в справке, когда не знаешь, как сформулировать вопрос - вот вопрос!

Еще раз спасибо. Пошел ковыряться дальше. 

 
rapid_minus:

Спасибо!

Только как Это найти в справке, когда не знаешь, как сформулировать вопрос - вот вопрос!

Еще раз спасибо. Пошел ковыряться дальше. 

Научиться правильно задавать вопросы - наполовину найти ответ, так как-то ;)
 
mario065:
Вот пример,где показал как замерит сколко бар после пересечения 2х мувок.

попрбовал ваш код подставить

вопрос эф это номер бара? 

закоментил его значение он на часовике рисует разные цифры включая ноль

попробовал через тестер прогнать такая ж ерунда

потом приравнял если значения одной равно другой эф стала рисовать цифры вроде те что нужно

спасибо 

 
sannin:

попрбовал ваш код подставить

вопрос эф это номер бара? 

закоментил его значение он на часовике рисует разные цифры включая ноль

попробовал через тестер прогнать такая ж ерунда

потом приравнял если значения одной равно другой эф стала рисовать цифры вроде те что нужно

спасибо 

Написал как для пример.Да f ето сколко баров после пересечения мувинг.

Вижу,что Вы справилис :)

Ну вот и код:

//+------------------------------------------------------------------+
//|                                                    count bar.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

extern int limit = 300;
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    static datetime time,timeup,timedn;
    double spread=MarketInfo(Symbol(),MODE_SPREAD);
    double maslow1,mafast1,maslow2,mafast2;
    int    shift,shift1,shift2,f,j;
    
    for(shift=limit;shift>0;shift--){
        shift1=shift+1;shift2=shift+2;
        maslow1 = iMA(NULL,0,20,0,MODE_SMA,PRICE_OPEN,shift1);
        mafast1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_OPEN,shift1);
        maslow2 = iMA(NULL,0,20,0,MODE_SMA,PRICE_OPEN,shift2);
        mafast2 = iMA(NULL,0,5,0,MODE_SMA,PRICE_OPEN,shift2);
 
     if(mafast2<maslow2 && mafast1>maslow1){
        timeup=Time[shift1];
       } 
     if(mafast2>maslow2 && mafast1<maslow1){
        timedn=Time[shift1];
       } 
     
     if(timeup > timedn){
        time = timeup;
       } else {
        time = timedn;
       }
     }
 
      int b1=iBarShift(Symbol(), 0, time);      
      int b2=iBarShift(Symbol(), 0, TimeCurrent());
//Преброяване на баровете-от нулевия до началната дата
    for(j=b2;j<=b1;j++){
        f=b1-b2;
       }
      
   Comment("\n Време на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS)," Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\n Текущ спред: ",DoubleToStr(spread/10,1),
           "\n=====================",
           "\n Начална дата:           ",TimeToStr(time,TIME_DATE|TIME_SECONDS), 
           "\n Брой барове:            ",f,
           "\n=====================" 
             ); 
   return(0);
  }
//+------------------------------------------------------------------+

 
mario065:

Написал как для пример.Да f ето сколко баров после пересечения мувинг.

Вижу,что Вы справилис :)

Ну вот и код:

спасибо большое 

разбогатею поделюсь

 

 
sannin:

спасибо большое 

разбогатею поделюсь

 

Кофе угостиш и ето хватит,после того,как разбогатеешь ;)
Причина обращения: