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); }