В чём причина может быть?
Каждая цена должна быть кратна TickSize.
double CorrectPrice( const string Symb, const double Price ) { const double TickSize = MathMax(SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE), SymbolInfoDouble(Symb, SYMBOL_POINT)); return(NormalizeDouble(((int)(Price / TickSize + 0.1)) * TickSize, (int)SymbolInfoInteger(Symb, SYMBOL_DIGITS))); }
Каждая цена должна быть кратна TickSize.
Так я торгую отложками, а не рыночными ордерами. Каким боком кратность должна быть?
Иногда в журнале вижу такую ошибку. Меня это удивляет т.к. цены нормализованы, и, соот-но в этом всё чётко. Стопы тоже проверяю все, хотя.. если бы было дело в стопах, ошибка была бы другой.
Вот у меня нормализуется цена:
Функция нормализации вот:
В чём причина может быть?
Нормализация цены: CSymbolInfo -> NormalizePrice:
//+------------------------------------------------------------------+ //| Normalize price | //+------------------------------------------------------------------+ double CSymbolInfo::NormalizePrice(const double price) const { if(m_tick_size!=0) return(NormalizeDouble(MathRound(price/m_tick_size)*m_tick_size,m_digits)); //--- return(NormalizeDouble(price,m_digits)); }
Так я торгую отложками, а не рыночными ордерами. Каким боком кратность должна быть?
Таковы правила OrderCheck.
Так я торгую отложками, а не рыночными ордерами. Каким боком кратность должна быть?
Не важно, как Вы торгуете, у ордера должна быть корректная цена. И Ваша ошибка возникает в том случае, если размер пункта по инструменту не совпадает с размером тика по инструменту. И Вам правильно привели примеры функций, которые исправляют Вашу ошибку.
Получаю ошибку invalid price при попытке открытия позиции с рынка и использовании метода NormalizePrice. Не по всем инструментам. По большинству ошибки нет. Весь код приводить не буду, выложу тестовый скрипт для проверки.
#include <Trade\SymbolInfo.mqh> CSymbolInfo m_symbol; // symbol info object //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart(void) { double price=iClose(NULL,0,10); Print(" *** price="+DoubleToString(price,5)); Print(" *** m_symbol.NormalizePrice(price)="+DoubleToString(m_symbol.NormalizePrice(price),5)); } //+------------------------------------------------------------------+
Результаты прогона.
Объясните чайнику в чем причина.
Получаю ошибку invalid price при попытке открытия позиции с рынка и использовании метода NormalizePrice. Не по всем инструментам. По большинству ошибки нет. Весь код приводить не буду, выложу тестовый скрипт для проверки.
Результаты прогона.
Объясните чайнику в чем причина.
Надо проинициализировать m_symbol.Name(Symbol());
CSymbolInfo m_symbol;
Получаю ошибку invalid price при попытке открытия позиции с рынка и использовании метода NormalizePrice. Не по всем инструментам. По большинству ошибки нет. Весь код приводить не буду, выложу тестовый скрипт для проверки.
Результаты прогона.
Объясните чайнику в чем причина.
В момент открытия нового бара все его цены (O,H,L,C) равны цене открытия. Цена открытия фиксируется сразу. Дальше начинается формирование бара: цены H, L, C фиксируются в момент его закрытия. Дальше думайте сами,- обнародованной Вами информации недостаточно.
В момент открытия нового бара все его цены (O,H,L,C) равны цене открытия. Цена открытия фиксируется сразу. Дальше начинается формирование бара: цены H, L, C фиксируются в момент его закрытия. Дальше думайте сами,- обнародованной Вами информации недостаточно.
Да нее, это ни при чём. Всё понятно там как я писал выше. У него цена до целого округлилась, значит m_digits там равен 0, т.к. не инициализирован m_symbol

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Иногда в журнале вижу такую ошибку. Меня это удивляет т.к. цены нормализованы, и, соот-но в этом всё чётко. Стопы тоже проверяю все, хотя.. если бы было дело в стопах, ошибка была бы другой.
Вот у меня нормализуется цена:
Функция нормализации вот:
В чём причина может быть?