Сасибо за создание темы. Меня интересует такой момент, что магического числа нету в с++, но существует свой уникальный номер каждого ордера. Так же отсутсвует функция дробления лота - это когда нужно закрыть только часть лота. Я создал логику, но не заню будет ли она работать. Суть логики такова: учитывая, что дробление ордера невозможно, нужно открыть моножество ордеров (например десять) в ту же сторону, что открыт первый в ручную, и чтобы первому ордеру стразу был выставлен стоп, так же нужно чтобы для всех ордеров работал уровень безубытка. Приблизительно это должно выглядить так : данные : w // колличество ордеров у // уровень бузубытка z // уровень стопа о// уровень профита q// шаг профита d// просто даные с// просто даные старт : если открыт ордер то { если ордер бай то стоп такой с=1; иначе стоп другой с=2; d=1; x=w; если х<2 то {пропуск} иначе {х--; если с=1 то покупка (bid,-z,+o+q,) ; иначе продажа (ask,+z,-o-q,) ;d=d+1; q=q*d; возврат в начало строки;} } тикет: {безубыток} // правда я не знаю как должен выглядеть безубыток для такого колличества позиций так думаю что при такой обычной процедуре это не возможно foreach (var position in Account.Positions)
{
if(position.SymbolCode == Symbol.Code)
{
if(position.TradeType == TradeType.Buy)
{
if (Bid-position.EntryPrice>=Tral_Stop*Point)
if (Bid-Tral_Stop*Point>=position.StopLoss)
Trade.ModifyPosition(position, Bid-Tral_Stop*Point, position.TakeProfit);
}
if(position.TradeType == TradeType.Sell)
{
if (position.EntryPrice-Ask>=Tral_Stop*Point)
if (Ask+Tral_Stop*Point<=position.StopLoss)
Trade.ModifyPosition(position, Ask+Tral_Stop*Point, position.TakeProfit);
}
}
} стоп: {если открыт ордер то возврат в начало строки иначе возврат на строчку старта}