Общие вопросы по разработке > простой индикатор

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

простой индикатор

Непрочитанное сообщение naum » 06 авг 2016, 09:14

Измеряет разницу между хаем и лоем свечки .

Код: Выделить всё

function Initialize()
{
  IndicatorName = "HL";               
   
  AddInput("Input", Inputs.Candle);      
            
  AddParameter("Period", 1, 1);      
               
  PriceStudy = false;   
                              
  AddSeries("Upper", DrawAs.Line, Color.Blue,   false);   
  AddSeries("Lower", DrawAs.Line, Color.Red,   false);      
  AddSeries("HLP", DrawAs.Histogram , Color.Red);
}

function Evaluate()
{
   var high = Input.High[0];
   var low = Input.Low[0];
   if ( CurrentIndex >= Period )
   {
         int i = 0;
       for (i = 1; i < Period; i++)
              high = Math.Max(Input.High[i], high);
       for (i = 1; i < Period; i++)
              low = Math.Min(Input.Low[i], low);
   }
    HLP=high-low;
   Upper = high;
   Lower = low;
}
Вложения
2016-08-06_14-06-15.png
Последний раз редактировалось naum 09 авг 2016, 11:11, всего редактировалось 7 раз.

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: такой же индикатор только между открытием и закрытием

Непрочитанное сообщение naum » 07 авг 2016, 15:54

Код: Выделить всё

function Initialize()
{
    IndicatorName = "CO";         
         
  AddInput("Inp", Inputs.Candle);   
               
  AddParameter("Period", 1,1);     
               
  PriceStudy = false;         
                       
  AddSeries("Op", DrawAs.Line , Color.Blue,false);   //,false
  AddSeries("Cl", DrawAs.Line , Color.Red,false);    //  ,false
  AddSeries("CO", DrawAs.Histogram , Color.Red);
}

function Evaluate()
{
   var open = Input.Open[0];
   var close = Input.Close[0];
   if ( CurrentIndex >= Period )
   {
                   
         int i = 0;
        for (i = 1; i < Period;++ i)
              open =  Math.Max(Input.Open[i], open);

        for (i = 1; i < Period; i++)
              close = Math.Min(Input.Close[i], close);
                Cl=close;
                Op=open;                           
                CO= Math.Abs(close - open);;

                }
    }
Вложения
2016-08-07_20-37-01.png
Последний раз редактировалось naum 09 авг 2016, 07:59, всего редактировалось 3 раза.

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: всё вместе

Непрочитанное сообщение naum » 08 авг 2016, 10:02

Код: Выделить всё

function Initialize()
{
    IndicatorName = "HLOC_Line";         
         
  AddInput("Inp", Inputs.Candle);   

  AddParameter("Period_HL", 1,1);         
  AddParameter("Period_CO", 1,1);      
               
  PriceStudy = false;         
            AddSeries("Hi", DrawAs.Line, Color.Red,false);                        
                                 AddSeries("Lo", DrawAs.Line, Color.Red,false);      
                                 AddSeries("HL",DrawAs.Line,Color.Blue ,AxisType.ZeroBased);

  AddSeries("Op", DrawAs.Line , Color.Blue,false);                      
  AddSeries("Cl", DrawAs.Line , Color.Blue,false);      
  AddSeries("CO", DrawAs.Histogram , Color.Red,AxisType.ZeroBased);                     
 }
function Evaluate()
{
    var open = Input.Open[0];               
   var close = Input.Close[0];

    var high = Input.High[0];                 
   var low = Input.Low[0];
   
   if ( CurrentIndex >= 0 )
   {
                 
         int i = 0;
             for (i = 1; i < Period_HL; i++)
                                               high = Math.Max(Input.High[i], high);
           for (i = 1; i < Period_HL; i++)
                                               low =Math.Min(Input.Low[i], low) ;
           for (i = 1; i < Period_CO; i++)
                                               open =  Math.Max(Input.Open[i], open);
           for (i = 1; i < Period_CO; i++)
                                               close = Math.Min(Input.Close[i], close);
                Hi = high;
               Lo = low;
                 HL=(high-low);
                Cl=close;
                Op=open ;                           
                CO = Math.Abs(close - open);
 }
}
Вложения
2016-08-08_14-53-33.png
2016-08-08_14-53-33.png (6.47 КБ) 10358 просмотров
Последний раз редактировалось naum 09 авг 2016, 16:42, всего редактировалось 3 раза.

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: всё вместе

Непрочитанное сообщение naum » 08 авг 2016, 10:07

Код: Выделить всё

