FAQ: Открыть один ордер, проверить на открытие, если открылся - открывать второй с проверкой...
Спасибо, разобрался, надо было только немного серым веществом пошевелить))) я 2 функции написал которые по разному открывают в зависимости от ситуации в конце каждой прилеплю проверку (думаю в виде отдельной функции) каких ордеров и сколько открыто и каких не будет хватать те и будут повторно открываться.
leonid553, Приветствую! Тему Вашу по спредам, применительно к валютам успешно реализовал, хочу сказать спасибо ёщё раз. (сорри за офтоп)
Встала проблема. Не могу найти функцию, которая возвращает размер "сувокупной" позиции заданного инструмента! Перелопатила весь поиск форума, в т.ч. и ветку И.КИМА, https://www.mql5.com/ru/forum/131859 - там есть - разные функции по лотам, кроме нужной мне!
Например, если открыто несколько сделок "бай" по евро, подскажите, как определить их суммарный размер?
GetLot(EURUSD, OP_BUY, magic)
double GetLot(string sy="", int op=-1, int mn=-1) {// возвращает сувокупный размер поз.
double l=-1;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
I = ------ ???????????
------ ????????????
}
}
}
}
}
}
return(l);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает сумму лотов открытых позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
double l=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
l+=OrderLots();
}
}
}
}
}
}
return(l);
}
Мне надо вот что. Если есть открытые несколько позиций селл и бай, мне нужно убрать встречные (компенсирующие) позиции, так - чтобы остались только в одном направлении.
Я и хотела - вычислить сначала сумму всех "баев", потом сумму всеХ "селов". После чего, найти разность (т.е. чей суммарный размер больше). И эту "разность" оставить в рынке, - а все встречные удалить!
Значит, эта функция GetAmountLotFromOpenPos - здесь не подойдет? Например, если я задам
Мне надо вот что. Если есть открытые несколько позиций селл и бай, мне нужно убрать встречные (компенсирующие) позиции, так - чтобы остались только в одном направлении.
Я и хотела - вычислить сначала сумму всех "баев", потом сумму всеХ "селов". После чего, найти разность (т.е. чей суммарный размер больше). И эту "разность" оставить в рынке, - а все встречные удалить!
Значит, эта функция GetAmountLotFromOpenPos - здесь не подойдет? Например, если я задам
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
-разве она мне не вернёт сумму лотов всех селл позиций?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Открыть один ордер, проверить на открытие, если открылся - открывать второй с проверкой...
Спасибо, разобрался, надо было только немного серым веществом пошевелить))) я 2 функции написал которые по разному открывают в зависимости от ситуации в конце каждой прилеплю проверку (думаю в виде отдельной функции) каких ордеров и сколько открыто и каких не будет хватать те и будут повторно открываться.
leonid553 , Приветствую! Тему Вашу по спредам, применительно к валютам успешно реализовал, хочу сказать спасибо ёщё раз. (сорри за офтоп)
Доброе утро.
Встала проблема. Не могу найти функцию, которая возвращает размер "сувокупной" позиции заданного инструмента! Перелопатила весь поиск форума, в т.ч. и ветку И.КИМА, https://www.mql5.com/ru/forum/131859 - там есть - разные функции по лотам, кроме нужной мне!
Например, если открыто несколько сделок "бай" по евро, подскажите, как определить их суммарный размер?
GetLot(EURUSD, OP_BUY, magic)
Вопрос снимается! Обнаружилась функция:
Как не то ? А что же тогда эта ф-я возвращает?
"Возвращает сумму лотов открытых позиций " - написано ведь?
https://www.mql5.com/ru/code/9394
"Возвращает сумму лотов открытых позиций " - написано ведь?
Мне не нужно учитывать лок. Точнее вот как:
Мне надо вот что. Если есть открытые несколько позиций селл и бай, мне нужно убрать встречные (компенсирующие) позиции, так - чтобы остались только в одном направлении.
Я и хотела - вычислить сначала сумму всех "баев", потом сумму всеХ "селов". После чего, найти разность (т.е. чей суммарный размер больше). И эту "разность" оставить в рынке, - а все встречные удалить!
Значит, эта функция GetAmountLotFromOpenPos - здесь не подойдет? Например, если я задам
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
-разве она мне не вернёт сумму лотов всех селл позиций?
-разве она мне не вернёт сумму лотов всех селл позиций?
Мне не нужно учитывать лок. Точнее вот как:
Мне надо вот что. Если есть открытые несколько позиций селл и бай, мне нужно убрать встречные (компенсирующие) позиции, так - чтобы остались только в одном направлении.
Я и хотела - вычислить сначала сумму всех "баев", потом сумму всеХ "селов". После чего, найти разность (т.е. чей суммарный размер больше). И эту "разность" оставить в рынке, - а все встречные удалить!
Значит, эта функция GetAmountLotFromOpenPos - здесь не подойдет? Например, если я задам
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
-разве она мне не вернёт сумму лотов всех селл позиций?
В общем случае:
SummLot = GetAmountLotFromOpenPos("0", OP_BUY, MagicNumber)- GetAmountLotFromOpenPos("0", OP_SELL, MagicNumber);