Вопрос к спецам. перекопал кодовую базу меты, mqlabs, форум forexsystem, так и не нашёл что хотел. торг веду по ценовым уровням, они же сопротивление/поддержка и по ЕМА. хотел сделать для себя типа советника, чтоб работал на подобие отложенных ордеров, но открываться будет при фиксирование значения ема над или под уровнем. подскажите реализацию данной задумки, в коде меты ещё зелённый, но понял так что надо разруливать это с помощью двух последних значений ема для того чтоб советник понял в какую сторону открываться. профит и лось ставить на след. уровнях. хотел уровни как внешние сделать чтоб на каждую неделю вписывать
и ещё, если не в лом, посмотрите код индюка...
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 DarkOliveGreen
extern int Period_Q = 24;
extern int Period_R = 12;
extern int Period_S = 6;
extern int Signal = 3;
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
double g_ibuf_120[];
int init() {
IndicatorBuffers(8);
SetIndexStyle(0, DRAW_HISTOGRAM);
SetIndexBuffer(0, g_ibuf_92);
SetIndexStyle(1, DRAW_HISTOGRAM);
SetIndexBuffer(1, g_ibuf_96);
SetIndexLabel(0, "Polyhedron");
SetIndexLabel(1, "Polyhedron");
SetIndexBuffer(2, g_ibuf_100);
SetIndexBuffer(3, g_ibuf_104);
SetIndexBuffer(4, g_ibuf_108);
SetIndexBuffer(5, g_ibuf_112);
SetIndexBuffer(6, g_ibuf_116);
SetIndexBuffer(7, g_ibuf_120);
IndicatorShortName("Polyhedron 2006 IDEA-FOREX");
return (0);
}
int deinit() {
return (0);
}
int start() {
int li_0 = IndicatorCounted();
if (li_0 < 0) return (-1);
if (li_0 > 0) li_0--;
int li_4 = Bars + li_0;
if (li_0 > 0) li_0--;
int li_12 = MathMin(li_4 + Period_Q, Bars);
for (int li_8 = li_12; li_8 >= 0; li_8--) {
g_ibuf_120[li_8] = High[iHighest(NULL, 0, MODE_HIGH, Period_Q, li_8)] - Low[iLowest(NULL, 0, MODE_LOW, Period_Q, li_8)];
g_ibuf_100[li_8] = Close[li_8] - (High[iHighest(NULL, 0, MODE_HIGH, Period_Q, li_8)] + Low[iLowest(NULL, 0, MODE_LOW, Period_Q, li_8)]) / 2.0;
}
li_12 = MathMin(li_4 + Period_Q + Period_R, Bars);
for (li_8 = li_12; li_8 >= 0; li_8--) {
g_ibuf_104[li_8] = iMAOnArray(g_ibuf_100, 0, Period_R, 0, MODE_EMA, li_8);
g_ibuf_112[li_8] = iMAOnArray(g_ibuf_120, 0, Period_R, 0, MODE_EMA, li_8);
}
li_12 = MathMin(li_4 + Period_Q + Period_R + Period_S, Bars);
for (li_8 = li_12; li_8 >= 0; li_8--) {
g_ibuf_108[li_8] = iMAOnArray(g_ibuf_104, 0, Period_S, 0, MODE_EMA, li_8);
g_ibuf_116[li_8] = iMAOnArray(g_ibuf_112, 0, Period_S, 0, MODE_EMA, li_8);
}
li_12 = MathMin(li_4 + Period_Q + Period_R + Period_S + Signal, Bars);
for (li_8 = li_12; li_8 >= 0; li_8--) {
if (g_ibuf_116[li_8] == 0.0) g_ibuf_92[li_8] = 0;
else g_ibuf_92[li_8] = 2.0 * (100.0 * g_ibuf_108[li_8]) / g_ibuf_116[li_8];
}
li_12 = MathMin(li_4 + Period_Q + Period_R + Period_S, Bars);
for (li_8 = li_12; li_8 >= 0; li_8--) g_ibuf_96[li_8] = iMAOnArray(g_ibuf_92, 0, Signal, 0, MODE_EMA, li_8);
return (0);
}
не нарушена ли логика или ошибки где, это полигедрон, я его декомпилировал через прогу. вообще круто будет если кто-нибудь пояснение припишет, пока плохо понимаю, а хотелось бы в советнике использовать