Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
13.01.2015, 00:35
Лучший ответ
Выплачено: 66580 RUB
13.01.2015, 23:57
Лучший ответ
Выплачено: 2621 RUB
что-то не могу понять сигналы.. что за стрелки, и как по ним можно торговать, сомневаюсь, что реальный сигнал, а не анализ истории..
в индикаторе четыре буфера:
0-стрелка вверх (зеленый)
1-стрелка вниз (красный)
2-гистограмма (серебряный)
3-сигнальная средняя (красный)
вызвать его в советник будет довольно сложно из-за строковых параметров во внешних переменных..
14.01.2015, 00:06
Лучший ответ
Выплачено: 2621 RUB
убрал строковые переменные, можно скормить сигналы советнику exp_iCustom поищи в сети, к нему должна быть инструкция..
PHP код:
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Silver
#property indicator_color4 Red
//----
#define arrowsDisplacement 0.0001
//---- input parameters
//extern string separator1 = "*** MACD Settings ***";
extern int    fastEMA 12;
extern int    slowEMA 26;
extern int    signalSMA 9;
//extern string separator2 = "*** Indicator Settings ***";
extern bool   drawIndicatorTrendLines true;//0
extern bool   drawPriceTrendLines true;//0
extern bool   displayAlert true;//0
//---- buffers
double bullishDivergence[];
double bearishDivergence[];
double MACD[];
double signal[];
//----
static datetime lastAlertTime;
static 
string   indicatorName;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   
SetIndexStyle(0DRAW_ARROW);
   
SetIndexStyle(1DRAW_ARROW);
   
SetIndexStyle(2DRAW_HISTOGRAMSTYLE_SOLID1Silver);
   
SetIndexStyle(3DRAW_LINESTYLE_DOT);
//----   
   
SetIndexBuffer(0bullishDivergence);
   
SetIndexBuffer(1bearishDivergence);
   
SetIndexBuffer(2MACD);
   
SetIndexBuffer(3signal);   
//----   
   
SetIndexArrow(0233);
   
SetIndexArrow(1234);
//----
   
indicatorName "MACD Divergence(" fastEMA ", " 
                                 
slowEMA ", " signalSMA ")";
   
SetIndexDrawBegin(3signalSMA);
   
IndicatorDigits(Digits 2);
   
