Milord
Местный знаток
Вот про это я и говорю. Условие if(MA1>MA2) это буквально тело импульса то есть 1. Передний фронт это: переход от 0 к 1. То есть момент пересечения МА.
По простому это будет:
OnTick()
{
static double LastMA1, LastMA2;
double MA1, MA2;
MA1=iMA(...);
MA2=iMA(...);
//Инициализация прошлого значения
if(LastMA1<0.0000001 || LastMA2<0.0000001)
{
LastMA1=MA1;
LastMA2=MA2;
}
//Если был 0, а стала 1 и количество ордеров не достигло максимального.
if(LastMA1<=LastMA2 && MA1>MA2 && OrdersTotal() < MaxOrders)
{
OrderSend(...);
}
LastMA1=MA1;
LastMA2=MA2;
}}
при каждом новом переднем фронте будет открываться ордер. это будет нормально работать в тестере. Для надёжной работы в реальных условиях, нужно добавить ооооочень много "лишнего" кода.
спасибо за ответ! правда не верится что нельзя проще и короче...вапще удивляет, когда программисты с опытом пишут простую логику очень сложно, а кто имеет мало опыта, проще намного...хотя помню как в школе по математике была контрольная, с простыми заданиями, так вот все отличники думали и решали сложно, поэтому еле сдали на 3ки, те же кто учился на 3ки - написали на 4 и 5, просто отличники не смогли переключить мышление на простое...
а как на счет такого кода, случайно нашел по кодам...будет он работать как надо?
PHP:
extern int MaxOrders=5;
int start()
{
if(OrdersTotal() < 1)
{
//---------------------
if(MA1>MA2)
{
OrderSend(....);
}
//---------------------
}
return(0);
}
Последнее редактирование: