в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)
Насчёт один раз закрыть - на предыдущей странице написал
в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)
В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))
Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....
В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))
Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....
externint TP = 200; // кол-во пунктов, после которых должно произойти частичное закрытиеexternint Magic = 77;
void CloseHalfOrder(){ // функция вызывается в самом начале цикла Start
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderProfit() >= TP*Point)
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
}
Подскажите плиз такую вещь. На выходных Альпари увеличивает спред до размера, при котором советник всегда сливает. ОК. В тестере можно выставлять спред вручную. Но в каких единицах? 100, 50, 30, 10 - это что? Проценты, пункты, что? Благодарю заранее.
в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)
Библиотекой оформить как вариант.
Благодарю за идею.
в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)
В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))
Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....
В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))
Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....
не работает. почему?
Что это???
Как-то такне работает. почему?
Вот по этому:
Вам нужны пункты? А вы деньги смотрите.Что это???
Как-то такAsk для продаж
Да верно, спред учитываем.
Вот по этому:
Вам нужны пункты? А вы деньги смотрите.Что это???
Как-то так