function Initialize()
{
    IndicatorName = "HLOC_Histogram";         
         
  AddInput("Inp", Inputs.Candle);   

  AddParameter("Period_HL", 1,1);         
  AddParameter("Period_CO", 1,1);      
               
  PriceStudy = false;         
             AddSeries("Hi", DrawAs.Line, Color.Red,false);                        
                                 AddSeries("Lo", DrawAs.Line, Color.Red,false);      
                                 AddSeries("HL",DrawAs.Histogram ,Color.Blue ,AxisType.ZeroBased);

  AddSeries("Op", DrawAs.Line , Color.Blue,false);                      
  AddSeries("Cl", DrawAs.Line , Color.Blue,false);      
  AddSeries("CO", DrawAs.Histogram , Color.Red,AxisType.ZeroBased);                     
 }
function Evaluate()
{
    var open = Input.Open[0];               
   var close = Input.Close[0];

    var high = Input.High[0];                 
   var low = Input.Low[0];
   
   if ( CurrentIndex >= 0 )
   {
                 
         int i = 0;
             for (i = 1; i < Period_HL; i++)
                                               high = Math.Max(Input.High[i], high);
           for (i = 1; i < Period_HL; i++)
                                               low =Math.Min(Input.Low[i], low) ;
           for (i = 1; i < Period_CO; i++)
                                               open =  Math.Max(Input.Open[i], open);
           for (i = 1; i < Period_CO; i++)
                                               close = Math.Min(Input.Close[i], close);
                Hi = high;
               Lo = low;
                 HL=(high-low);
                Cl=close;
                Op=open ;                           
                CO = Math.Abs(close - open);   
 }
}
Вложения
2016-08-08_14-47-02.png
2016-08-08_14-47-02.png (9.93 КБ) 10356 просмотров
Последний раз редактировалось naum 09 авг 2016, 16:41, всего редактировалось 2 раза.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 62 раза
Поблагодарили: 294 раза
Контактная информация:

Re: простой индикатор

Непрочитанное сообщение evge » 08 авг 2016, 10:15

ad4-highlight.png
Как подсветить синтаксис кода
ad4-highlight.png (34.88 КБ) 10350 просмотров
никогда такого не было и вот опять

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: CO c средней скользящей

Непрочитанное сообщение naum » 09 авг 2016, 11:06

Код: Выделить всё

function Initialize()
{
    IndicatorName = "CO+MA";         
         
  AddInput("Inp", Inputs.Candle);   
               
  AddParameter("Period_CO", 1,1);     
 AddParameter("Period_SMA", 10,1);                 
               
  PriceStudy = false;         
                       
  AddSeries("Op", DrawAs.Line , Color.Blue,false);   //
 AddSeries("Cl", DrawAs.Line , Color.Red,false);    // 
  AddSeries("CO", DrawAs.Histogram , Color. Red);
 AddSeries("SMAseries",  DrawAs.Line , Color.Green);                         
}
function Evaluate()
{
   var open = Input.Open[0];
   var close = Input.Close[0];
   if ( CurrentIndex >= Period_CO )
   {                   
         int i = 0;
        for (i = 1; i < Period_CO;++ i)
              open =  Math.Max(Input.Open[i], open);

        for (i = 1; i < Period_CO; i++)
              close = Math.Min(Input.Close[i], close);
                Cl=close;
                Op=open;                           
                CO= Math.Abs(close - open);;
if ( CurrentIndex >= Period_CO + Period_SMA )
 {
  double sma = 0;
 for (i = 0; i < Period_SMA;++ i)
 sma = sma + CO[i];
sma = sma /Period_SMA ;
SMAseries = sma;
 } 
 }
}

Вложения
2016-08-09_15-58-26.png
Последний раз редактировалось naum 09 авг 2016, 16:40, всего редактировалось 2 раза.

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: тот же VBA только на графике и с фильтром

Непрочитанное сообщение naum » 09 авг 2016, 16:09

Код: Выделить всё

function Initialize()
{
  IndicatorName = "VBA_Chart";

  PriceStudy = true;   

  AddInput("Input", Inputs.Candle);
   
 AddSeries("ask", DrawAs.Custom , Color.Green);   
 AddSeries("bid", DrawAs.Custom , Color.Red);   
 
 AddParameter("vol", 10000, 3);   
 AddParameter("pips", 0.3,1 );                           
}
function Evaluate()
{

 ask=Input.Low-pips;
 bid= Input.High+pips ;
                                 
if(Input.Volume>vol){
 
if (Input.VolumeAsk > Input.VolumeBid)
{
     ask.DrawCircle();
  }

  if (Input.VolumeAsk < Input.VolumeBid)

  {
         bid.DrawCircle();
   }
  }
}

Вложения
2016-08-09_21-04-01.png
Последний раз редактировалось naum 25 авг 2016, 07:57, всего редактировалось 3 раза.

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: просто большой объём

Непрочитанное сообщение naum » 09 авг 2016, 16:37

Код: Выделить всё

function Initialize()
{
  IndicatorName = "BA_Chart";

  PriceStudy = true;   

  AddInput("Input", Inputs.Candle);
   
 AddSeries("ask", DrawAs.Custom , Color.Red);   
    
 
 AddParameter("vol", 10000, 3);   
                           
}

