Все мы знаем что вертикальный размер окна с котировками изменяется.
Я, конечно, не пробовал эту линию с градусом. Но в моем видении он будет меняться, даже если вы просто будете листать график влево-впарво.
Или я ошибаюсь?
Постоянным будет только значение Пункты к кол-ву баров.
Помоги вставить вот это в какой нибудь шаблон советника
void CheckForOpen(int &oper)
{
oper = -1;
// у меня значения мувингов для каждого бара пишутся в кольцевой буфер, сделал это для возможности дальнейшей обработки методами ЦОС
int idx = GetOffsetIdx(0); // индекс нулевого бара в кольцевом буфере
string dts = TimeToStr(TimeCurrent(), TIME_DATE | TIME_MINUTES | TIME_SECONDS);
// BufMA - это кольцевой буфер с заранее посчитанными скоростями (наклонами) мувингов, DParams - это массив с различными параметрами советника, SPEED0_IDX и все, что большими буквами - просто дефайны, я их ниже приведу
if(BufMA[SPEED0_IDX][idx] > DParams[MA0_OPEN_SPEED_IDX] && BufMA[SPEED1_IDX][idx] > DParams[MA1_OPEN_SPEED_IDX])
{
if(DParams[BUY_ALLOW_IDX] == 1)
oper = OP_BUY;
}
if(BufMA[SPEED0_IDX][idx] < -DParams[MA0_OPEN_SPEED_IDX] && BufMA[SPEED1_IDX][idx] < -DParams[MA1_OPEN_SPEED_IDX])
{
if(DParams[SELL_ALLOW_IDX] == 1)
oper = OP_SELL;
}
//FileWrite(LogFile1, dts, " CheckForOpen oper=", oper, BufMA[SPEED0_IDX][idx], DParams[MA0_OPEN_IDX], BufMA[SPEED1_IDX][idx], DParams[MA1_OPEN_IDX]);
}
Вот дефайны, некоторые даже с комментариями )), может поможет кому-то в разработке. Это необходимый на мой взгляд набор параметров для такого советника. Еще раз повторюсь, это просто индексы в массиве параметров DParams.
// индексы данных в массиве DParams
#define SL_IDX 0 // stoploss
#define TP_IDX 1 // takeprofit
#define MA0_PERIOD_IDX 2 // период МА0
#define MA1_PERIOD_IDX 3 // период МА1
#define MA_SHIFT_IDX 4 // сдвиг в барах между двумя МА для определения направления
#define MA0_OPEN_SPEED_IDX 5 // скорость для открытия по МА0
#define MA1_OPEN_SPEED_IDX 6 // скорость для открытия по МА1
#define MA0_OPEN_ACCEL_IDX 7 // ускорение для открытия по МА0
#define MA1_OPEN_ACCEL_IDX 8 // ускорение для открытия по МА1
#define MA0_CLOSE_SPEED_IDX 9 // скорость для закрытия по МА0
#define MA1_CLOSE_SPEED_IDX 10 // скорость для закрытия по МА1
#define MA0_CLOSE_ACCEL_IDX 11 // ускорение для закрытия по МА0
#define MA1_CLOSE_ACCEL_IDX 12 // ускорение для закрытия по МА1
#define MAGIC_IDX 13 // магик
#define TS_POINTS_IDX 14 // трейлинг-стоп в пунктах
#define MAX_ORDERS3_IDX 15 // максимальное количество открытых ордеров
#define START_DELAY_IDX 16 // задержка торговли после старта робоматки, если это требуется, в сек.
#define LOT_IDX 17
#define LOT_STEP_IDX 18
#define SLIPPAGE_IDX 19
#define BUY_ALLOW_IDX 20 // разрешена покупка
#define SELL_ALLOW_IDX 21 // разрешена продажа
#define CLOSE_PROFIT_IDX 22 // минимальный профит для закрытия ордера
#define START_TIME1_IDX 23
#define STOP_TIME1_IDX 24
#define START_TIME2_IDX 25
#define STOP_TIME2_IDX 26
#define START_HOUR_MIN_IDX 27
#define STOP_HOUR_MIN_IDX 28
#define DPARAMS_COUNT 29 // размер массива DParams
double DParams[DPARAMS_COUNT]; // массив параметров