Вот здесь второй пост гляньте, мне пару месяцев назад помог.
Теперь такую конструкцию использую:
double spread = Ask - Bid; double stopLevel = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)*_Point; if(stopLevel == 0 || stopLevel < spread) stopLevel = spread*K;K - это коэфициент-множитель спреда. Опытным путем проверял, что у Альпари проходит без проблем открытие/модификация при К=2, у Робофореска К=1,5, у других пока не проверял.
Не по теме. Если ты не на счёте ECN/STP то беги от кухни!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
решил создать отдельную тему, ибо в "вопросах новичков " вопрос не привлекает внимания
смотрите, попал на проблему смысл которой не очень пойму. смысл кода - при определенном сигнале открыть ордер , у которого стоплос может быть меньше стоплевела. если такое происходит - стоплос увеличиваю до нужного размера. тп при открытии не выставляю, оставляю его виртуальным в программе и открываю ордер. в результате открывается только один из 15 - 20. что нужно сделать чтобы открывался каждый ордер? код :
RefreshRates();
double bid = MarketInfo(symbol,MODE_BID);double ask = MarketInfo(symbol,MODE_ASK);
double stoplevel = NormalizeDouble(stoplevelTemp * tickTemp,digitsTemp)+tickTemp;
if(digitsTemp == 5 )stoplevel+=(700 * tickTemp);
if(spreadOrdDangBr < stoplevel) //если спред меньше стоплевела - перебиваем
spreadOrdDangBr=stoplevel;
double lotDB = calculationLot(spreadOrdDangBr,0.0025); //расчитываем лот - четверть процента свободных денег
slODB=ask-spreadOrdDangBr;
tpODB= ask+ spreadOrdDangBr;
orderTicketODB=OrderSend(symbol,OP_BUY,lotDB,ask,3,slODB,0,("dangBr" +spreadOrdDangBr));
и в результате в терминале