#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Yellow
#property indicator_color5 Lime
#property indicator_color6 Red
extern double Period1 = 0.0;
extern double Period2 = 0.0;
extern double Period3 = 69.0;
extern string Dev_Step_1 = "1,3";
extern string Dev_Step_2 = "8,5";
extern string Dev_Step_3 = "13,8";
extern int Symbol_1_Kod = 32;
extern int Symbol_2_Kod = 91;
extern int Symbol_3_Kod = 91;
extern string _____ = "";
extern bool Audible.Alerts = TRUE;
extern bool Box.Alerts = TRUE;
extern bool Email.Alerts = TRUE;
extern bool Alert.Lv1 = FALSE;
extern bool Alert.Lv2 = FALSE;
extern bool Alert.Lv3 = TRUE;
double G_ibuf_168[];
double G_ibuf_172[];
double G_ibuf_176[];
double G_ibuf_180[];
double G_ibuf_184[];
double G_ibuf_188[];
int Gi_unused_192;
int Gi_unused_196;
int Gi_unused_200;
int Gi_204;
int Gi_208;
int Gi_212;
int Gi_216;
int Gi_220;
int Gi_224;
string Gs_228;
string Gs_236;
string Gs_244;
int G_digits_252;
int G_timeframe_256;
bool Gi_260;
bool Gi_264;
bool Gi_268;
int G_bars_272 = -1;
int Gi_unused_276 = 65535;
int init() {
int Lia_8[];
G_timeframe_256 = Period();
Gs_236 = TimeFrameToString(G_timeframe_256);
Gs_228 = Symbol();
G_digits_252 = Digits;
Gs_244 = "BigMAC Combo" + Gs_228 + Gs_236;
if (Period1 > 0.0) Gi_unused_192 = MathCeil(Period1 * Period());
else Gi_unused_192 = 0;
if (Period2 > 0.0) Gi_unused_196 = MathCeil(Period2 * Period());
else Gi_unused_196 = 0;
if (Period3 > 0.0) Gi_unused_200 = MathCeil(Period3 * Period());
else Gi_unused_200 = 0;
if (Period1 > 0.0) {
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, Symbol_1_Kod);
SetIndexBuffer(0, G_ibuf_168);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, Symbol_1_Kod);
SetIndexBuffer(1, G_ibuf_172);
SetIndexEmptyValue(1, 0.0);
}
if (Period2 > 0.0) {
SetIndexStyle(2, DRAW_ARROW);
SetIndexArrow(2, Symbol_2_Kod);
SetIndexBuffer(2, G_ibuf_176);
SetIndexEmptyValue(2, 0.0);
SetIndexStyle(3, DRAW_ARROW);
SetIndexArrow(3, Symbol_2_Kod);
SetIndexBuffer(3, G_ibuf_180);
SetIndexEmptyValue(3, 0.0);
}
if (Period3 > 0.0) {
SetIndexStyle(4, DRAW_ARROW);
SetIndexArrow(4, Symbol_3_Kod);
SetIndexBuffer(4, G_ibuf_184);
SetIndexEmptyValue(4, 0.0);
SetIndexStyle(5, DRAW_ARROW);
SetIndexArrow(5, Symbol_3_Kod);
SetIndexBuffer(5, G_ibuf_188);
SetIndexEmptyValue(5, 0.0);
}
int Li_unused_0 = 0;
int Li_unused_4 = 0;
int Li_12 = 0;
if (IntFromStr(Dev_Step_1, Li_12, Lia_8) == 1) {
Gi_208 = Lia_8[1];
Gi_204 = Lia_8[0];
}
if (IntFromStr(Dev_Step_2, Li_12, Lia_8) == 1) {
Gi_216 = Lia_8[1];
Gi_212 = Lia_8[0];
}
if (IntFromStr(Dev_Step_3, Li_12, Lia_8) == 1) {
Gi_224 = Lia_8[1];
Gi_220 = Lia_8[0];
}
return (0);
}
int deinit() {
return (0);
}
int start() {
string Ls_0;
if (Bars != G_bars_272) {
Gi_260 = TRUE;
Gi_264 = TRUE;
Gi_268 = TRUE;
}
if (Period1 > 0.0) CountZZ(G_ibuf_168, G_ibuf_172, Period1, Gi_204, Gi_208);
if (Period2 > 0.0) CountZZ(G_ibuf_176, G_ibuf_180, Period2, Gi_212, Gi_216);
if (Period3 > 0.0) CountZZ(G_ibuf_184, G_ibuf_188, Period3, Gi_220, Gi_224);
string Ls_8 = Gs_228 + " " + Gs_236 + " alert price at " + DoubleToStr(Close[0], G_digits_252);
if (Gi_260 && Alert.Lv1) {
if (G_ibuf_168[0] != 0.0) {
Gi_260 = FALSE;
Ls_0 = " YIN/YANG BUY ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
if (G_ibuf_172[0] != 0.0) {
Gi_260 = FALSE;
Ls_0 = " BullsEye SELL ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
}
if (Gi_264 && Alert.Lv2) {
if (G_ibuf_176[0] != 0.0) {
Gi_264 = FALSE;
Ls_0 = " ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
if (G_ibuf_180[0] != 0.0) {
Gi_264 = FALSE;
Ls_0 = " ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
}
if (Gi_268 && Alert.Lv3) {
if (G_ibuf_184[0] != 0.0) {
Gi_268 = FALSE;
Ls_0 = " YIN/YANG BUY ALERT ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
if (G_ibuf_188[0] != 0.0) {
Gi_268 = FALSE;
Ls_0 = " YIN/YANG SELL ALERT ";
if (Audible.Alerts) PlaySound("alert.wav");
if (Box.Alerts) Alert(Ls_0, Ls_8);
if (Email.Alerts) SendMail(Ls_0, Ls_8);
}
}
G_bars_272 = Bars;
return (0);
}
string TimeFrameToString(int Ai_0) {
string Ls_ret_4;
switch (Ai_0) {
case 1:
Ls_ret_4 = "M1";
break;
case 5:
Ls_ret_4 = "M5";
break;
case 15:
Ls_ret_4 = "M15";
break;
case 30:
Ls_ret_4 = "M30";
break;
case 60:
Ls_ret_4 = "H1";
break;
case 240:
Ls_ret_4 = "H4";
break;
case 1440:
Ls_ret_4 = "D1";
break;
case 10080:
Ls_ret_4 = "W1";
break;
case 43200:
Ls_ret_4 = "MN";
}
return (Ls_ret_4);
}
int CountZZ(double &Ada_0[], double &Ada_4[], int Ai_8, int Ai_12, int Ai_16) {
double Ld_36;
double Ld_44;
double Ld_52;
double Ld_60;
double Ld_68;
double Ld_76;
for (int Li_20 = Bars - Ai_8; Li_20 >= 0; Li_20--) {
Ld_36 = Low[iLowest(NULL, 0, MODE_LOW, Ai_8, Li_20)];
if (Ld_36 == Ld_76) Ld_36 = 0.0;
else {
Ld_76 = Ld_36;
if (Low[Li_20] - Ld_36 > Ai_12 * Point) Ld_36 = 0.0;
else {
for (int Li_24 = 1; Li_24 <= Ai_16; Li_24++) {
Ld_44 = Ada_0[Li_20 + Li_24];
if (Ld_44 != 0.0 && Ld_44 > Ld_36) Ada_0[Li_20 + Li_24] = 0.0;
}
}
}
Ada_0[Li_20] = Ld_36;
Ld_36 = High[iHighest(NULL, 0, MODE_HIGH, Ai_8, Li_20)];
if (Ld_36 == Ld_68) Ld_36 = 0.0;
else {
Ld_68 = Ld_36;
if (Ld_36 - High[Li_20] > Ai_12 * Point) Ld_36 = 0.0;
else {
for (Li_24 = 1; Li_24 <= Ai_16; Li_24++) {
Ld_44 = Ada_4[Li_20 + Li_24];
if (Ld_44 != 0.0 && Ld_44 < Ld_36) Ada_4[Li_20 + Li_24] = 0.0;
}
}
}
Ada_4[Li_20] = Ld_36;
}
Ld_68 = -1;
int Li_28 = -1;
Ld_76 = -1;
int Li_32 = -1;
for (Li_20 = Bars - Ai_8; Li_20 >= 0; Li_20--) {
Ld_52 = Ada_0[Li_20];
Ld_60 = Ada_4[Li_20];
if (Ld_52 == 0.0 && Ld_60 == 0.0) continue;
if (Ld_60 != 0.0) {
if (Ld_68 > 0.0) {
if (Ld_68 < Ld_60) Ada_4[Li_28] = 0;
else Ada_4[Li_20] = 0;
}
if (Ld_68 < Ld_60 || Ld_68 < 0.0) {
Ld_68 = Ld_60;
Li_28 = Li_20;
}
Ld_76 = -1;
}
if (Ld_52 != 0.0) {
if (Ld_76 > 0.0) {
if (Ld_76 > Ld_52) Ada_0[Li_32] = 0;
else Ada_0[Li_20] = 0;
}
if (Ld_52 < Ld_76 || Ld_76 < 0.0) {
Ld_76 = Ld_52;
Li_32 = Li_20;
}
Ld_68 = -1;
}
}
for (Li_20 = Bars - 1; Li_20 >= 0; Li_20--) {
if (Li_20 >= Bars - Ai_8) Ada_0[Li_20] = 0.0;
else {
Ld_44 = Ada_4[Li_20];
if (Ld_44 != 0.0) Ada_4[Li_20] = Ld_44;
}
}
return (0);
}
int Str2Massive(string As_0, int &Ai_8, int &Aia_12[]) {
int Li_20;
int str2int_16 = StrToInteger(As_0);
if (str2int_16 > 0) {
Ai_8++;
Li_20 = ArrayResize(Aia_12, Ai_8);
if (Li_20 == 0) return (-1);
Aia_12[Ai_8 - 1] = str2int_16;
return (1);
}
return (0);
}
int IntFromStr(string As_0, int &Ai_8, int Aia_12[]) {
string Ls_28;
if (StringLen(As_0) == 0) return (-1);
string Ls_16 = As_0;
int Li_24 = 0;
Ai_8 = 0;
ArrayResize(Aia_12, Ai_8);
while (StringLen(Ls_16) > 0) {
Li_24 = StringFind(Ls_16, ",");
if (Li_24 > 0) {
Ls_28 = StringSubstr(Ls_16, 0, Li_24);
Ls_16 = StringSubstr(Ls_16, Li_24 + 1, StringLen(Ls_16));
} else {
if (StringLen(Ls_16) > 0) {
Ls_28 = Ls_16;
Ls_16 = "";
}
}
if (Str2Massive(Ls_28, Ai_8, Aia_12) == 0) return (-2);
}
return (1);
}
要跑的 |