2010年9月9日 星期四

自製指標 :EMA Slope


自製指標 :EMA Slope

這個就比較複雜

是計算 4 條 EMA 的斜率 這裡用的是 5 天 10 天 15 天 和 20 天

如果 4 條 EMA 的斜率全部都是 向上 也就是 正數 的話 那指標的數值就設定為 1

如果 4 條 EMA 的斜率全部都是 向下 也就是 負數 的話 那指標的數值就設定為 -1

如果 4 條 EMA 的斜率 有一些 向上 有一些 向下 也就是有 正數 也有 負數 的話 那指標的數值就設定為  0.5 也可以看作是短期盤整的意思

要玩這個最好是和 EMA 250 天一起配合

如果 EMA 250 天是 向下 也就是說在 下跌 的時候 那如果指標的數值是 -1 的話 就可以下 賣單 咯 果指標的數值是 0.5 和 1 的話 就不要動作 觀望就可以了

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//+------------------------------------------------------------------+
//|                                                        Bulls.mq4 |
//|                      Copyright ?2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+

#property copyright "Copyright ?2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Silver

//---- input parameters

extern int BullsPeriod1=5;
extern int BullsPeriod2=10;
extern int BullsPeriod3=15;
extern int BullsPeriod4=20;

//---- buffers

double BullsBuffer[];

double TempBuffer1[];
double TempBuffer2[];
double TempBuffer3[];
double TempBuffer4[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
{
   string short_name;

   //---- 1 additional buffer used for counting.

   IndicatorBuffers(2);
   IndicatorDigits(Digits);

   //---- indicator line

   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,BullsBuffer);
  
   SetIndexBuffer(1,TempBuffer1);
   SetIndexBuffer(1,TempBuffer2);
   SetIndexBuffer(1,TempBuffer3);
   SetIndexBuffer(1,TempBuffer4);

   //---- name for DataWindow and indicator subwindow label

   short_name="EMA_Slope("+BullsPeriod1+","+BullsPeriod2+","+BullsPeriod3+","+BullsPeriod4+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   return(0);
}

//+------------------------------------------------------------------+
//| Bulls Power                                                      |
//+------------------------------------------------------------------+

int start()
{
   int i,counted_bars=IndicatorCounted();

   if(Bars<=BullsPeriod4) return(0);
  
   int limit=Bars-counted_bars;
  
   if(counted_bars>0) limit++;
  
   for(i=0; i<limit; i++)
      TempBuffer1[i]=iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i+1);
      TempBuffer2[i]=iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i+1);
      TempBuffer3[i]=iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i+1);
      TempBuffer4[i]=iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i+1);
      i=Bars-counted_bars-1;
      while(i>=0)
     {

         BullsBuffer[i]=0.5;
         if(iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i+1) > 0 && iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i+1) > 0 && iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i+1) > 0 && iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i+1) > 0)
         {
            BullsBuffer[i]=1;
         }
         if(iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod1,0,MODE_EMA,PRICE_CLOSE,i+1) < 0 && iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod2,0,MODE_EMA,PRICE_CLOSE,i+1) < 0 && iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod3,0,MODE_EMA,PRICE_CLOSE,i+1) < 0 && iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,BullsPeriod4,0,MODE_EMA,PRICE_CLOSE,i+1) < 0)
         {
            BullsBuffer[i]=-1;
         }

         i--;
   }
   return(0);
}

沒有留言:

張貼留言