function Evaluate()
{


 ask= (Input.High+Input.Low)/2;
 

                                 

if(Input.Volume>=vol){
 
   
   ask.DrawCircle();
  }

     
  }
Вложения
2016-08-09_21-28-44.png

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re: MACD со стрелками

Непрочитанное сообщение naum » 13 авг 2016, 12:27

Код: Выделить всё

function Initialize()
{   
IndicatorName = "MACD_idicator";
PriceStudy = false;         
AddInput("Input", Inputs.Price);
               
AddParameter("PFast", 10);                        
AddParameter("PSlow", 20, 2);
AddParameter("PSig", 10);      

       AddSeries("S", DrawAs.Custom,Color.White);
      AddSeries("B", DrawAs.Custom,Color.Yellow);            
AddSeries("Line", DrawAs.Line, Color.Gray);      //,false
AddSeries("Signal", DrawAs.Line, Color.Red);   
//AddLevel(0, Color.Gray, "Line");

AddGlobalVariable("EMA1", Types.Double,  0.0);
AddGlobalVariable("EMA2", Types.Double,  0.0);
AddGlobalVariable("KC1", Types.Double, 0.0);
AddGlobalVariable("KC2", Types.Double, 0.0);
AddGlobalVariable("KC", Types.Double, 0.0);
//AddGlobalVariable("r", Types.Double, 0.2);


}

function Evaluate()

{
   if( CurrentIndex < 1 )
   {   
      EMA1 = Input[0];                                      
      EMA2 = Input[0];                                      
     Line = 0.0;
     Signal = 0.0;
       KC1 = 2.0 /  ((double) PFast + 1.0);
       KC2 = 2.0 / ((double) PSlow + 1.0);
   KC  = 2.0 / ((double) PSig  + 1.0);
   }
   else
   {
       EMA1 = (1.0 - KC1)*EMA1 + KC1*Input[0];
       EMA2 = (1.0 - KC2)*EMA2 + KC2*Input[0];
      Line  = EMA1 - EMA2;
      Signal  = (1.0 - KC)*Signal[-1] + KC*Line;
   }


  if (Line[-1] > Signal[-1]&&Line[0] < Signal[0])

       S.DrawArrowDown();
//PlaySound(InnerSystemSounds.Exclamation ) ;

 S=Signal[0];

if (Line[-1] < Signal[-1]&&Line[0] > Signal[0])

 B=Line[0];

      B.DrawArrowUp();
//PlaySound(InnerSystemSounds.Exclamation ) ;
}
Вложения
2016-08-13_17-20-03.png

naum
Сообщения: 22
Зарегистрирован: 17 мар 2016, 08:59

Re:MACD со стрелками

Непрочитанное сообщение naum » 13 авг 2016, 12:30

Код: Выделить всё

function Initialize()
{   
IndicatorName = "MACD_chart";
PriceStudy = true;         
AddInput("Input", Inputs.Price);
               
AddParameter("PFast", 10);                        
AddParameter("PSlow", 20, 2);
AddParameter("PSig", 10);      

       AddSeries("S", DrawAs.Custom, Color.Red);
      AddSeries("B", DrawAs.Custom, Color.Blue);               
AddSeries("Line", DrawAs.Line, Color.Gray,false);      
AddSeries("Signal", DrawAs.Line, Color.Red,false);   
AddLevel(0, Color.Gray, "Line");

AddGlobalVariable("EMA1", Types.Double,  0.0);
AddGlobalVariable("EMA2", Types.Double,  0.0);
AddGlobalVariable("KC1", Types.Double, 0.0);
AddGlobalVariable("KC2", Types.Double, 0.0);
AddGlobalVariable("KC", Types.Double, 0.0);
}

function Evaluate()


{
S=Input.Close;
B=Input.Close;
   if( CurrentIndex < 1 )
   {   
      EMA1 = Input[0];                                      
      EMA2 = Input[0];                                      
     Line = 0.0;
     Signal = 0.0;
       KC1 = 2.0 /  ((double) PFast + 1.0);
       KC2 = 2.0 / ((double) PSlow + 1.0);
   KC  = 2.0 / ((double) PSig  + 1.0);
   }
   else
   {
       EMA1 = (1.0 - KC1)*EMA1 + KC1*Input[0];
       EMA2 = (1.0 - KC2)*EMA2 + KC2*Input[0];
      Line  = EMA1 - EMA2;
      Signal  = (1.0 - KC)*Signal[-1] + KC*Line;
   }


  if (Line[-1] > Signal[-1]&&Line[0] < Signal[0])

       S.DrawArrowDown();

if (Line[-1] < Signal[-1]&&Line[0] > Signal[0])

      B.DrawArrowUp();
}


Вложения
2016-08-13_17-23-42.png


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя