Страница 1 из 2

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

Добавлено: 06 авг 2016, 09:14
naum
Измеряет разницу между хаем и лоем свечки .

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

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;
}

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

Добавлено: 07 авг 2016, 15:54
naum

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

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);;

                }
    }

Re: всё вместе

Добавлено: 08 авг 2016, 10:02
naum

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

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);
 }
}

Re: всё вместе

Добавлено: 08 авг 2016, 10:07
naum

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

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);   
 }
}

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

Добавлено: 08 авг 2016, 10:15
evge
ad4-highlight.png
Как подсветить синтаксис кода
ad4-highlight.png (34.88 КБ) 31155 просмотров

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

Добавлено: 09 авг 2016, 11:06
naum

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

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;
 } 
 }
}


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

Добавлено: 09 авг 2016, 16:09
naum

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

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();
   }
  }
}


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

Добавлено: 09 авг 2016, 16:37
naum

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

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();
  }

     
  }

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

Добавлено: 13 авг 2016, 12:27
naum

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

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 ) ;
}

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

Добавлено: 13 авг 2016, 12:30
naum

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

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();
}