Рассмотрим пару примеров формализации индикаторов. Возьмём для начала macd и параболик sar
MACD
Индикатор macd представляет собой гистограмму разности между короткой и длинной скользящей средней. Каждый штрих гистограммы соответствует одному бару (свечке). Нумерация штрихов соответствует нумерации баров. На рисунке показаны сигналы macd на покупку (красные) и на продажу (жёлтые)
За сигнал на покупку примем:
1. macd[0]<0
2. macd[3]>macd[2]
3. macd[1]>macd[2]
4. macd[0]>macd[1]
5. главная линия выше сигнальной (на текущем баре)
По аналогии сигналы на продажу:
5. macd[0]>0
6. macd[3]<macd[2]
7. macd[1]<macd[2]
8. macd[0]<macd[1]
9. главная линия ниже сигнальной (на текущем баре)
Всего нужно 4 переменных (по одной на каждый бар).Так и назовём их, macd0,macd1 и т.д. Все переменные типа double.Для оптимизации нам нужны периоды средних и используемая цена (принимает значения от 0 до 6).
обозначим эту цену переменной price (может принимать значения от 0 до 6)
определим переменные индикатора
периоды быстрой (fast_ema), медленной (slow_ema) скользящей и сигнальной линии (signal)
так же обозначим переменную для определение требуемой линии (mode 0-главная линия, 1-сигнальная)
тогда:
string ind()
{
string s="";
int fast_ema=ind_p1, slow_ema=ind_p2,signal=ind_p3,price=ind_p4,mode;