客服热线:18391752892

MACD.mq4

   日期:2019-01-12     浏览:957    

/////////////////////////////////////////////////////////////////////////////////////////////
//| mymacd v2 12/11/05
/////////////////////////////////////////////////////////////////////////////////////////////
#property link jpygbp@yahoo.com
#property indicator_buffers 5
#property indicator_separate_window
#property indicator_color1 HotPink    //macd
#property indicator_color2 Lime   //signal
#property indicator_color3 Gray //histogram
#property indicator_color4 Blue //macd[1]
#property indicator_color5 Black   //zero line
//---- buffers
double Buffer1[]; //macd
double Buffer2[]; //signal
double Buffer3[]; //histogram
double Buffer4[]; //macd[1]
double Buffer5[]; //zero line
//
extern int FastEMA = 9;
extern int SlowEMA = 64;
extern int SignalSMA = 112;
//extern bool plotMACD = true;
//extern bool plotSignalLine = true;
//extern bool plotHistogram = true;
//extern bool plotMACDoneBarAgo = true;
//extern bool plotZeroLine = true;
extern bool plotArrows = false;
extern double HistThreshold = 0;
//
//
int limit = 0;
int fontsize=10;
int i = 0;
bool InLTrade = false;
bool InSTrade = false;
/////////////////////////////////////////////////////////////////////////////////////////////
int init()
{
   ObjectsDeleteAll();
   //---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//macd
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//signal
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2);//hist
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);//macd[1]
   SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1);//zero
   //
   SetIndexBuffer(0,Buffer1);
   SetIndexBuffer(1,Buffer2);
   SetIndexBuffer(2,Buffer3);
   SetIndexBuffer(3,Buffer4);
   SetIndexBuffer(4,Buffer5);
   //
   SetIndexDrawBegin(1,SignalSMA);
   //
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
   //
   IndicatorShortName( MACD( +FastEMA+ , +SlowEMA+ , +SignalSMA+ )
   //
   SetIndexLabel(0, MACD
   SetIndexLabel(1, Signal
   SetIndexLabel(2, Histogram
   SetIndexLabel(3, MACD[1]
   SetIndexLabel(4, Zero
   //
   return(0);
}
/////////////////////////////////////////////////////////////////////////////////////////////
string NewArrow(datetime T1, double P1, color collor)
{
   string N=StringConcatenate( A ,collor, - ,TimeToStr(T1));
   int AC=SYMBOL_STOPSIGN;
   if(collor==Blue)
     AC=SYMBOL_ARROWUP;
   if(collor==Red)
     AC=SYMBOL_ARROWDOWN;
   //
   ObjectCreate(N, OBJ_ARROW, 0, T1, P1);
   ObjectSet(N, OBJPROP_ARROWCODE, AC);
   ObjectSet(N, OBJPROP_COLOR, collor);
   ObjectSet(N, OBJPROP_WIDTH, 1);
   ObjectsRedraw();
   return(N);
}
/////////////////////////////////////////////////////////////////////////////////////////////
int deinit()
{
   ObjectsRedraw();
   return(0);
}
/////////////////////////////////////////////////////////////////////////////////////////////
int start()
{
   int counted_bars=IndicatorCounted();
   if(counted_bars 0) return(-1);//---- check for possible errors
   if(counted_bars 0) counted_bars--;//---- last counted bar will be recounted
   limit=Bars-counted_bars;
   //
   for(i=0; i limit; i++)//---- macd counted in the 1-st buffer histogram
     Buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
   //
   for(i=0; i limit; i++)//---- signal line counted in the 2-nd buffer line
     Buffer2[i]=iMAonArray(Buffer1,Bars,SignalSMA,0,MODE_SMA,i);
   //
   for(i=0; i limit; i++)//---- histogram is the difference between macd and signal line
   {
     Buffer3[i]=Buffer1[i]-Buffer2[i];
     Buffer5[i]=0;
   }
   //
   for(i=1; i limit; i++)//---- macd[1]
     Buffer4[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-1);
   //
   if (plotArrows)
   {
     ObjectsDeleteAll();
     InLTrade = false;
     InSTrade = false;
     for(int i=Bars;i i--)
     {
       if ((Buffer3[i-1]  0) (Buffer3[i] 0) Buffer3[i-1] HistThreshold)//Long Begin
       {
       string upArrow1=NewArrow(Time[i-1], High[i-1]+0.0005, Blue);
         InLTrade = true;
       }
       if ((Buffer3[i-1]  0) (Buffer3[i] 0) Buffer3[i-1] -HistThreshold)//Short Begin
       {
         string dnArrow1=NewArrow(Time[i-1], Low[i-1]-0.0003, Red);
         InSTrade = true;
         InLTrade = false; 
       }
       if ((InSTrade == true) (Buffer3[i-1] Buffer3[i]))//Short End
       {
         string upArrow2=NewArrow(Time[i-1], Low[i-1]-0.0003, Aqua);
         InSTrade = false;
       }
       if ((InLTrade == true) (Buffer3[i-1] Buffer3[i]))//Long End
       {
         string dnArrow2=NewArrow(Time[i-1], High[i-1]+0.0005, Aqua);
         InLTrade = false;   
       }
     }
   }
   //
   //
   return(0);
}
/////////////////////////////////////////////////////////////////////////////////////////////复制代码

外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行