IndicatorShortName(indicatorName);

   return(
0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   for(
int i ObjectsTotal() - 1>= 0i--)
     {
       
string label ObjectName(i);
       if(
StringSubstr(label018) != "MACD_DivergenceLine")
           continue;
       
ObjectDelete(label);   
     }
    
ObjectsDeleteAll(0);  
   return(
0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
int countedBars IndicatorCounted();
   if(
countedBars 0)
       
countedBars 0;
   
CalculateIndicator(countedBars);
//---- 
   
return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateIndicator(int countedBars)
  {
   for(
int i Bars countedBars>= 0i--)
     {
       
CalculateMACD(i);
       
CatchBullishDivergence(2);
       
CatchBearishDivergence(2);
     }              
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateMACD(int i)
  {
   
MACD[i] = iMACD(Symbol(),0,fastEMA,slowEMA,signalSMA,PRICE_CLOSE,0,i);
   
//iMACD(Symbol(),0,12,PRICE_TYPICAL,i);
   
   
signal[i] = iMACD(Symbol(),0,fastEMA,slowEMA,signalSMA,PRICE_CLOSE,1,i);
   
//iMACD(Symbol(),0,12,PRICE_TYPICAL,i);         
  
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CatchBullishDivergence(int shift)
  {
   if(
IsIndicatorTrough(shift) == false)
       return;  
   
int currentTrough shift;
   
int lastTrough GetIndicatorLastTrough(shift);
//----   
   
if(MACD[currentTrough] > MACD[lastTrough] && 
      
Low[currentTrough] < Low[lastTrough])
     {
       
bullishDivergence[currentTrough] = MACD[currentTrough] - 
                                          
arrowsDisplacement;
       
//----
       
if(drawPriceTrendLines == true)
           
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], 
                              
Low[currentTrough], 
                             
Low[lastTrough], GreenSTYLE_SOLID);
       
//----
       
if(drawIndicatorTrendLines == true)
          
DrawIndicatorTrendLine(Time[currentTrough], 
                                 
Time[lastTrough], 
                                 
MACD[currentTrough],
                                 
MACD[lastTrough], 
                                 
GreenSTYLE_SOLID);
       
//----
       
if(displayAlert == true)
          
DisplayAlert("Classical bullish divergence on: "
                        
currentTrough);  
     }
//----   
   
if(MACD[currentTrough] < MACD[lastTrough] && 
      
Low[currentTrough] > Low[lastTrough])
     {
       
bullishDivergence[currentTrough] = MACD[currentTrough] - 
                                          
arrowsDisplacement;
       
//----
       
if(drawPriceTrendLines == true)
           
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], 
                              
Low[currentTrough], 
                              
Low[lastTrough], GreenSTYLE_DOT);
       
//----
       
if(drawIndicatorTrendLines == true)                            
           
DrawIndicatorTrendLine(Time[currentTrough], 
                                  
Time[lastTrough], 
                                  
MACD[currentTrough],
                                  
MACD[lastTrough], 
                                  
GreenSTYLE_DOT);
       
//----
       
if(displayAlert == true)
           
DisplayAlert("Reverse bullish divergence on: "
                        
currentTrough);   
     }      
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CatchBearishDivergence(int shift)
  {
   if(
IsIndicatorPeak(shift) == false)
       return;
   
int currentPeak shift;
   
int lastPeak GetIndicatorLastPeak(shift);
//----   
   
if(MACD[currentPeak] < MACD[lastPeak] && 
      
High[currentPeak] > High[lastPeak])
     {
       
bearishDivergence[currentPeak] = MACD[currentPeak] + 
                                        
arrowsDisplacement;
      
       if(
drawPriceTrendLines == true)
           
DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], 
                              
High[currentPeak], 
                              
High[lastPeak], RedSTYLE_SOLID);
                            
       if(
drawIndicatorTrendLines == true)
           
DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], 
                                  
MACD[currentPeak],
                                  
MACD[lastPeak], RedSTYLE_SOLID);

       if(
displayAlert == true)
           
DisplayAlert("Classical bearish divergence on: "
                        
currentPeak);  
     }
   if(
MACD[currentPeak] > MACD[lastPeak] && 
      
High[currentPeak] < High[lastPeak])
     {
       
bearishDivergence[currentPeak] = MACD[currentPeak] + 
                                        
arrowsDisplacement;
       
//----
       
if(drawPriceTrendLines == true)
           
DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], 
                              
High[currentPeak], 
                              
High[lastPeak], RedSTYLE_DOT);
       
//----
       
if(drawIndicatorTrendLines == true)
           
DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], 
                                  
MACD[currentPeak],
                                  
MACD[lastPeak], RedSTYLE_DOT);
       
//----
       
if(displayAlert == true)
           
