На открытии нового бара
if(t!=Time[0])
{
OpenOrd();
Mode();
t=Time[0];
}
цена находится выше средней линии индикатора, тогда выставляется стоповый ордер на покупку на верхней полосе индикатора
if(Bid>mid && Bid<up)
{
if(CountOrders(4)<1) PutOrder(4,up);
DelOrder(5);
}
Условие для открытия отложного стопового ордера на продажу:
На открытии нового бара цена находится ниже средней линии индикатора, тогда выставляется стоповый ордер на продажу на нижней полосе индикатора. Этот ордер движется с полосой, на каждом открытии свечи ордер должен перемешаться с нижней полосой индикатора.
if(Bid>dn && Bid<mid)
{
if(CountOrders(5)<1) PutOrder(5,dn);
DelOrder(4);
}
Если был выставлен ордер, но появился обратный сигнал, значит прошлый ордер удаляется и ставится новый ордер в нужном направление.
//--- sell conditions
if(Bid>dn && Bid<mid)
{
if(CountOrders(5)<1) PutOrder(5,dn);
DelOrder(4);
}
//--- buy conditions
if(Bid>mid && Bid<up)
{
if(CountOrders(4)<1) PutOrder(4,up);
DelOrder(5);
}
Закрытие всех ордеров по общему профиту.
if(AllProfit()>Profit && Profit>0) CloseAll();
Начальный лот рассчитывается как процент Risk от свободной маржи.
double Lot()
{
double lot=AccountFreeMargin()*Risk/100000;//10000*10/10000=1
if(CountTrades()>0) lot=NormalizeDouble(lot*MathPow(KLot,CountTrades()),2);
if(lot>MaxLot)lot=Lots;
return(lot);
}
Помогите пожалуйста. На графике появляется встречный сигнал, а советник сделку не открывает. То есть не получится чтобы открывались сделки в обратном направлении если открыты сделки так?
1-я строчка
Если нет позиций данного направления и до числа 1 — лот 1
2-я:
Если число поз данного направления больше Count1 — лот 2
и т.д.
Основные моменты ТЗ реализованы. Далее к платному, здесь делаю только то что можно быстро сделать. И помните чем проще ТЗ тем больше у вас шансов получить советник в готовом виде.
AM2