Ребят, нужен совет по исполнению установки лимитников на фортс, есть код, при появлении позиции, робот выше и ниже цены ставит лимитные ордера с отступом
Интересует собственно правильно ли у меня нормализована цена самого отступа для лимитников, стоит ли использовать встроенную библиотеку или же лучше нормализовать цену отдельно.
Спасибо.Проверка на максимальную/минимальную цену здесь
//+------------------------------------------------------------------+ //| Expert Check price range function | //+------------------------------------------------------------------+ bool CheckPriceRange(const string a_symbol, const double price) { double min_price = SymbolInfoDouble(a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN); double max_price = SymbolInfoDouble(a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX); if((price >= min_price) && (price <= max_price)) return(true); return(false); }
Поэтому не нужно ничего нормализовывать, а просто проверить Вашу цену функцией приведённой выше (т.е проверяем возможно ли установить ордер по нашей цене).
Если же вы как-то высчитываете цену установки ордера, то нужно к известной цене (наример LAST_PRICE) просто прибавить (вычесть) шаг(несколько шагов) цены инструмента
double step_price = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
double my_price = SymbolInfoDouble(Symbol(), SYMBOL_LAST) + 2 * step_price; if(CheckPriceRange(Symbol(), my_price) == true) { //устанавливаем ордер }
Спасибо, именно так всегда и делал у себя в роботах на фортс, но тут в примерах увидел что люди начали использовать стандартную библиотеку из которой все цены нормализуются их методом... может я чего еще не понимаю, может примеры это просто примеры, типо на смотри как можно сделать, но если планируешь для реала, то создавай тоже с нуля.
Но так же много где прочитал что эту библиотеку ругают, говоря что она чисто под форекс торговлю и на бирже работает плохо, решил просто поэксперементировать, вроде все работает так же, единственное почему то робот на пару % процессор стал сильней грузить и переодически при удалении лимиток вываливается ошибка Инвалид Реквест, это при использовании стандартного удаления
void DeleteAllOrders() { for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders if(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==MagicNumber) if(!m_trade.OrderDelete(m_order.Ticket())) {
По чему то, удаляя сетку лимитных ордеров стандартной функцией, она пытается в конце удалить последний ордер повторно, которого уже не существует от сюда ошибка инвалид реквест, работает как самокат по лестничным ступеням, ступени уже закончились, а самокат думает что они все еще есть. Все это конечно удобно, самому практически не чего писать не нужно, все написано уже, вот только немного в непонятках, стоит ли на сегодняшнее время пользовать стандартные методы, или же все же создавать свои для более корректной работы что бы в будущем не пришлось исправлять чего, когда изменения в библиотеку внесут.
Спасибо, именно так всегда и делал у себя в роботах на фортс, но тут в примерах увидел что люди начали использовать стандартную библиотеку из которой все цены нормализуются их методом... может я чего еще не понимаю, может примеры это просто примеры, типо на смотри как можно сделать, но если планируешь для реала, то создавай тоже с нуля.
Но так же много где прочитал что эту библиотеку ругают, говоря что она чисто под форекс торговлю и на бирже работает плохо, решил просто поэксперементировать, вроде все работает так же, единственное почему то робот на пару % процессор стал сильней грузить и переодически при удалении лимиток вываливается ошибка Инвалид Реквест, это при использовании стандартного удаления
По чему то, удаляя сетку лимитных ордеров стандартной функцией, она пытается в конце удалить последний ордер повторно, которого уже не существует от сюда ошибка инвалид реквест, работает как самокат по лестничным ступеням, ступени уже закончились, а самокат думает что они все еще есть. Все это конечно удобно, самому практически не чего писать не нужно, все написано уже, вот только немного в непонятках, стоит ли на сегодняшнее время пользовать стандартные методы, или же все же создавать свои для более корректной работы что бы в будущем не пришлось исправлять чего, когда изменения в библиотеку внесут.
Выбирать Вам, что использовать, но я никогда не использовал стандартную библиотеку.
Проверка на максимальную/минимальную цену здесь
Проверка на максимальную/минимальную цену здесь
//+------------------------------------------------------------------+ //| Expert Check price range function | //+------------------------------------------------------------------+ bool CheckPriceRange(const string a_symbol, const double price) { double min_price = SymbolInfoDouble(a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN); double max_price = SymbolInfoDouble(a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX); if((price >= min_price) && (price <= max_price)) return(true); return(false); }
пробую
#property copyright "" #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double min_price = SymbolInfoDouble(_Symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN); double max_price = SymbolInfoDouble(_Symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX); printf(" %f %f",DoubleToString(min_price,8) , DoubleToString(max_price,8) ); } ответ 2020.06.22 13:07:45.158 yyy_MaxLimit (TATN,H4) 0.000000 0.000000
пробую
Это вы на акциях пробуете (фондовый рынок), на акциях нету никаких лимитов
Это вы на акциях пробуете (фондовый рынок), на акциях нету никаких лимитов
Верно на акциях. Но вообще то выставить лимитник допусти по TATN на уровень 20.0 биржа НЕ позволяет.
Cегодня удается выставить только на 530.4 на 530.3 уже нельзя
Верно на акциях. Но вообще то выставить лимитник допусти по TATN на уровень 20.0 биржа позволяет , сегодня удается выставить только на 530.4 на 530.3 уже нельзя
не позволяет?
кто вам не позволяет, почему нельзя, какие отговорки (ошибки) ?
не позволяет?
кто вам не позволяет, почему нельзя, какие отговорки (ошибки) ?
2020.06.22 20:00:05.570 Trades '51035': modify #127898237 buy limit 400 TATN -> price: 530.4, sl: 0.0, tp: 610.0) done in 13.665 ms
2020.06.22 20:00:05.638 Notifications notification 'order #127898237 buy limit 400 TATN modified: 530.4 sl: 0.0 tp: 0.0 -> 530.4 sl: 0.0 tp: 610.0' sent to '29BF50EE'
Выставил 530.4
2020.06.22 20:02:11.386 Trades '51035': modify order #127898237 buy limit 400 TATN at 530.4 sl: 0.0 tp: 610.0 -> 530.3, sl: 0.0 tp: 610.0 placed for execution
2020.06.22 20:02:11.396 Trades '51035': rejected modify order #127898237 buy limit 400 TATN at 530.4 sl: 0.0 tp: 610.0 -> 530.3, sl: 0.0 tp: 610.0 ((99)ERROR: (579) For this instr)
модифицирую 530.3 в ответ ((99)ERROR: (579) For this instr
---
ну или если просто ставлю - без попытки поставить на 530.4
2020.06.22 20:05:26.313 Notifications notification 'added order #127898677 buy limit 500 TATN at 530.3' sent to '29BF50EE'
2020.06.22 20:05:26.378 Notifications notification 'rejected order #127898677 buy limit 500 TATN at 530.3, Err(579): price less 530.4' sent to '29BF50EE'
повторяю попытку поставить на 530.4
2020.06.22 20:07:26.644 Trades '51035': buy limit 500 TATN at 530.4
2020.06.22 20:07:26.658 Trades '51035': accepted buy limit 500 TATN at 530.4
2020.06.22 20:07:26.659 Trades '51035': buy limit 500 TATN at 530.4 placed for execution
2020.06.22 20:07:26.671 Trades '51035': order #127898861 buy limit 500 / 500 TATN at 530.4 done in 27.931 ms
2020.06.22 20:07:26.723 Notifications notification 'added order #127898861 buy limit 500 TATN at 530.4' sent to '29BF50EE'
все прекрасно, ставит
но на 530.3 отказ
Потому и возникает вопрос как узнать максимально возможные отступы при торговле на акциях
то же самое касается sell limit
2020.06.22 20:13:41.445 Trades '51035': sell limit 1 TATN at 835.5
2020.06.22 20:13:41.460 Trades '51035': accepted sell limit 1 TATN at 835.5
2020.06.22 20:13:41.461 Trades '51035': sell limit 1 TATN at 835.5 placed for execution
2020.06.22 20:13:41.477 Trades '51035': rejected sell limit 1 TATN at 835.5 (Err(580): price greater 631.2)
2020.06.22 20:13:41.526 Notifications notification 'added order #127899154 sell limit 1 TATN at 835.5' sent to '29BF50EE'
2020.06.22 20:13:41.596 Notifications notification 'rejected order #127899154 sell limit 1 TATN at 835.5, Err(580): price greater 631.2' sent to '29BF50EE'
возможно 631.2
вот и вопрос - как заранее понимать что максимальная цена для sell limit сегодня 631.2 а для buy limit 530.4
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ребят, нужен совет по исполнению установки лимитников на фортс, есть код, при появлении позиции, робот выше и ниже цены ставит лимитные ордера с отступом
Интересует собственно правильно ли у меня нормализована цена самого отступа для лимитников, стоит ли использовать встроенную библиотеку или же лучше нормализовать цену отдельно.
Спасибо.