Индикаторы: iStochTxt (komposter)

 

iStochTxt (komposter):

Исправленый и доработанный iStochTxt (Integer).

Author: Andrey Khatimlianskii

 
Добрый день.
Возможно ли к индекатору стохастику добавить три вида сигналов:
1. Чтобы рисовал стрелки как в iStoshtxt.
2. Чтобы был звуковой сигнал при появлении стрелки.
3. Чтобы появлялся алярт по какой валюте есть сигнал.


Спасибо.
 
Darij:
Добрый день.
Возможно ли к индекатору стохастику добавить три вида сигналов:
Ответил на почту.
 
спасибо за индикатор, возможно ли в нём изменять сигнальные уровни?
 
alex-com писал(а):
спасибо за индикатор, возможно ли в нём изменять сигнальные уровни?
Что вы имеете в виду под "сигнальными уровнями"?
 
komposter писал(а):
Что вы имеете в виду под "сигнальными уровнями"?

в оригенальном индикаторе http://codebase.mql4.com/ru/code/8401 вот такое описание - Индикатор iStochTxt в точках пересечения главной линии стохастика с сигнальными уровнями рисует на основном графике стрелки.

Я так понял что сигнал рисеутся когда стохастик выходит из зоны уровня (например 30-70)
меня вот интересует именно такой вариант стохастика, что бы сигнал был когда стохастик выходит из уровня выше 25 и ниже 75, если такое возможно конечно
 
alex-com писал(а):
Я так понял что сигнал рисеутся когда стохастик выходит из зоны уровня (например 30-70)
меня вот интересует именно такой вариант стохастика, что бы сигнал был когда стохастик выходит из уровня выше 25 и ниже 75, если такое возможно конечно

Вот код, который работает так как вам надо: зеленая стрелочка рисуется при пересечении главной линией стохастика снизу вверх уровня dn_l, красная, соответственно, при пересечении сверху вниз уровня up_l.
dn_l и up_l настраиваются внешними переменными.

//+------------------------------------------------------------------+
//|                                         iStochTxt(komposter).mq4 |
//|                                      Copyright © 2007, komposter |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, komposter"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
//----
extern int        k                = 5;
extern int        s                = 3;
extern double    up_l            = 80;
extern double    dn_l            = 20;
extern bool        text            = false;
extern color    text_color    = Yellow;
extern bool        alert            = false;
//----
double BuyBuffer[], SellBuffer[];
int pre_signal = 0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
      IndicatorShortName("iStochTxt");
//----
      SetIndexBuffer(0, BuyBuffer);
      SetIndexLabel(0, "Buy");
      SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);
      SetIndexArrow(0, 241);
//----
      SetIndexBuffer(1, SellBuffer);
      SetIndexLabel(1, "Sell");
      SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);
      SetIndexArrow(1, 242);
//----
      return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
      if(text)
        {
             for(int i = 0; i < ObjectsTotal(); i++)
               {
                    if(StringFind( ObjectName(i), "txt_", 0 ) == 0)
                      {
                           ObjectDelete(ObjectName(i));
                           i--;
                      }
               }
        }
      return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
      int counted_bars = IndicatorCounted();
//----
      if(counted_bars < 0) 
        { 
          Print("Indicator Error (Counted bars < 0)!"); 
          return(-1); 
        }
//----
      if(Bars < 17) 
        { 
          Print("Indicator Error (Bars < 12)!" ); 
          return(-1); 
        }
   int limit = Bars - 17;
//----
   if(counted_bars > 17) 
     { 
       limit = Bars - counted_bars; 
     }
//----
      for(int i = limit; i >= 0; i --)
        {
             BuyBuffer[i] = EMPTY_VALUE;
             SellBuffer[i] = EMPTY_VALUE;      
             //----
                double mc = iStochastic(NULL, 0, k, 3, s, 0, 0, MODE_MAIN, i);
                 double mp = iStochastic(NULL, 0, k, 3, s, 0, 0, MODE_MAIN, i+1);
             //----
           if(mc > dn_l && mp <= dn_l)
               {
                    BuyBuffer[i] = Low[i] - iATR(NULL, 0, 14, i);
                    if(text) 
                      { 
                        create_text(i, Low[i] - 1.5*iATR(NULL, 0, 14, i )); 
                      }
               }
             if(mc < up_l && mp >= up_l)
               {
                    SellBuffer[i] = High[i] + iATR(NULL, 0, 14, i);         
                    if(text) 
                      { 
                        create_text(i, High[i] + 1.5*iATR( NULL, 0, 14, i)); 
                      }
               }
        }
      if(alert)
        {
             if(pre_signal <= 0 && BuyBuffer [1] != EMPTY_VALUE) 
               { 
                 Alert("iStochTxt( ", Symbol(), ", ", Period(), " ) - BUY!"); 
                 pre_signal =  1; 
               }
             if(pre_signal >= 0 && SellBuffer[1] != EMPTY_VALUE) 
               { 
                 Alert("iStochTxt( ", Symbol(), ", ", Period(), " ) - SELL!"); 
                 pre_signal = -1; 
               }
        }
      return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void create_text(int u, double p)
  {
      string name = "txt_" + Time[u];
      ObjectDelete(name);
      ObjectCreate(name, OBJ_TEXT, 0, Time[u], p);
      ObjectSetText(name, DoubleToStr( Close[u], Digits ) + " " + TimeToStr( Time[u], 
                    TIME_MINUTES), 8, "Arial", text_color);
  }
//+------------------------------------------------------------------+
 
огромное спасибо вам komposter, это то что нужно....
Причина обращения: