原代码: 
extern bool Alerts = false; 
extern double  GMTshiftSun=0;   
extern double  GMTshift=1; 
extern bool Pivot = true; 
extern bool CamTargets = true; 
extern bool ListCamTargets = true; 
extern color PivotColor = LimeGreen; 
extern color PivotFontColor = White; 
extern int PivotFontSize = 8; 
extern int PivotWidth = 1; 
extern int PipDistance = 20; 
extern color CamFontColor = Gray; 
extern int CamFontSize = 10; 
extern bool Fibs = true; 
extern color FibColorRes = SeaGreen; 
extern color FibColorSup = Brown; 
extern color FibFontColor = Gray; 
extern int FibFontSize = 8; 
extern bool DisplayFibLevels_1_3 = false;  
extern double FibLevel1 = 0.236; 
extern double FibLevel2 = 0.382; 
extern double FibLevel3 = 0.50; 
extern bool DisplayFibLevels_4_6 = true; 
extern double FibLevel4 = 0.618; 
extern double FibLevel5 = 0.764; 
extern double FibLevel6 = 0.99; 
extern bool DisplayFibLevels_7_16 = true; 
extern double FibLevel7 = 1.27; 
extern double FibLevel8 = 1.618; 
extern double FibLevel9 = 1.99; 
extern double FibLevel10 = 2.236; 
extern double FibLevel11 = 2.618; 
extern double FibLevel12 = 2.99; 
extern double FibLevel13 = 3.236; 
extern double FibLevel14 = 3.618; 
extern double FibLevel15 = 3.99; 
extern double FibLevel16 = 4.236; 
extern bool StandardPivots = true; 
extern bool ListStandardPivots = true; 
extern color StandardFontColor = Gray; 
extern int StandardFontSize = 8; 
extern color SupportColor = Brown; 
extern color ResistanceColor = SeaGreen; 
extern bool MidPivots = false; 
extern color MidPivotColor = White; 
extern int MidFontSize = 8; 
double P, H3, H4, H5; 
double L3, L4, L5; 
double LastHigh,LastLow,x; 
bool firstL3=true; 
bool firstH3=true; 
double D1=0.091667; 
double D2=0.183333; 
double D3=0.2750; 
double D4=0.55; 
double yesterday_high=0; 
double yesterday_low=0; 
double yesterday_close=0; 
double p=0; 
double r1=0,r2=0,r3=0,r4=0,r5=0,r6=0,r7=0,r8=0,r9=0,r10=0,r11=0,r12=0,r13=0,r14=0,r15=0,r16=0; 
double s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0,s9=0,s10=0,s11=0,s12=0,s13=0,s14=0,s15=0,s16=0; 
double R; 
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- TODO: add your code here 
if (Pivot) 
{ 
ObjectDelete("P Label"); 
ObjectDelete("P Line"); 
} 
if (CamTargets) 
{ 
ObjectDelete("H5 Label"); 
ObjectDelete("H5 Line"); 
ObjectDelete("H4 Label"); 
ObjectDelete("H4 Line"); 
ObjectDelete("H3 Label"); 
ObjectDelete("H3 Line"); 
ObjectDelete("L3 Label"); 
ObjectDelete("L3 Line"); 
ObjectDelete("L4 Label"); 
ObjectDelete("L4 Line"); 
ObjectDelete("L5 Label"); 
ObjectDelete("L5 Line"); 
} 
//---- 
if (MidPivots) 
{ 
ObjectDelete("M5 Label"); 
ObjectDelete("M5 Line"); 
ObjectDelete("M4 Label"); 
ObjectDelete("M4 Line"); 
ObjectDelete("M3 Label"); 
ObjectDelete("M3 Line"); 
ObjectDelete("M2 Label"); 
ObjectDelete("M2 Line"); 
ObjectDelete("M1 Label"); 
ObjectDelete("M1 Line"); 
ObjectDelete("M0 Label"); 
ObjectDelete("M0 Line"); 
} 
   return(0); 
  } 
