| 原代码: 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);
 }
 //+------------------------------------------------------------------+
 |