DisplayAlert("Reverse bearish divergence on: "
                        
currentPeak);   
     }   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsIndicatorPeak(int shift)
  {
   if(
MACD[shift] >= MACD[shift+1] && MACD[shift] > MACD[shift+2] && 
      
MACD[shift] > MACD[shift-1])
       return(
true);
   else 
       return(
false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsIndicatorTrough(int shift)
  {
   if(
MACD[shift] <= MACD[shift+1] && MACD[shift] < MACD[shift+2] && 
      
MACD[shift] < MACD[shift-1])
       return(
true);
   else 
       return(
false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetIndicatorLastPeak(int shift)
  {
   for(
int i shift 5Barsi++)
     {
       if(
signal[i] >= signal[i+1] && signal[i] >= signal[i+2] &&
          
signal[i] >= signal[i-1] && signal[i] >= signal[i-2])
         {
           for(
int j iBarsj++)
             {
               if(
MACD[j] >= MACD[j+1] && MACD[j] > MACD[j+2] &&
                  
MACD[j] >= MACD[j-1] && MACD[j] > MACD[j-2])
                   return(
j);
             }
         }
     }
   return(-
1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetIndicatorLastTrough(int shift)
  {
    for(
int i shift 5Barsi++)
      {
        if(
signal[i] <= signal[i+1] && signal[i] <= signal[i+2] &&
           
signal[i] <= signal[i-1] && signal[i] <= signal[i-2])
          {
            for (
int j iBarsj++)
              {
                if(
MACD[j] <= MACD[j+1] && MACD[j] < MACD[j+2] &&
                   
MACD[j] <= MACD[j-1] && MACD[j] < MACD[j-2])
                    return(
j);
              }
          }
      }
    return(-
1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DisplayAlert(string messageint shift)
  {
   if(
shift <= && Time[shift] != lastAlertTime)
     {
       
lastAlertTime Time[shift];
       
Alert(messageSymbol(), " , "Period(), " minutes chart");
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DrawPriceTrendLine(datetime x1datetime x2double y1
                        
double y2color lineColordouble style)
  {
   
string label "MACD_DivergenceLine" DoubleToStr(x10);
   
ObjectDelete(label);
   
ObjectCreate(labelOBJ_TREND0x1y1x2y200);
   
ObjectSet(labelOBJPROP_RAY0);
   
ObjectSet(labelOBJPROP_COLORlineColor);
   
ObjectSet(labelOBJPROP_STYLEstyle);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DrawIndicatorTrendLine(datetime x1datetime x2double y1
                            
double y2color lineColordouble style)
  {
   
int indicatorWindow WindowFind(indicatorName);
   if(
indicatorWindow 0)
       return;
   
string label "MACD_DivergenceLine_" DoubleToStr(x10);
   
ObjectDelete(label);
   
ObjectCreate(labelOBJ_TRENDindicatorWindowx1y1x2y2
                
00);
   
ObjectSet(labelOBJPROP_RAY0);
   
ObjectSet(labelOBJPROP_COLORlineColor);
   
ObjectSet(labelOBJPROP_STYLEstyle);
  }
//+------------------------------------------------------------------+ 
14.01.2015, 08:32
Лучший ответ
Выплачено: 66580 RUB
не хотелось бы что-то изменять в индикаторе... Ведь может нарушится вся логика его работы. Я придумал что можно сделать. Как вариант можно в строках вместо Алертов вставить запись в файл какой-либо информации, а советник будет ее считывать и принимать решение на открытие ордера BUY или SELL... Только я не очень хороший программист в MQL, и работу с файлами не освоил еще. И еще один вопрос. Что будет в тот момент когда файл будет открыт для записи индикатором, а советник будет его пытаться открыть для чтения?
14.01.2015, 11:12
Лучший ответ
Выплачено: 2621 RUB
логика индикатора не изменена..
так скажу: никто не будет писать советник под один индикатор, такой советник уже есть..
инструкция по применению здесь https://forexdengi.com/threads/16241...orami-treydera
15.01.2015, 18:04
Лучший ответ
Выплачено: 66580 RUB
Сообщение от Newbie Посмотреть сообщение
никто не будет писать советник под один индикатор
Вообще-то очень многие советники пишутся под один индикатор.
  • #1 Свернуть

    Советник на индикаторе MACD Divergence

    Нашел интересный индикатор MACD Divergence. Сигналы дает вроде правильные. Хотелось бы его использовать с советником. Часто бывает, что сигнал был, а я его пропустил. Открывать ордер уже поздно... Помогите! Кто расскажет, какие данные и как надо брать из этого индикатора?MACD Divergence.mq4
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    что-то не могу понять сигналы.. что за стрелки, и как по ним можно торговать, сомневаюсь, что реальный сигнал, а не анализ истории..
    в индикаторе четыре буфера:
    0-стрелка вверх (зеленый)
    1-стрелка вниз (красный)
    2-гистограмма (серебряный)
    3-сигнальная средняя (красный)
    вызвать его в советник будет довольно сложно из-за строковых параметров во внешних переменных..

    Комментарий

    • #3 Свернуть

      убрал строковые переменные, можно скормить сигналы советнику exp_iCustom поищи в сети, к нему должна быть инструкция..
      PHP код:
      #property indicator_separate_window
      #property indicator_buffers 4
      #property indicator_color1 Green
      #property indicator_color2 Red
      #property indicator_color3 Silver
      #property indicator_color4 Red
      //----
      #define arrowsDisplacement 0.0001
      //---- input parameters
      //extern string separator1 = "*** MACD Settings ***";
      extern int    fastEMA 12;
      extern int    slowEMA 26;
      extern int    signalSMA 9;
      //extern string separator2 = "*** Indicator Settings ***";
      extern bool   drawIndicatorTrendLines true;//0
      extern bool   drawPriceTrendLines true;//0
      extern bool   displayAlert true;//0
      //---- buffers
      double bullishDivergence[];
      double bearishDivergence[];
      double MACD[];
      double signal[];
      //----
      static datetime lastAlertTime;
      static 
      string   indicatorName;
      //+------------------------------------------------------------------+
      //| Custom indicator initialization function                         |
      //+------------------------------------------------------------------+
      int init()
        {
      //---- indicators
         
      SetIndexStyle(0DRAW_ARROW);
         
      SetIndexStyle(1DRAW_ARROW);
         
      SetIndexStyle(2DRAW_HISTOGRAMSTYLE_SOLID1Silver);
         
      SetIndexStyle(3DRAW_LINESTYLE_DOT);
      //----   
         
      SetIndexBuffer(0bullishDivergence);
         
      SetIndexBuffer(1bearishDivergence);
         
      SetIndexBuffer(2MACD);
         
      SetIndexBuffer(3signal);   
      //----   
         
      SetIndexArrow(0233);
         
      SetIndexArrow(1234);
      //----
         
      indicatorName "MACD Divergence(" fastEMA ", " 
                                       
      slowEMA ", " signalSMA ")";
         
      SetIndexDrawBegin(3signalSMA);
         
      IndicatorDigits(Digits 2);
         
      IndicatorShortName(indicatorName);

         return(
      0);
      }
      //+------------------------------------------------------------------+
      //| Custom indicator deinitialization function                       |
      //+------------------------------------------------------------------+
      int deinit()
        {
         for(
      int i ObjectsTotal() - 1>= 0i--)
           {
             
      string label ObjectName(i);
             if(
      StringSubstr(label018) != "MACD_DivergenceLine")
                 continue;
             
      ObjectDelete(label);   
           }
          
      ObjectsDeleteAll(0);  
         return(
      0);
        }
      //+------------------------------------------------------------------+
      //| Custom indicator iteration function                              |
      //+------------------------------------------------------------------+
      int start()
        {
         
      int countedBars IndicatorCounted();
         if(
      countedBars 0)
             
      countedBars 0;
         
      CalculateIndicator(countedBars);
      //---- 
         
      return(0);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void CalculateIndicator(int countedBars)
        {
         for(
      int i Bars countedBars>= 0i--)
           {
             
      CalculateMACD(i);
             
      CatchBullishDivergence(2);
             
      CatchBearishDivergence(2);
           }              
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void CalculateMACD(int i)
        {
         
      MACD[i] = iMACD(Symbol(),0,fastEMA,slowEMA,signalSMA,PRICE_CLOSE,0,i);
         
      //iMACD(Symbol(),0,12,PRICE_TYPICAL,i);
         
         
      signal[i] = iMACD(Symbol(),0,fastEMA,slowEMA,signalSMA,PRICE_CLOSE,1,i);
         
      //iMACD(Symbol(),0,12,PRICE_TYPICAL,i);         
        
      }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void CatchBullishDivergence(int shift)
        {
         if(
      IsIndicatorTrough(shift) == false)
             return;  
         
      int currentTrough shift;
         
      int lastTrough GetIndicatorLastTrough(shift);
      //----   
         
      if(MACD[currentTrough] > MACD[lastTrough] && 
            
      Low[currentTrough] < Low[lastTrough])
           {
             
      bullishDivergence[currentTrough] = MACD[currentTrough] - 
                                                
      arrowsDisplacement;
             
      //----
             
      if(drawPriceTrendLines == true)
                 
      DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], 
                                    
      Low[currentTrough], 
                                   
      Low[lastTrough], GreenSTYLE_SOLID);
             
      //----
             
      if(drawIndicatorTrendLines == true)
                
      DrawIndicatorTrendLine(Time[currentTrough], 
                                       
      Time[lastTrough], 
                                       
      MACD[currentTrough],
                                       
      MACD[lastTrough], 
                                       
      GreenSTYLE_SOLID);
             
      //----
             
      if(displayAlert == true)
                
      DisplayAlert("Classical bullish divergence on: "
                              
      currentTrough);  
           }
      //----   
         
      if(MACD[currentTrough] < MACD[lastTrough] && 
            
      Low[currentTrough] > Low[lastTrough])
           {
             
      bullishDivergence[currentTrough] = MACD[currentTrough] - 
                                                
      arrowsDisplacement;
             
      //----
             
      if(drawPriceTrendLines == true)
                 
      DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], 
                                    
      Low[currentTrough], 
                                    
      Low[lastTrough], GreenSTYLE_DOT);
             
      //----
             
      if(drawIndicatorTrendLines == true)                            
                 
      DrawIndicatorTrendLine(Time[currentTrough], 
                                        
      Time[lastTrough], 
                                        
      MACD[currentTrough],
                                        
      MACD[lastTrough], 
                                        
      GreenSTYLE_DOT);
             
      //----
             
      if(displayAlert == true)
                 
      DisplayAlert("Reverse bullish divergence on: "
                              
      currentTrough);   
           }      
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void CatchBearishDivergence(int shift)
        {
         if(
      IsIndicatorPeak(shift) == false)
             return;
         
      int currentPeak shift;
         
      int lastPeak GetIndicatorLastPeak(shift);
      //----   
         
      if(MACD[currentPeak] < MACD[lastPeak] && 
            
      High[currentPeak] > High[lastPeak])
           {
             
      bearishDivergence[currentPeak] = MACD[currentPeak] + 
                                              
      arrowsDisplacement;
            
             if(
      drawPriceTrendLines == true)
                 
      DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], 
                                    
      High[currentPeak], 
                                    
      High[lastPeak], RedSTYLE_SOLID);
                                  
             if(
      drawIndicatorTrendLines == true)
                 
      DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], 
                                        
      MACD[currentPeak],
                                        
      MACD[lastPeak], RedSTYLE_SOLID);

             if(
      displayAlert == true)
                 
      DisplayAlert("Classical bearish divergence on: "
                              
      currentPeak);  
           }
         if(
      MACD[currentPeak] > MACD[lastPeak] && 
            
      High[currentPeak] < High[lastPeak])
           {
             
      bearishDivergence[currentPeak] = MACD[currentPeak] + 
                                              
      arrowsDisplacement;
             
      //----
             
      if(drawPriceTrendLines == true)
                 
      DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], 
                                    
      High[currentPeak], 
                                    
      High[lastPeak], RedSTYLE_DOT);
             
      //----
             
      if(drawIndicatorTrendLines == true)
                 
      DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], 
                                        
      MACD[currentPeak],
                                        
      MACD[lastPeak], RedSTYLE_DOT);
             
      //----
             
      if(displayAlert == true)
                 
      DisplayAlert("Reverse bearish divergence on: "
                              
      currentPeak);   
           }   
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      bool IsIndicatorPeak(int shift)
        {
         if(
      MACD[shift] >= MACD[shift+1] && MACD[shift] > MACD[shift+2] && 
            
      MACD[shift] > MACD[shift-1])
             return(
      true);
         else 
             return(
      false);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      bool IsIndicatorTrough(int shift)
        {
         if(
      MACD[shift] <= MACD[shift+1] && MACD[shift] < MACD[shift+2] && 
            
      MACD[shift] < MACD[shift-1])
             return(
      true);
         else 
             return(
      false);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      int GetIndicatorLastPeak(int shift)
        {
         for(
      int i shift 5Barsi++)
           {
             if(
      signal[i] >= signal[i+1] && signal[i] >= signal[i+2] &&
                
      signal[i] >= signal[i-1] && signal[i] >= signal[i-2])
               {
                 for(
      int j iBarsj++)
                   {
                     if(
      MACD[j] >= MACD[j+1] && MACD[j] > MACD[j+2] &&
                        
      MACD[j] >= MACD[j-1] && MACD[j] > MACD[j-2])
                         return(
      j);
                   }
               }
           }
         return(-
      1);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      int GetIndicatorLastTrough(int shift)
        {
          for(
      int i shift 5Barsi++)
            {
              if(
      signal[i] <= signal[i+1] && signal[i] <= signal[i+2] &&
                 
      signal[i] <= signal[i-1] && signal[i] <= signal[i-2])
                {
                  for (
      int j iBarsj++)
                    {
                      if(
      MACD[j] <= MACD[j+1] && MACD[j] < MACD[j+2] &&
                         
      MACD[j] <= MACD[j-1] && MACD[j] < MACD[j-2])
                          return(
      j);
                    }
                }
            }
          return(-
      1);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void DisplayAlert(string messageint shift)
        {
         if(
      shift <= && Time[shift] != lastAlertTime)
           {
             
      lastAlertTime Time[shift];
             
      Alert(messageSymbol(), " , "Period(), " minutes chart");
           }
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void DrawPriceTrendLine(datetime x1datetime x2double y1
                              
      double y2color lineColordouble style)
        {
         
      string label "MACD_DivergenceLine" DoubleToStr(x10);
         
      ObjectDelete(label);
         
      ObjectCreate(labelOBJ_TREND0x1y1x2y200);
         
      ObjectSet(labelOBJPROP_RAY0);
         
      ObjectSet(labelOBJPROP_COLORlineColor);
         
      ObjectSet(labelOBJPROP_STYLEstyle);
        }
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void DrawIndicatorTrendLine(datetime x1datetime x2double y1
                                  
      double y2color lineColordouble style)
        {
         
      int indicatorWindow WindowFind(indicatorName);
         if(
      indicatorWindow 0)
             return;
         
      string label "MACD_DivergenceLine_" DoubleToStr(x10);
         
      ObjectDelete(label);
         
      ObjectCreate(labelOBJ_TRENDindicatorWindowx1y1x2y2
                      
      00);
         
      ObjectSet(labelOBJPROP_RAY0);
         
      ObjectSet(labelOBJPROP_COLORlineColor);
         
      ObjectSet(labelOBJPROP_STYLEstyle);
        }
      //+------------------------------------------------------------------+ 

      Комментарий

      • #4 Свернуть

        не хотелось бы что-то изменять в индикаторе... Ведь может нарушится вся логика его работы. Я придумал что можно сделать. Как вариант можно в строках вместо Алертов вставить запись в файл какой-либо информации, а советник будет ее считывать и принимать решение на открытие ордера BUY или SELL... Только я не очень хороший программист в MQL, и работу с файлами не освоил еще. И еще один вопрос. Что будет в тот момент когда файл будет открыт для записи индикатором, а советник будет его пытаться открыть для чтения?

        Комментарий

        • #5 Свернуть

          логика индикатора не изменена..
          так скажу: никто не будет писать советник под один индикатор, такой советник уже есть..
          инструкция по применению здесь https://forexdengi.com/threads/16241...orami-treydera

          Комментарий

          • #6 Свернуть

            Сообщение от Newbie Посмотреть сообщение
            никто не будет писать советник под один индикатор
            Вообще-то очень многие советники пишутся под один индикатор.

            Комментарий

            • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
            • #7 Свернуть

              Сообщение от syncomp Посмотреть сообщение
              Вообще-то очень многие советники пишутся под один индикатор.
              Согласен с мнением комментатора, и в большинстве случаев, чем меньше индикаторов и различных переменных в советнике, тем стабильнее и надежнее его работа за длительный период времени. Под этот индикатор есть советник, называется, по моему Трейдер Локатор, но он не открывает сделки без введения пароля. Если найдешь пароль или взломанную версию, по идее должен работать нормально, во всяком случае, сигналы для входа показывает безошибочно.

              Комментарий

              working...
              X