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

 
Спасибо, kosmos0975!
Буду пробовать. Но боюсь, что, к примеру, на недельных барах этот прием не сработает.
 
Подскажите пожалуйста, где можно найти пример кода, раскрашивающий индикаторную линию в разные цвета?
 
Leo59:
Подскажите пожалуйста, где можно найти пример кода, раскрашивающий индикаторную линию в разные цвета?
Сколько цветов, столько же буфферов! При условии смены цвета меняете буффер! Много примеров в КодеБейс!
 
Как сделать запись в нужную строку ... в тхт файле...
 
borilunad:
Сколько цветов, столько же буфферов! При условии смены цвета меняете буффер! Много примеров в КодеБейс!
Спасибо.
 
Что не так? Почему остаются не закрашенные синие участки?
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Aqua
#property  indicator_width1  1
#property  indicator_color2  Red
#property  indicator_width2  1
#property  indicator_color3  Yellow
#property  indicator_width3  1

extern int       Fperiod=1;
extern int       Speriod=2;
extern int       Method=3;
extern int       PRICE_MODE=PRICE_WEIGHTED;

double   Buf0[];
double   Buf1[];                                
double   Buf2[];                                
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
   {
    SetIndexBuffer(0,Buf0);
    SetIndexBuffer(1,Buf1);
    SetIndexBuffer(2,Buf2);

    SetIndexStyle(0,DRAW_LINE);
    SetIndexStyle(1,DRAW_LINE);
    SetIndexStyle(2,DRAW_LINE);

    SetIndexEmptyValue(1,EMPTY_VALUE);   
    SetIndexEmptyValue(2,EMPTY_VALUE);   

    IndicatorShortName("Proba ");                
   
    SetIndexDrawBegin(0, 0);  
    SetIndexDrawBegin(1, 0);
    SetIndexDrawBegin(2, 0);

    return(0);
   }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
   {
    int i; 
    int limit;
    int counted_bars=IndicatorCounted();
    if(counted_bars<0) return(-1);
    if(counted_bars>0) counted_bars--;
    limit=Bars-counted_bars;
    for (i = limit;i>=0;i--)
        {  
         Buf0[i]=iMA(NULL,0,Fperiod,0,Method,PRICE_MODE,i)-iMA(NULL,0,Speriod,0,Method,PRICE_MODE,i);
         if(Buf0[i] > Buf0[i+1])
             {
              Buf1[i] = Buf0[i];
//              if(Buf0[i+1] > Buf0[i+2])
//                   Buf1[i+1] = Buf0[i+1];
//              else Buf2[i+1] = Buf0[i+1];
             }
         else
             {
              Buf2[i] = Buf0[i];
//              if(Buf0[i+1] < Buf0[i+2])
//                   Buf2[i+1] = Buf0[i+1];
//              else Buf1[i+1] = Buf0[i+1];
             }
        }              
    return(0);
   }


 
 Можно ли в советнике связать три графика с разными таймфреймами? На основании показаний индикаторов в двух графиках происходит поиск места и валютной пары для входа, а на основании последнего третьего графика осуществляется расчёт места входа, стоп и профит, и открывается позиция для входа. Такое технически возможно? Или нужно создавать эксперта специально под определённый таймфрейм, для работы в одном графике? При этом нужно не просто считать показания баров, тиков или свечей с графиков разных временных периодов, а именно проанализировать показания как минимум двух индикаторов, а по третьему на основании этих данных - открыть ордер.
 
  писал функцию для обнаружения флета и запнулся во что-то мне совсем не понятное. не срабатывает оператор if. может я где-то что-то написал не так , хочу чтобы посмотрели свежим взглядом ибо я в упор не понимаю почему. даже видео с дебагера записал где показываю что значения равны , но оно не срабатывает. вставте мне пожалуйста мозг на место))))
{
      int size = ArrayRange(arrayMinLow,0);
      int digits = MarketInfo (symbol,MODE_DIGITS);
      
      double spreadFlat = highLine - lowLine;
      
     
      int directionFlat = -1;
      int slew = 0;
      for (int i = 0; i<size; i++){
            double hl =arrayMinLow[i][0];
            double ol = arrayMinLow[i][1];
            double cl = arrayMinLow[i][2];
            double ll = arrayMinLow[i][3];
            
            if (hl == highLine || ol == highLine){                                      //вот тут не срабатывает

                  if( directionFlat == -1 || directionFlat == 0)
                        slew++;

                  directionFlat = 1;
            }else if  (cl == lowLine|| ll ==lowLine){
               
                  if( directionFlat == -1 || directionFlat == 1)
                        slew++;               
               
                  directionFlat = 0;
               
           }
                  
      
      }
      
      if(slew >=4 )
         return true;
         
      return false;   
      
      

}




ссылка на видео     https://www.youtube.com/watch?v=k9Zo0SgrMCA
 
Deniskaaa:
 Можно ли в советнике связать три графика с разными таймфреймами? На основании показаний индикаторов в двух графиках происходит поиск места и валютной пары для входа, а на основании последнего третьего графика осуществляется расчёт места входа, стоп и профит, и открывается позиция для входа. Такое технически возможно? Или нужно создавать эксперта специально под определённый таймфрейм, для работы в одном графике? При этом нужно не просто считать показания баров, тиков или свечей с графиков разных временных периодов, а именно проанализировать показания как минимум двух индикаторов, а по третьему на основании этих данных - открыть ордер.
Всё можно! См. Документацию или справку в МетаЭдиторе!
 
pycha:

здравствуйте , писал функцию для обнаружения флета и запнулся во что-то мне совсем не понятное. не срабатывает оператор if. может я где-то что-то написал не так , хочу чтобы посмотрели свежим взглядом  ибо я в упор не понимаю почему. даже видео с дебагера записал где показываю что значения равны , но оно не срабатывает. вставте мне пожалуйста мозг на место))))


код:

bool  checkLine(double highLine , double lowLine, double &arrayMinLow[][5] )
{
      int size = ArrayRange(arrayMinLow,0);
      int digits = MarketInfo (symbol,MODE_DIGITS);
      
      double spreadFlat = highLine - lowLine;
      
     
      int directionFlat = -1;
      int slew = 0;
      for (int i = 0; i<size; i++){
            double hl =arrayMinLow[i][0];
            double ol = arrayMinLow[i][1];
            double cl = arrayMinLow[i][2];
            double ll = arrayMinLow[i][3];
            
            if (hl == highLine || ol == highLine){                                      //вот тут не срабатывает

                  if( directionFlat == -1 || directionFlat == 0)
                        slew++;

                  directionFlat = 1;
            }else if  (cl == lowLine|| ll ==lowLine){
               
                  if( directionFlat == -1 || directionFlat == 1)
                        slew++;               
               
                  directionFlat = 0;
               
           }
                  
      
      }
      
      if(slew >=4 )
         return true;
         
      return false;   
      
      

}





Пользуйтесь кнопкой SRC для вставки кода, а не картинки! За советом обратитесь к автору сей идеи и видео!