Как сделать, чтобы советник работал с частотой поступления 4-х разрядных котировок, когда на входе его 5-разрядные котировки.
Запомниться может промежуточная котировка, т.е. к примеру 1,23222 и будет вычитаться 1,23228 (а это уже 1,2322 и 1,2323 )
Лучше PrevBid=NormalizeDouble(Bid,4);
Предполагаю, не факт.
new-rena:
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
Запомниться может промежуточная котировка, т.е. к примеру 1,23222 и будет вычитаться 1,23228 (а это уже 1,2322 и 1,2323 )
Лучше PrevBid=NormalizeDouble(Bid,4);
Предполагаю, не факт.
khorosh:
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
То нужно две функции =)
OnTick() // пункт с огрызками
OnPips() // пункт
А чем по таймеру плохо работать? Настройте в секундах или миллисекундах и регулируйте нагрузку.
khorosh:
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
Если откинуть десятые доли пункта (Ваш первый пост), то получится 4-х знак. Соответственно только его и берем в работу.
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
khorosh:
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
Если вы хотите использовать эту фичу, значит вы согласны иметь котировки с точностью на порядок меньше. Но в таком случае для чего нам округление, которое меняет результат на эти десятые доли пункта. Но в принципе можно и так, кашу маслом не испортишь. Хотя лишняя функция, опять же лишняя нагрузка на процессор.)
Тогда уж еще проще, только одно умножение:
static int px=0; int x=(int)(Bid*10000); if(x==px)return; px=x;
Тогда уж надо учесть изменения не только Bid-котировок, но и Ask:
//+------------------------------------------------------------------+ //| Global variables //+------------------------------------------------------------------+ double nDelta; // ... //+------------------------------------------------------------------+ //| Expert initialization function //+------------------------------------------------------------------+ int OnInit() { nDelta=MarketInfo(_Symbol, MODE_TICKSIZE)*10; // ... return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function //+------------------------------------------------------------------+ void OnTick() { static double nBid=0; static double nAsk=0; // Выход, если котировки Bid/Ask изменились незначительно... if (MathAbs(Bid-nBid)<nDelta && MathAbs(Ask-nAsk)<nDelta) return; nBid=Bid; nAsk=Ask; // ... }
Dmitry Fedoseev:
Чувствуется рука мастера.)
Тогда уж еще проще, только одно умножение:
Eugene Myzrov:
Согласен, логично.
Тогда уж надо учесть изменения не только Bid-котировок, но и Ask:
Vladimir Zubov:
А чем по таймеру плохо работать? Настройте в секундах или миллисекундах и регулируйте нагрузку.
За один и тот же интервал времени изменение котировок может быть очень разным.
А чем по таймеру плохо работать? Настройте в секундах или миллисекундах и регулируйте нагрузку.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может это для кого-то боян, но мне только сегодня вдруг пришла мысль, как уменьшить нагрузку на компьютер, а для меня это актуально, когда я работаю на ноутбуке со слабым процессором и многие советники работают по тикам. Сегодня во время новостей терминал вообще завис, вот я и задумался, что можно сделать, как оградить советник от этой лавины котировок. А вообще это актуально для тех, кому не нужны эти десятые доли пункта, нужны они возможно только тем, кто пипсует.
Чтобы обеспечить этот режим в начале функции OnTick() вставляем такой код:
double PrevBid = 0;