подскажите, как описывается условие если цена изменилась на n пунктов за t секунд
Прописываем переменные в глобальных сова:
exturn double Volume; //Уровень скачка цены в любом направлении в пунктах
exturn int StepTime; //Шаг в секундах, в течении которого будет производится отскок от последнего уровня цены
datetime Time0=0, Time1=0; // Промежуточные переменные для функции
double StartLevel;
int TimeSpread() //Начало функции
{
if (Time0==0) {Time0=TimeCurrent(); return (0);}
if (Time0==TimeCurrent()) {StartLevel= Bid; Time1==TimeCurrent(); return (0);}
if (TimeCurrent()>Time0+StepTime) {Time0=TimeCurrent(); StartLevel= Bid; return (0);}
if (Time0!=0 && Time1!=0 && Time1-Time0<StepTime && Bid>StartLevel+Volume) return (1); //Возвращает 1, если за указанный StepTime цена выросла на Volume
if (Time0!=0 && Time1!=0 && Time1-Time0<StepTime && Bid<StartLevel
-Volume) return (2); //Возвращает 2, если за указанный StepTime цена упала на Volume
return(0);
}
Заранее извиняюсь, если где-то опечатался - в терминале не проверял и весь код печатал сразу в ответе здесь на форуме.
Ну и соответственно: если запрос на функцию возвращает 1, то это типа сигнал на бай, 2 - на селл:
if (TimeSpread()==1)... -команды на на бай или разрешение открытия на бай - короче по стратегии дальше, а
if (TimeSpread()==2)... -соответственно противоположный сигнал.
Надеюсь, что поможет.)))