Valeriy Yastremskiy #: Сперва разница равно 1000 перед циклом. В цикле если цена открытия минус текущая цена по модулю меньше разницы то разница равна полученному значению и тикет запоминаем в переменную.
Во во, тоже примерно так думал) Но, что то пошло не так. Можете подсказать пример, как в онлайн режиме отслеживать цену открытия в самого близкого ордера к текущей цене. Или может просто сравнивать их, и искать с самой низкой ценой)
Во во, тоже примерно так думал) Но, что то пошло не так. Можете подсказать пример, как в онлайн режиме отслеживать цену открытия в самого близкого ордера к текущей цене. Или может просто сравнивать их, и искать с самой низкой ценой)
Посмотрите это:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 05.06.2008 |//| Описание : Возвращает тикет ближайшей к рынку позиции по цене открытия. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int TicketNearPos(string sy="", int op=-1, int mn=-1) {
double mi, p;
int i, k=OrdersTotal(), pp=0, ti=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) mi=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
pp=MathAbs(OrderOpenPrice()-mi)/p;
ti=OrderTicket();
}
}
}
}
}
}
return(ti);
}
Вот два участка кода из которых будет понятна логика закрытия мин и макс ордеров. На словах это звучит так: " Если просадка от сетки ордеров превысила определенный уровень то закрываем мин и макс ордера в сетке с профитом не меньше заданного уровня" .
Далее "Если просадка уменьшилась ниже заданного уровня возвращаемся к принципу усреднения ордеров все ордера с профитом на все ордера с убытком"
Далее " Если просадка не уменьшилась ниже заданного уровня опять закрываем следующие мин и макс ордера при достижении определенного профита"
Сейчас советник понимает так что если просадка превышена профит мин и макс ордеров набран - советник закрывает первую пару как надо а вот все остальные по этой же цене не обращая внимания на калькуляцию профита.
Насколько я понимаю нужно ковыряется в функции OrderClose() чтобы она вовремя остановилась. Заранее спасибо за помощь!!!!
Добрый день! Сразу сори, за примитивный вопрос, но где найти контакты арендатора советника? Или как связаться с человеком, который купил/арендовал советник?
Oleksandr Nozemtsev #: Добрый день! Сразу сори, за примитивный вопрос, но где найти контакты арендатора советника? Или как связаться с человеком, который купил/арендовал советник?
Никак. Вы можете вести диалог во вкладке Обсуждение продукта. Вы можете выкладывать новости в соответствующей вкладке.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Сперва разница равно 1000 перед циклом. В цикле если цена открытия минус текущая цена по модулю меньше разницы то разница равна полученному значению и тикет запоминаем в переменную.
Во во, тоже примерно так думал) Но, что то пошло не так. Можете подсказать пример, как в онлайн режиме отслеживать цену открытия в самого близкого ордера к текущей цене. Или может просто сравнивать их, и искать с самой низкой ценой)
Во во, тоже примерно так думал) Но, что то пошло не так. Можете подсказать пример, как в онлайн режиме отслеживать цену открытия в самого близкого ордера к текущей цене. Или может просто сравнивать их, и искать с самой низкой ценой)
Посмотрите это:
и это исправь
Умножать не надо MODE_SPREAD - Спрэд в пунктах
можешь проверить
и сделай так
Макар доброго времени суток!!!
Вот два участка кода из которых будет понятна логика закрытия мин и макс ордеров. На словах это звучит так: " Если просадка от сетки ордеров превысила определенный уровень то закрываем мин и макс ордера в сетке с профитом не меньше заданного уровня" .
Далее "Если просадка уменьшилась ниже заданного уровня возвращаемся к принципу усреднения ордеров все ордера с профитом на все ордера с убытком"
Далее " Если просадка не уменьшилась ниже заданного уровня опять закрываем следующие мин и макс ордера при достижении определенного профита"
Сейчас советник понимает так что если просадка превышена профит мин и макс ордеров набран - советник закрывает первую пару как надо а вот все остальные по этой же цене не обращая внимания на калькуляцию профита.
Насколько я понимаю нужно ковыряется в функции OrderClose() чтобы она вовремя остановилась. Заранее спасибо за помощь!!!!
Добрый день! Сразу сори, за примитивный вопрос, но где найти контакты арендатора советника? Или как связаться с человеком, который купил/арендовал советник?
Никак. Вы можете вести диалог во вкладке Обсуждение продукта. Вы можете выкладывать новости в соответствующей вкладке.
Никак. Вы можете вести диалог во вкладке Обсуждение продукта. Вы можете выкладывать новости в соответствующей вкладке.
Спасибо!
Добрый день.
Макар доброго времени суток!!!
Я тебе другую функцию давал...не надо ничего добавлять
или можно это перенести...
Я тебе другую функцию давал...не надо ничего добавлять
или можно это перенести...
Ничего не изменилось