Логика кода весьма напоминает программу, использованную для тестирования скользящих средних. Сначала копируется ряд параметров в местные переменные для простоты ссылок и считывания дальнейшим кодом. Затем проверяется наличие непригодных сочетаний параметров, например для MACD (osctype = 4) длина короткого скользящего среднего должна быть меньше, чем длинного, иначе тест будет пропущен. В следующем крупном блоке osctype выбирает вид рассчитываемого осциллятора (1 — быстрый стохастический, 2 — медленный стохастический, 3 — классический RSI, 4 — классический MACD) . Осциллятор oscline затем рассчитывается в виде ряда данных или вектора, генерируются дополнительные кривые, связанные с ним, например сигнальная линия sigline или медленная версия осциллятора. Верхний (upperband) и нижний (lowerband) пороги либо рассчитываются, либо задаются. Для стохастического осциллятора используются стандартные пороги 80 и 20, для RSI — пороги на уровне 70 и 30. Хотя MACD как таковой не имеет порогов, пороги для него устанавливаются на уровне плюс- минус полтора стандартных отклонения от нуля. Затем начинается процесс перебора данных, день за днем.
В цикле перебора данных представляют интерес два главных блока — первый генерирует сигналы покупки и продажи, а также цены для лимитного и стоп- приказов, используемых выбранной моделью.
Параметр mode/type выбирает модель:
1 — модель перекупленности/перепроданности,
2 — модель сигнальной линии,
3 — модель на расхождении.
При этом используется один из вышеперечисленных осцилляторов, выбранный параметром osctype.
Последний блок производит вход в рынок согласно выбранному значению параметра ordertype:
1 — для входа по цене открытия,
2 — по лимитному приказу,
3 — по стоп- приказу.
Затем симулятор использует стандартную модель выхода для закрытия сделок.
Точные логические основания для входа будут обсуждаться ниже в контексте индивидуальных тестов, что не требует от читателя понимания или обращения к коду.