Тут нужен небольшой советник!
Помогу:
icq 459027664
nazarchic@meta.ua
Да потому что здесь надо как минимум три функции, одна - подсчитывающая прибыль и сравнивающая ее с образцовой, вторая сортирующая ордера по направлению и подбирающая пары для закрытия, и третья закрывающая встречные ордера. если не считать конечно условий по магику и прочим, нюансам
Спасибо. Задумался... т.е. в одну функцию все это нельзя втиснуть, ну тогда три функции последовательно, какая разница? Мне кажется эта ситуация должна быть достаточно распространенной, может кто выложить код?
Я бы для начала для каждой их групп ордеров, селл/бай установил уровень тэйкпрофита на уровень безубытка. А потом бы думал дальше.
Вот код вычисляющий цену уровня безубытка:
double px = 0; double tv = 0;for (i =1; i <= К; i++) //К-число ордеров одного типа
{
px = px + _OrderOpenPrice[i] * _OrderLots [i]*MarketInfo(Symbol(),MODE_TICKVALUE);
tv = tv + _OrderLots [i]*MarketInfo(Symbol(),MODE_TICKVALUE);
}
px = NormalizeDouble(px/tv, Digits ); ценовой уровень безубытка тэйкпрофита всех ордеров
далее идет код модификайии ордеров на ценовой уровень безубытка тэйкпрофита всех ордеров:
for (i = 1; i <= К; i++)
{
if (NormalizeDouble(_OrderTakeProfit[i], Digits ) != NormalizeDouble(px, Digits ))
{
_OrderTakeProfit[i] = px;
_OrderModify(Message);
return(true);
}
}
//----------------------------------
bool _OrderModify(string& Message[])
{
if (IsTradeContextBusy()) { PlaySound("alert.wav"); return(false);} // торговый поток занят, подождем следующего тика
if (OrderModify(_OrderTicket [i]
,_OrderOpenPrice [i]
,_OrderStopLoss [i]
,_OrderTakeProfit[i]
,0
,CLR_NONE))
{
AG_Message(Message,OrderTypeString+"("+DoubleToStr(_OrderLots[i],2)+")"+ _OrderComment[i]+"("+DoubleToStr(_OrderTicket[i],0)+")"+OrderModifyOkMes);
PlaySound("ok.wav");
return(true);
}
LastError = GetLastError();
AG_Message(Message,OrderTypeString+"("+DoubleToStr(_OrderLots[i],2)+")"+ _OrderComment[i]+OrderModifyErrorMes+
"- Error #"+DoubleToStr(LastError,0));
PlaySound("alert.wav");
return(false);
}
Дальше надо посмотреть, возможно, текущая цена где-то рядом с безубытком....
Большое спасибо. Пробую разобраться. Выяснил, что перекрытые ордера и встречные - это разные вещи.
Да интересно кто нибудь сделал такой советник который закрывает не по профиту, а просто если прибыль общих ордеров открытых бай и селл, закрылись бы все по прибыли больше нуля, а однонаправленные ордера что бы не трогал, только когда появляются в рынке бай и селл и он их сразу бы начал разруливать, есть такой советник у кого нибудь, так как торгуют советник онли шорт и онли бай, что бы избавится мне от лока из за сигнала индикатора когда он формируется, и остаются зависшие ордера, а так разрулил бы быстро и я в шоколаде.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые форумчане, подскажите кто может текст функции, которая выполняет следующие действия:
1. Имеется один, два, три ... открытых ордеров Бай. (Остались от предыдущей неудачной торговли).
2. Имеются один, два, три... открытых ордеров Селл (Поменялось направление, и начал я открывать в другую сторону).
3. При обращении к функции, она подсчитывает общую сумму прибыли/убытка и при условии, что прибыль больше или равна 0,
закрывает встречные ордера, оставляя открытой оставшуюся разницу.
Например: имеем 1 Селл объемом 1 лот, 1 Бай объемом 2 лота. В нужный момент срабатывает функция, перекрытые объемы закрываются с нулевой прибылью
и остается 1 Бай объемом 1 лот или 0,5 лота .
Я просмотрел все имеющиеся на этом сайте примеры, но найти не смог, а сам, к сожалению не тяну.