703
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1 бар
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 бар
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 бар
//--------------------------------------------------------------------
// Анализ ситуации
if( M_1 < S_1 && M_0 >= S_0 ) // Зеленая пересекает красную снизу
Alert("Пересечение снизу вверх. ПОКУПКА."); // Сообщение
if( M_1 > S_1 && M_0 <= S_0 ) // Зеленая пересекает красную свеху
Alert("Пересечение сверху вниз. ПРОДАЖА."); // Сообщение
if( M_1 > S_1 && M_0 > S_0 ) // Зелёная выше красной
Alert("Продолжаем держать покупку."); // Сообщение
if( M_1 < S_1 && M_0 < S_0 ) // Зелёная ниже красной
Alert("Продолжаем держать продажу."); // Сообщение
//--------------------------------------------------------------------
return; // Выход из start()
}
//--------------------------------------------------------------------
Для получения значения линии %K (сплошная зелёная) на нулевом баре используется
следующая строка вычислений:
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0 бар
Здесь параметр MODE_MAIN указывает линию, значение которой запрашивается, а
последний параметр 0 - индекс бара, для которого необходимо вычислить значение
указанной линии. В последующих трёх строках программы аналогично вычисляются
другие значения - для линии %D (красная пунктирная, параметр MODE_SIGNAL) для
нулевого и первого баров.
В следующем блоке выполняется анализ соотношения полученных значений, и эксперт
сообщает пользователю о текущем состоянии на каждом тике. Например, в строках:
if( M_1 < S_1 && M_0 >= S_0 ) // Зеленая пересекает красную снизу
Alert("Пересечение снизу вверх. ПОКУПКА."); // Сообщение
вычисляется факт пересечения красной линии зелёной сигнальной линией сверху вниз.
Если на предыдущем баре зелёная линия была ниже красной (т.е. истинным является
выражение M_1 < S_1), а на текущем баре зелёная линия поднялась выше красной или их
значения совпадают (т.е. истинным является выражение M_0 >= S_0), то это значит, что в
период с момента образования предыдущего бара по настоящий момент зелёная линия
пересекла красную снизу вверх. Таким образом, вычисленное условие в операторе if