Здравствуйте!
Вопрос: Как можно получить значение типа последнего закрытого ордера в коде?
Изменено 24 января, 2018 пользователем Pavel888
От garanyan1985, 24 июля, 2011 в Уголок Программиста
Изменено 24 января, 2018 пользователем Pavel888
int t,i,hstTotal=OrdersHistoryTotal();
for(i=0;iif (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
t = OrderType();
if ( (t == OP_BUY || t == OP_SELL) && OrderCloseTime( ) != 0 ) {
break; // Найден последний закрытый ордер
}
}
}
Здравствуйте!
А как можно ограничить количество открываемых ордеров за период?
Количество знаков после запятой в лоте (мини/микро лоты):
Цитатаint LotDecimals = NormalizeDouble(MathAbs(MathLog(MarketInfo(Symbol(),MODE_LOTSTEP))/MathLog(10)),0);
Здравствуйте!
Подскажите пожалуйста, как сделать так чтобы ордер модифицировался каждый бар, а не тик?
if(barsCount != Bars)
barsCount = Bars;
else
return(0);
с точки зрения производительности лучше вот так искать последний закрытый ордер:
int i;
for(i=OrdersHistoryTotal()-1; i >= 0;i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderCloseTime( ) != 0 ) {
break; // Найден последний закрытый ордер
}
}
}
ибо если в истории 1кк ордеров, то какой смысл просматривать историю с самого начала.
сравнивать тип ордера нет смысла также, потому что "Open and pending orders close time is equal to 0."
p.s. не могу вставить code тэг, получаю ошибку "Sorry, you are not allowed to post external links. "
Как ставить отложки выше и ниже хаев и лоев предыдущей свечи ?
Как ставить отложки выше и ниже хаев и лоев предыдущей свечи ?
Здравствуйте. Напишите, пожалуйста, индикатор: если терминальное время равно заданному, то появляется вертикальная линия. Как разделитель периодов.
Как привязать советнику фильтр по спреду, и функцию удаления отложек при превышении спред лимита? :) спс
Подскажите как написать чтоб при рабатывания лося у следующего ордера который бы не имел ТП увеличивался лот на размер коефицента?
Вопрос у меня вот какой к уважаемым программистам. Делаю советник, планирую использовать его на разных парах. Советник открывает сделки на открытии свечи. Проблема заключается в том что если открывается ордер по какой-нибудь паре, то открытие ордеров на других парах должно быть запрещено. Меня пугает вот какая возможность, бар открылся на одной паре, условия сошлись советник отправил ордер, он пока не появился в терминале, в это время открылся новый бар на другой паре условия тоже сходятся, и советник пуляет ордер по другой паре, в итоге имеем 2 ордера, хотя по плану должен быть один. Возможна такая ситуация? Если да, то как ее избежать - сделать паузы разной длительности для каждой пары после открытия свечи?
Изменено 24 января, 2018 пользователем Pavel888
Конечно можно использовать паузу, а еще присмотритесь к соседней теме, вот пост - /ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034/?do=findComment&comment=241960.
На днях написал с помощью форумчан функцию, считающую количество пар в работе (с открытыми ордерами). С помощью нее можно ограничивать открытие ордеров на других парах.
Конечно можно использовать паузу, а еще присмотритесь к соседней теме, вот пост - /ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034/?do=findComment&comment=241960.
На днях написал с помощью форумчан функцию, считающую количество пар в работе (с открытыми ордерами). С помощью нее можно ограничивать открытие ордеров на других парах.
Так это тоже не сложно. Нужна обычная функция, считающая "наши" открытые ордера в рынке. Если они уже есть, то запрет. Кстати ту функцию тоже можно подобным образом использовать.
Если они уже есть, то запрет.
Только задержка по времени для каждой копии бота.
Можно задавать задержку, можно вычислять по какому-то алгоритму...
Плюс контроль наличия хотя бы одного ордера в рынке.
Иначе на открытии новой свечи несколько копий легко могут открыть ордера одновременно, не зная о намерениях друг друга.
Просто интересно, что за ТС такая, подразумевающая частое совпадение сигналов с одновременным открытием на разных парах...
Просто интересно, что за ТС такая, подразумевающая частое совпадение сигналов с одновременным открытием на разных парах...
Вопрос у меня вот какой к уважаемым программистам. Делаю советник, планирую использовать его на разных парах. Советник открывает сделки на открытии свечи. Проблема заключается в том что если открывается ордер по какой-нибудь паре, то открытие ордеров на других парах должно быть запрещено. Меня пугает вот какая возможность, бар открылся на одной паре, условия сошлись советник отправил ордер, он пока не появился в терминале, в это время открылся новый бар на другой паре условия тоже сходятся, и советник пуляет ордер по другой паре, в итоге имеем 2 ордера, хотя по плану должен быть один. Возможна такая ситуация? Если да, то как ее избежать - сделать паузы разной длительности для каждой пары после открытия свечи?
Ф-ция ордерсенд должна вернуть тикет или ошибку. Сова зависает в ожидании исполнения функции, а МТ4 - однопоточный (пока), т.е. пока ордер не встанет и 1 сова не отработает код онТик, 2 сова не запустится.
Но для страховки можно и семафор на глобальных переменных как подсказал Qj
Дури не хватит одновременно послать ордера с разных советников. Они всяко будут работать по очереди.
Не смотря в безоговорочную веру в nixxer и 0ll, я бы задержки влепил...
и пусть меня называют параноиком. :)
Не смотря в безоговорочную веру в nixxer и 0ll, я бы задержки влепил...
и пусть меня называют параноиком. :)
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем