Hi
i'm actually trying to write my first indicator (it's a combination of a channel with ichimoku). The code is in most parts a combination of existing indicators but i'm failing miserably with the alert function.
Could someone please have a look at this and integrate a simple pop-up alert?
Thank you
i'm actually trying to write my first indicator (it's a combination of a channel with ichimoku). The code is in most parts a combination of existing indicators but i'm failing miserably with the alert function.
Could someone please have a look at this and integrate a simple pop-up alert?
Thank you
Inserted Code
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Aqua
#property indicator_color3 GreenYellow
#property indicator_color4 GreenYellow
#property indicator_color5 Red
#property indicator_color6 Aqua
#property indicator_color7 Red
#property indicator_color8 Red
extern int TenkanSen = 9;
extern int KijunSen = 26;
extern int SenkoSpan = 52;
extern color BullishColor = RoyalBlue;
extern color BearishColor = Tomato;
extern bool KumoBreakout = TRUE;
extern int Size = 1;
extern int ArrowDistanceInPips = 10;
extern int period = 55;
extern int xEnvelops = 5;
extern int yEnvelops = 20;
bool gi_unused_116 = FALSE;
bool gi_unused_120 = FALSE;
double g_ibuf_76[];
double g_ibuf_80[];
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
int gi_348 = 0;
double filtersignal;
double filtersignal1;
int alertsignal;
int init() {
SetIndexStyle(0, DRAW_NONE);
SetIndexBuffer(0, g_ibuf_76);
SetIndexStyle(1, DRAW_NONE);
SetIndexBuffer(1, g_ibuf_80);
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, g_ibuf_84);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(3, g_ibuf_88);
SetIndexStyle(4, DRAW_NONE);
SetIndexBuffer(4, g_ibuf_92);
SetIndexStyle(5, DRAW_NONE);
SetIndexBuffer(5, g_ibuf_96);
SetIndexStyle(6, DRAW_LINE);
SetIndexBuffer(6, g_ibuf_100);
SetIndexStyle(7, DRAW_LINE);
SetIndexBuffer(7, g_ibuf_104);
SetIndexLabel(6, "Top 138.2");
SetIndexLabel(2, "Top 61.8");
SetIndexLabel(3, "Bottom 61.8");
SetIndexLabel(7, "Bottom 138.2");
return (0);
}
int deinit() {
ObjectsDeleteAll();
return (0);
}
int start() {
double l_ichimoku_48;
double l_ichimoku_56;
double l_ichimoku_64;
double l_ichimoku_72;
double l_ichimoku_80;
double l_ichimoku_88;
ObjectsDeleteAll(0, OBJ_ARROW);
double ld_112 = ArrowDistanceInPips / 10000;
int li_unused_120 = 1;
int li_0 = IndicatorCounted();
if (li_0 > 0) li_0--;
int li_4 = Bars - li_0;
for (int li_8 = li_4; li_8 >= 0; li_8--) {
g_ibuf_76[li_8] = Close[li_8] + MathSin(1.94052 * (High[li_8] - Low[li_8]));
g_ibuf_80[li_8] = Close[li_8] - MathSin(1.94052 * (High[li_8] - Low[li_8]));
g_ibuf_92[li_8] = Close[li_8] + MathSin(4.33948 * (High[li_8] - Low[li_8]));
g_ibuf_96[li_8] = Close[li_8] - MathSin(4.33948 * (High[li_8] - Low[li_8]));
}
for (li_8 = li_4; li_8 >= 0; li_8--) {
g_ibuf_84[li_8] = iMAOnArray(g_ibuf_76, 0, period, 0, MODE_LWMA, li_8);
g_ibuf_88[li_8] = iMAOnArray(g_ibuf_80, 0, period, 0, MODE_LWMA, li_8);
g_ibuf_100[li_8] = iMAOnArray(g_ibuf_92, 0, period, 0, MODE_LWMA, li_8);
g_ibuf_104[li_8] = iMAOnArray(g_ibuf_96, 0, period, 0, MODE_LWMA, li_8);
}
for (int li_124 = 1; li_124 <= Bars; li_124++) {
l_ichimoku_48 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANA, li_124);
l_ichimoku_56 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANB, li_124);
l_ichimoku_64 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANA, li_124 + 1);
l_ichimoku_72 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANB, li_124 + 1);
l_ichimoku_80 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANA, li_124 + 2);
l_ichimoku_88 = iIchimoku(NULL, 0, TenkanSen, KijunSen, SenkoSpan, MODE_SENKOUSPANB, li_124 + 2);
if (KumoBreakout == TRUE) {
if (iClose(NULL, 0, li_124 + 2) < l_ichimoku_80 || iClose(NULL, 0, li_124 + 2) < l_ichimoku_88) {
if (iClose(NULL, 0, li_124 + 1) < l_ichimoku_64 || iClose(NULL, 0, li_124 + 1) < l_ichimoku_72) {
if (iClose(NULL, 0, li_124) > l_ichimoku_48 && iClose(NULL, 0, li_124) > l_ichimoku_56) {
filtersignal = iClose(NULL, 0, li_124) + 0.00;
g_ibuf_84[li_124] = iMAOnArray(g_ibuf_76, 0, period, 0, MODE_LWMA, li_124);
if (g_ibuf_84[li_124] > filtersignal) {
ObjectCreate("BreakoutBullish" + li_124, OBJ_ARROW, 0, Time[li_124], Low[li_124] - ld_112);
ObjectSet("BreakoutBullish" + li_124, OBJPROP_ARROWCODE, 233);
ObjectSet("BreakoutBullish" + li_124, OBJPROP_WIDTH, Size);
ObjectSet("BreakoutBullish" + li_124, OBJPROP_COLOR, BullishColor);
}
}
}
}
if (iClose(NULL, 0, li_124 + 2) > l_ichimoku_80 || iClose(NULL, 0, li_124 + 2) > l_ichimoku_88) {
if (iClose(NULL, 0, li_124 + 1) > l_ichimoku_64 || iClose(NULL, 0, li_124 + 1) > l_ichimoku_72) {
if (iClose(NULL, 0, li_124) < l_ichimoku_48 && iClose(NULL, 0, li_124) < l_ichimoku_56) {
filtersignal1 = iClose(NULL, 0, li_124) - 0.00;
g_ibuf_88[li_124] = iMAOnArray(g_ibuf_80, 0, period, 0, MODE_LWMA, li_124);
if (g_ibuf_88[li_124] < filtersignal1) {
ObjectCreate("BreakoutBearish" + li_124, OBJ_ARROW, 0, Time[li_124], High[li_124] + ld_112);
ObjectSet("BreakoutBearish" + li_124, OBJPROP_ARROWCODE, 234);
ObjectSet("BreakoutBearish" + li_124, OBJPROP_WIDTH, Size);
ObjectSet("BreakoutBearish" + li_124, OBJPROP_COLOR, BearishColor);
}
}
}
}
}
}
return (0);
}