int DoAlerts() 
{ 
   double DifAboveL3,PipsLimit; 
   double DifBelowH3; 
   DifBelowH3 = H3 - Close[0]; 
   DifAboveL3 = Close[0] - L3; 
   PipsLimit = PipDistance*Point; 
   if (DifBelowH3 > PipsLimit) firstH3 = true; 
   if (DifBelowH3  0) 
   { 
    if (firstH3) 
    { 
      Alert("Below Cam H3 Line by ",DifBelowH3, " for ", Symbol(),"-",Period()); 
      PlaySound("alert.wav"); 
      firstH3=false; 
    } 
   } 
   if (DifAboveL3 > PipsLimit) firstL3 = true; 
   if (DifAboveL3  0) 
   { 
    if (firstL3) 
    { 
      Alert("Above Cam L3 Line by ",DifAboveL3," for ", Symbol(),"-",Period()); 
      Sleep(2000); 
      PlaySound("timeout.wav"); 
      firstL3=false; 
    } 
   } 
} 
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int start() 
  { 
   int    counted_bars=IndicatorCounted(); 
//---- TODO: add your code here 
double day_high=0; 
double day_low=0; 
double yesterday_open=0; 
double today_open=0; 
double Q=0,S=0,R=0,M2=0,M3=0,S1=0,R1=0,M1=0,M4=0,S2=0,R2=0,M0=0,M5=0,S3=0,R3=0,nQ=0,nD=0,D=0,R4=0,S4=0,R5=0,S5=0; 
double shift_corrected; 
int cnt=720; 
double cur_day=0; 
double prev_day=0; 
double rates_d1[2][6]; 
//---- exit if period is greater than daily charts 
if(Period() > 1440) 
{ 
Print("Error - Chart period is greater than 1 day."); 
return(-1); // then exit 
} 
//---- Get new daily prices & calculate pivots 
if (DayOfWeek()==1)  shift_corrected=GMTshiftSun; 
else if ((DayOfWeek()==2) && (Minute() >= 5)) shift_corrected=GMTshift; 
//else if ((DayOfWeek()==2) && (Hour() > GMTshift)) shift_corrected=GMTshift; 
else    shift_corrected=GMTshift; 
while (cnt!= 0) 
{ 
        cur_day = TimeDay(Time[cnt]- (shift_corrected*3600)); 
         
        if (prev_day != cur_day) 
        { 
                yesterday_close = Close[cnt+1]; 
                today_open = Open[cnt]; 
                yesterday_high = day_high; 
                yesterday_low = day_low; 
                day_high = High[cnt]; 
                day_low  = Low[cnt]; 
                prev_day = cur_day; 
        } 
         
   if (High[cnt]>day_high) 
   { 
      day_high = High[cnt]; 
   } 
   if (Low[cnt] 5)  
{ 
        nQ = Q; 
} 
else 
{ 
        nQ = Q*10000; 
} 
if (D > 5) 
{ 
        nD = D; 
} 
else 
{ 
        nD = D*10000; 
} 
if (StringSubstr(Symbol(),3,3)=="JPY") 
      { 
      nQ=nQ/100; 
      nD=nD/100; 
      } 
if ((CamTargets) && (ListCamTargets) && (StandardPivots) && (ListStandardPivots))      
{ 
Comment("High= ",yesterday_high,"    Previous Days Range= ",nQ,"\nLow= ",yesterday_low,"    Current Days Range= ",nD,"\nClose= ",yesterday_close, 
         "\n\nH5 ",H5,"\nH4 ",H4,"\nH3 ",H3,"\n\nL3 ",L3,"\nL4 ",L4,"\nL5 ",L5, 
         "\n\n\n\nR5 ",R5,"\nR4 ", R4,"\nR3 ", R3,"\nR2 ", R2,"\nR1 ", R1,"\nPivot ", P,"\nS1 ", S1,"\nS2 ", S2,"\nS3 ", S3,"\nS4 ", S4,"\nS5 ",S5); 
} 
else if ((CamTargets) && (ListCamTargets) && (StandardPivots) && !(ListStandardPivots))      
{ 
Comment("High= ",yesterday_high,"    Previous Days Range= ",nQ,"\nLow= ",yesterday_low,"    Current Days Range= ",nD,"\nClose= ",yesterday_close, 
         "\n\nH5 ",H5,"\nH4 ",H4,"\nH3 ",H3,"\n\nL3 ",L3,"\nL4 ",L4,"\nL5 ",L5); 
} 
else if ((CamTargets) && (ListCamTargets) && !(StandardPivots))      
{ 
Comment("High= ",yesterday_high,"    Previous Days Range= ",nQ,"\nLow= ",yesterday_low,"    Current Days Range= ",nD,"\nClose= ",yesterday_close, 
         "\n\nH5 ",H5,"\nH4 ",H4,"\nH3 ",H3,"\n\nL3 ",L3,"\nL4 ",L4,"\nL5 ",L5); 
} 
else if (!(CamTargets) && (StandardPivots) && (ListStandardPivots))      
{ 
Comment("High= ",yesterday_high,"    Previous Days Range= ",nQ,"\nLow= ",yesterday_low,"    Current Days Range= ",nD,"\nClose= ",yesterday_close, 
         "\n\nR5 ",R5,"\nR4 ", R4,"\nR3 ", R3,"\nR2 ", R2,"\nR1 ", R1,"\nPivot ", P,"\nS1 ", S1,"\nS2 ", S2,"\nS3 ", S3,"\nS4 ", S4,"\nS5 ",S5); 
} 
else 
{ 
Comment("High= ",yesterday_high,"    Previous Days Range= ",nQ,"\nLow= ",yesterday_low,"    Current Days Range= ",nD,"\nClose= ",yesterday_close); 
} 
//---- Set line labels on chart window 
if (Pivot) 
   { 
      if(ObjectFind("P label") != 0) 
      { 
      ObjectCreate("P label", OBJ_TEXT, 0, Time[0], P); 
      ObjectSetText("P label", "Pivot", PivotFontSize, "Arial", PivotFontColor); 
      } 
      else 
      { 
      ObjectMove("P label", 0, Time[0], P); 
      } 
//---  Draw  Pivot lines on chart 
      if(ObjectFind("P line") != 0) 
      { 
      ObjectCreate("P line", OBJ_HLINE, 0, Time[40], P); 
      ObjectSet("P line", OBJPROP_STYLE, STYLE_DASH); 
      ObjectSet("P line", OBJPROP_COLOR, PivotColor); 
      } 
      else 
      { 
      ObjectMove("P line", 0, Time[40], P); 
      } 
  } 
  if (MidPivots) 
  { 
      if(ObjectFind("M5 label") != 0) 
      { 
      ObjectCreate("M5 label", OBJ_TEXT, 0, Time[20], M5); 
      ObjectSetText("M5 label", " M5", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M5 label", 0, Time[20], M5); 
      } 
      if(ObjectFind("M4 label") != 0) 
      { 
      ObjectCreate("M4 label", OBJ_TEXT, 0, Time[20], M4); 
      ObjectSetText("M4 label", " M4", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M4 label", 0, Time[20], M4); 
      } 
      if(ObjectFind("M3 label") != 0) 
      { 
      ObjectCreate("M3 label", OBJ_TEXT, 0, Time[20], M3); 
      ObjectSetText("M3 label", " M3", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M3 label", 0, Time[20], M3); 
      } 
      if(ObjectFind("M2 label") != 0) 
      { 
      ObjectCreate("M2 label", OBJ_TEXT, 0, Time[20], M2); 
      ObjectSetText("M2 label", " M2", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M2 label", 0, Time[20], M2); 
      } 
      if(ObjectFind("M1 label") != 0) 
      { 
      ObjectCreate("M1 label", OBJ_TEXT, 0, Time[20], M1); 
      ObjectSetText("M1 label", " M1", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M1 label", 0, Time[20], M1); 
      } 
      if(ObjectFind("M0 label") != 0) 
      { 
      ObjectCreate("M0 label", OBJ_TEXT, 0, Time[20], M0); 
      ObjectSetText("M0 label", " M0", MidFontSize, "Arial", MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M0 label", 0, Time[20], M0); 
      } 
      if(ObjectFind("M5 line") != 0) 
      { 
      ObjectCreate("M5 line", OBJ_HLINE, 0, Time[40], M5); 
      ObjectSet("M5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M5 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M5 line", 0, Time[40], M5); 
      } 
      if(ObjectFind("M4 line") != 0) 
      { 
      ObjectCreate("M4 line", OBJ_HLINE, 0, Time[40], M4); 
      ObjectSet("M4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M4 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M4 line", 0, Time[40], M4); 
      } 
      if(ObjectFind("M3 line") != 0) 
      { 
      ObjectCreate("M3 line", OBJ_HLINE, 0, Time[40], M3); 
      ObjectSet("M3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M3 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M3 line", 0, Time[40], M3); 
      } 
      if(ObjectFind("M2 line") != 0) 
      { 
      ObjectCreate("M2 line", OBJ_HLINE, 0, Time[40], M2); 
      ObjectSet("M2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M2 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M2 line", 0, Time[40], M2); 
      } 
      if(ObjectFind("M1 line") != 0) 
      { 
      ObjectCreate("M1 line", OBJ_HLINE, 0, Time[40], M1); 
      ObjectSet("M1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M1 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M1 line", 0, Time[40], M1); 
      } 
      if(ObjectFind("M0 line") != 0) 
      { 
      ObjectCreate("M0 line", OBJ_HLINE, 0, Time[40], M0); 
      ObjectSet("M0 line", OBJPROP_STYLE, STYLE_DASHDOTDOT); 
      ObjectSet("M0 line", OBJPROP_COLOR, MidPivotColor); 
      } 
      else 
      { 
      ObjectMove("M0 line", 0, Time[40], M0); 
      } 
  } 
// --- THE CAMARILLA --- 
if (CamTargets) 
{ 
   if(ObjectFind("H5 label") != 0) 
      { 
      ObjectCreate("H5 label", OBJ_TEXT, 0, Time[20], H5); 
      ObjectSetText("H5 label", " H5 LB TARGET", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("H5 label", 0, Time[20], H5); 
      } 
      if(ObjectFind("H4 label") != 0) 
      { 
      ObjectCreate("H4 label", OBJ_TEXT, 0, Time[20], H4); 
      ObjectSetText("H4 label", " H4 LONG BREAKOUT", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("H4 label", 0, Time[20], H4); 
      } 
      if(ObjectFind("H3 label") != 0) 
      { 
      ObjectCreate("H3 label", OBJ_TEXT, 0, Time[20], H3); 
      ObjectSetText("H3 label", " H3 SHORT", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("H3 label", 0, Time[20], H3); 
      } 
      if(ObjectFind("L3 label") != 0) 
      { 
      ObjectCreate("L3 label", OBJ_TEXT, 0, Time[20], L3); 
      ObjectSetText("L3 label", " L3 LONG", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("L3 label", 0, Time[20], L3); 
      } 
      if(ObjectFind("L4 label") != 0) 
      { 
      ObjectCreate("L4 label", OBJ_TEXT, 0, Time[20], L4); 
      ObjectSetText("L4 label", " L4 SHORT BREAKOUT", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("L4 label", 0, Time[20], L4); 
      } 
      if(ObjectFind("L5 label") != 0) 
      { 
      ObjectCreate("L5 label", OBJ_TEXT, 0, Time[20], L5); 
      ObjectSetText("L5 label", " L5 SB TARGET", CamFontSize, "Arial", CamFontColor); 
      } 
      else 
      { 
      ObjectMove("L5 label", 0, Time[20], L5); 
      } 
//---- Draw Camarilla lines on Chart 
      if(ObjectFind("H5 line") != 0) 
      { 
      ObjectCreate("H5 line", OBJ_HLINE, 0, Time[40], H5); 
      ObjectSet("H5 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("H5 line", OBJPROP_COLOR, SpringGreen); 
      ObjectSet("H5 line", OBJPROP_WIDTH, 1); 
      } 
      else 
      { 
      ObjectMove("H5 line", 0, Time[40], H5); 
      } 
      if(ObjectFind("H4 line") != 0) 
      { 
      ObjectCreate("H4 line", OBJ_HLINE, 0, Time[40], H4); 
      ObjectSet("H4 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("H4 line", OBJPROP_COLOR, SpringGreen); 
      ObjectSet("H4 line", OBJPROP_WIDTH, 1); 
      } 
      else 
      { 
      ObjectMove("H4 line", 0, Time[40], H4); 
      } 
      if(ObjectFind("H3 line") != 0) 
      { 
      ObjectCreate("H3 line", OBJ_HLINE, 0, Time[40], H3); 
      ObjectSet("H3 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("H3 line", OBJPROP_COLOR, SpringGreen); 
      ObjectSet("H3 line", OBJPROP_WIDTH, 2); 
      } 
      else 
      { 
      ObjectMove("H3 line", 0, Time[40], H3); 
      } 
      if(ObjectFind("L3 line") != 0) 
      { 
      ObjectCreate("L3 line", OBJ_HLINE, 0, Time[40], L3); 
      ObjectSet("L3 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("L3 line", OBJPROP_COLOR, Red); 
      ObjectSet("L3 line", OBJPROP_WIDTH, 2); 
      } 
      else 
      { 
      ObjectMove("L3 line", 0, Time[40], L3); 
      } 
      if(ObjectFind("L4 line") != 0) 
      { 
      ObjectCreate("L4 line", OBJ_HLINE, 0, Time[40], L4); 
      ObjectSet("L4 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("L4 line", OBJPROP_COLOR, Red); 
      ObjectSet("L4 line", OBJPROP_WIDTH, 1); 
      } 
      else 
      { 
      ObjectMove("L4 line", 0, Time[40], L4); 
      } 
      if(ObjectFind("L5 line") != 0) 
      { 
      ObjectCreate("L5 line", OBJ_HLINE, 0, Time[40], L5); 
      ObjectSet("L5 line", OBJPROP_STYLE, STYLE_SOLID); 
      ObjectSet("L5 line", OBJPROP_COLOR, Red); 
      ObjectSet("L5 line", OBJPROP_WIDTH, 1); 
      } 
      else 
      { 
      ObjectMove("L5 line", 0, Time[40], L5); 
      } 
} 
//---- done 
   // Now check for Alert 
   if (Alerts) DoAlerts(); 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ |