外汇指标
求大神帮忙看下这个指标显示不了什么问题?谢谢
回复:0  浏览:851
  • 楼主admin 圈主
  • 2019-05-05 13:33
#property indicator_chart_window
#define PREFIX "T3S"

#property indicator_buffers 2               
#property indicator_color1 Lime
#property indicator_color2 White

extern int    Snake_HalfCycle = 14;
extern int    T3Period        = 21;
extern int    T3Price         = PRICE_CLOSE;
extern double b               = 0.518;
extern string Timeframe       = "current time frame";
extern bool   Indi_Lines      = true;
extern bool   Real            = true;
extern int    Arr_otstup      = 0;
extern int    Arr_width       = 2;
extern bool   alertsMessage      = true;
extern bool   alertsSound        = false;
extern bool   alertsEmail        = false;
extern bool   alertsNotification = false;
extern int    SignalBar          = 0;

int sig_alert=0;

double Sn[],T3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    SetIndexBuffer(0,Sn);
    SetIndexLabel (0,"Sn");
   
    SetIndexBuffer(1,T3);
    SetIndexLabel (1,"T3");
if(Indi_Lines){   
    SetIndexStyle (0,DRAW_LINE);
    SetIndexStyle (1,DRAW_LINE);   
   }else{
    SetIndexStyle (0,DRAW_NONE);
    SetIndexStyle (1,DRAW_NONE);}   
   
    IndicatorShortName("T-S");
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   for(int i = ObjectsTotal()-1; i >= 0; i--)   
   if (StringSubstr(ObjectName(i), 0,
       StringLen(PREFIX)) == PREFIX)
       ObjectDelete(ObjectName(i));
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int i;
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars;
   
   if(Real)int snk=0; else snk=Snake_HalfCycle;

   for(i=0; i<limit+snk; i++)
   {
    Sn[i] = iCustom(Symbol(),0,"Snake",Snake_HalfCycle,0,i);
    T3[i] = iCustom(Symbol(),0,"T3_clean",T3Period,T3Price,b,Timeframe,0,i);
   }
//+------------------------------------------------------------------+
for(i=0; i<limit+snk; i++)
  {   
  if(Sn[i+1]<T3[i+1] && Sn[i]>T3[i])
    arrows_wind(i,"T3+Snake_Up",Arr_otstup ,233,Lime,Arr_width,false);
    else ObjectDelete(PREFIX+"T3+Snake_Up"+TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
  
  if(Sn[i+1]>T3[i+1] && Sn[i]<T3[i])
    arrows_wind(i,"T3+Snake_Dn",Arr_otstup ,234,Red,Arr_width,true);
    else ObjectDelete(PREFIX + "T3+Snake_Dn" + TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
//-----------------------------------------------------------------------+
if(alertsMessage || alertsEmail || alertsNotification || alertsSound)
  {
   string message1 = ("T3+Snake - "+Symbol()+" TF("+Period()+") - Signal for BUY");
   string message2 = ("T3+Snake - "+Symbol()+" TF("+Period()+") - Signal for SELL");
      
    if(sig_alert!=1 && Sn[SignalBar+1]<T3[SignalBar+1] && Sn[SignalBar]>T3[SignalBar])
     {
        if (alertsMessage) alert(message1);
        if (alertsEmail)   SendMail(Symbol()+" T3+Snake ",message1);
        if (alertsNotification) SendNotification(message1);
        if (alertsSound)   PlaySound("alert2.wav");
        sig_alert=1;
     }
    if(sig_alert!=2 && Sn[SignalBar+1]>T3[SignalBar+1] && Sn[SignalBar]<T3[SignalBar])
     {
        if (alertsMessage) alert(message2);
        if (alertsEmail)   SendMail(Symbol()+" T3+Snake ",message2);
        if (alertsNotification) SendNotification(message2);
        if (alertsSound)   PlaySound("alert2.wav");
        sig_alert=2;
    }
   }
  }
//+------------------------------------------------------------------+
      return(0);
}
//====================================================================  
void arrows_wind(int k, string N,int ots,int Code,color clr, int ArrowSize,bool up)                 
{           
   string objName = PREFIX+N+TimeToStr(Time[k],TIME_DATE|TIME_SECONDS);
   double gap  = (3.0*iATR(NULL,0,20,k)/4.0)+ots*Point;
   
   ObjectCreate(objName, OBJ_ARROW,0,Time[k],0);
   ObjectSet   (objName, OBJPROP_COLOR, clr);  
   ObjectSet   (objName, OBJPROP_ARROWCODE,Code);
   ObjectSet   (objName, OBJPROP_WIDTH,ArrowSize);  
  if (up)
      ObjectSet(objName,OBJPROP_PRICE1,High[k]+gap);
     else  
      ObjectSet(objName,OBJPROP_PRICE1,Low[k]-gap);
}
//====================================================================