张玲 发表于 2018-3-20 16:25:45

Absolute Strenght Histo



//+------------------------------------------------------------------+
//|                                          AbsoluteStrength_v1.mq4 |
//|                           Copyright ?2006, TrendLaboratory Ltd. |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                       E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
//| Modifications:                                                   |
//| - AbsoluteStrengthHisto_v1, 2006/06/26:                        |
//|   Put in Histogram form with 2 level lines                     |
//|   ph_bresson@yahoo.com                                           |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_separate_window
#property indicator_maximum 0.0001
#property indicator_minimum 0
#property indicator_buffers   4
#property indicator_color1    Lime
#property indicator_width1    5
#property indicator_color2    Red
#property indicator_width2    5
#property indicator_color3    CLR_NONE
#property indicator_width3    2
#property indicator_color4    CLR_NONE
#property indicator_width4    2

//---- input parameters
extern int       Mode   =0; // 0-RSI method; 1-Stoch method
extern int       Length =7; // Period
extern int       Smooth =7; // Period of smoothing
extern int       Signal =4; // Period of Signal Line
extern int       Price=0; // Price mode : 0-Close,1-Open,2-High,3-Low,4-Median,5-Typical,6-Weighted
extern int       ModeMA =1; // Mode of Moving Average
extern int       Mode_Histo= 3;
//---- buffers
double Bulls[];
double Bears[];
double AvgBulls[];
double AvgBears[];
double SmthBulls[];
double SmthBears[];
double SigBulls[];
double SigBears[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   IndicatorBuffers(8);
   SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(0,SmthBulls);
   SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(1,SmthBears);

   SetIndexStyle(2,DRAW_LINE,EMPTY,2);
   SetIndexBuffer(2,SigBulls);
   SetIndexStyle(3,DRAW_LINE,EMPTY,2);
   SetIndexBuffer(3,SigBears);

   SetIndexBuffer(4,Bulls);
   SetIndexBuffer(5,Bears);
   SetIndexBuffer(6,AvgBulls);
   SetIndexBuffer(7,AvgBears);
//---- name for DataWindow and indicator subwindow label
   string short_name="AbsoluteStrengthHistogram("+Mode+","+Length+","+Smooth+","+Signal+",,"+ModeMA+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"Bulls");
   SetIndexLabel(1,"Bears");
   SetIndexLabel(2,"Bulls");
   SetIndexLabel(3,"Bears");      

//----
   SetIndexDrawBegin(0,Length+Smooth+Signal);
   SetIndexDrawBegin(1,Length+Smooth+Signal);
   SetIndexDrawBegin(2,Length+Smooth+Signal);
   SetIndexDrawBegin(3,Length+Smooth+Signal);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexEmptyValue(2,0.0);
   SetIndexEmptyValue(3,0.0);
   SetIndexEmptyValue(4,0.0);
   SetIndexEmptyValue(5,0.0);
   SetIndexEmptyValue(6,0.0);
   SetIndexEmptyValue(7,0.0);



   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int      shift, limit, counted_bars=IndicatorCounted();
   double   Price1, Price2, smax, smin;
//----
   if ( counted_bars < 0 ) return(-1);
   if ( counted_bars ==0 ) limit=Bars-Length+Smooth+Signal-1;
   if ( counted_bars < 1 )
   for(int i=1;i<Length+Smooth+Signal;i++)
   {
   Bulls=0;   
   Bears=0;
   AvgBulls=0;   
   AvgBears=0;
   SmthBulls=0;   
   SmthBears=0;
   SigBulls=0;   
   SigBears=0;
   }
   
   
   
   if(counted_bars>0) limit=Bars-counted_bars;
   limit--;
   
   for( shift=limit; shift>=0; shift--)
      {
      Price1 = iMA(NULL,0,1,0,0,Price,shift);
      Price2 = iMA(NULL,0,1,0,0,Price,shift+1);
      
         if (Mode==0)
         {
         Bulls = 0.5*(MathAbs(Price1-Price2)+(Price1-Price2));
         Bears = 0.5*(MathAbs(Price1-Price2)-(Price1-Price2));
         }
      
         if (Mode==1)
         {
         smax=High;
         smin=Low;
         
         Bulls = Price1 - smin;
         Bears = smax - Price1;
         }
      }
      
      for( shift=limit; shift>=0; shift--)
      {
      AvgBulls=iMAOnArray(Bulls,0,Length,0,ModeMA,shift);   
      AvgBears=iMAOnArray(Bears,0,Length,0,ModeMA,shift);
      }
      
      for( shift=limit; shift>=0; shift--)
      {
      SmthBulls=iMAOnArray(AvgBulls,0,Smooth,0,ModeMA,shift);   
      SmthBears=iMAOnArray(AvgBears,0,Smooth,0,ModeMA,shift);
      }

      if(Mode_Histo == 1)
      {
         for( shift=limit; shift>=0; shift--)
         {
            if(SmthBulls-SmthBears>0)
            {
               SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,5);
               SetIndexStyle(1,DRAW_LINE,EMPTY,2);
               SmthBears= SmthBears/Point;
               SmthBulls= SmthBulls/Point;
            }
            else
            {
               SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,5);
               SetIndexStyle(0,DRAW_LINE,EMPTY,2);
               SmthBears= SmthBears/Point;
               SmthBulls= SmthBulls/Point;
            }
         }//end for( shift=limit; shift>=0; shift--)
      }   // end if(Mode_Histo == 1)
      else
      if(Mode_Histo == 2)
      {
         for( shift=limit; shift>=0; shift--)
         {
            if(SmthBulls-SmthBears>0)
            {
               SmthBears=-SmthBears/Point;
               SmthBulls= SmthBulls/Point;
            }
            else
            {
               SmthBulls=-SmthBulls/Point;
               SmthBears= SmthBears/Point;
            }
         }//end for( shift=limit; shift>=0; shift--)      
      }   //end if(Mode_Histo == 2)
      else
      if(Mode_Histo == 3)
      {
         for( shift=limit; shift>=0; shift--)
         {
            SigBulls=SmthBulls;
            SigBears=SmthBears;            
            if(SmthBulls-SmthBears>0)
               SmthBears=0;
            else
               SmthBulls=0;
         }//end for( shift=limit; shift>=0; shift--)      
      }   //end if(Mode_Histo == 3)
      else
      if(Mode_Histo == 4)
      {
         for( shift=limit; shift>=0; shift--)
         {
            if(SmthBulls-SmthBears>0)
            {
               SigBears=SmthBears;
               SmthBears=0;
            }
            else
            {
               SigBulls=SmthBulls;
               SmthBulls=0;         
            }
         }//end for( shift=limit; shift>=0; shift--)      
      }   //end if(Mode_Histo == 4)
      
   return(0);
}
//+------------------------------------------------------------------+


kjingyu11 发表于 2019-5-8 00:14:46

晚舟获保释后发出的第一条朋友圈

金银日升 发表于 2020-6-28 19:41:02

难得一见的好帖

ctm1kwko02om 发表于 2020-7-28 10:06:05

谢谢楼主分享

host 发表于 2020-8-7 16:32:07

谢谢楼主分享

一生跟随 发表于 2020-11-23 18:28:31

顶下

飘渺峰 发表于 2021-8-11 15:53:43

{:1_181:}
页: [1]
查看完整版本: Absolute Strenght Histo