Попробую сойти за опытного. Считаю, что код написан некорректно, но будет срабатывать из трех два раза. Значение <Point - это и есть ноль.
Согласен, на тоненького, слишком узенькая грань, а если геп пипса 3? Надо рассматривать два случая, конкретно для касания сверху и снизу:
Касание снизу if (Bid>=bbm), сверху if (Bid<=bbm).
Попробую сойти за опытного. Считаю, что код написан некорректно,
но будет срабатывать из трех два раза. Значение <Point - это и
есть ноль.
Согласен, на тоненького, слишком узенькая грань, а если геп пипса
3? Надо рассматривать два случая, конкретно для касания сверху
и снизу:
Касание снизу if (Bid>=bbm), сверху if (Bid<=bbm).
Если я правильно понял при большом скачке (гэпе) закрыти может просто не сработать.
Может тогда нужно задать диапазон (для проскальзывания) price+-slippage???
И еще даже при гэпе пересечение текущей цены все равно будет со средней линией. Разве по этому коду советник "не увидит" этого, уже состоявшегося пересечения???
пересечение сверху вниз - Low на предыдущем баре > предыдущего значения BB, на текущем Low<= текущему значению bb, в другую сторону - наоборот. Так будет надежно работать. Еще надо нормализовать на 8 знаков значение цены и индикатора.
пересечение сверху вниз - Low на предыдущем баре > предыдущего
значения BB, на текущем Low<= текущему значению bb, в другую сторону
- наоборот. Так будет надежно работать. Еще надо нормализовать
на 8 знаков значение цены и индикатора.
Но в Коде вродебы прописывается нормализация цены
NormalizeDouble( MathAbs( bbm - Bid ), Digits. Digits означает уточнение до 8 цифр?!
Согласен, на тоненького, слишком узенькая грань, а если геп пипса
3? Надо рассматривать два случая, конкретно для касания сверху
и снизу:
Касание снизу if (Bid>=bbm), сверху if (Bid<=bbm).
Если я правильно понял при большом скачке (гэпе) закрыти может просто не сработать.
Может тогда нужно задать диапазон (для проскальзывания) price+-slippage???
И еще даже при гэпе пересечение текущей цены все равно будет со средней линией. Разве по этому коду советник "не увидит" этого, уже состоявшегося пересечения???
Правильно. Не зная логики эксперта, сложно давать советы. Но Slippage точно не при делах, это проскальзывание при исполнении приказа (открытие/закрытие).
Если предположить, что Вы, например, хотите закрыть ордер при касании средней снизу, то при при резком пересечение этой средней гепом в 10 пунктов уже не хотите? ( а на реале гепы и в 20-30 пунктов не редкость) Если все равно хотите, то мой вариант должен подойти и работать даже без нормализации, она тут не к чему, имхо. Но тогда уже скорее придется брать в расчет и тип ордера.
пересечение сверху вниз - Low на предыдущем баре > предыдущего
значения BB, на текущем Low<= текущему значению bb, в другую сторону
- наоборот. Так будет надежно работать. Еще надо нормализовать
на 8 знаков значение цены и индикатора.
Но в Коде вродебы прописывается нормализация цены
NormalizeDouble( MathAbs( bbm - Bid ), Digits. Digits означает уточнение до 8 цифр?!
Digits это 4 или 2 знака.
Задача такая: Есть гланая линия стахастика и нас интересует некоторые значения стахастика с понижающимися барами (черные свечи) и некоторые с повышающимися барами (белыми свечами); как выделить такие значения стахастика.
У меня получился такой код, но в правильности его сильно сомневаюсь:
double S1, S2, S3, S4;
int S1Bar, S2Bar, S3Bar, S4Bar;
S1=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,S1Bar);
S2=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,S2Bar);
S3=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,S3Bar);
S4=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,S4Bar);
S1Bar=(Close>Open);
S2Bar=(Close>Open);
S3Bar=(Close<Open);
S4Bar=(Close<Open);
Сомневаюсь что правилльно описал свечи, но подругому не заю как.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
double bbm = iBands_m(0,0,20,2,0,PRICE_CLOSE,MODE_SMA,0); // средняя линия Болинджера
if ( NormalizeDouble( MathAbs( bbm - Bid ), Digits ) < Point ) // равен текущей цене
{
OrderClose(order_id);
return(0);
}
Со средней линией болинджера понятно,то что NormalizeDouble необходима для нормализации цен немного понвятно (хотя для чего это), а вот с условием равенства цен объясните пожалуйста, 1) Для цего здесь математ. функция делающая результат положительным (модуль), 2) MathAbs( bbm - Bid ) - сравнивает цены с линией болинджера. Но мне видится здесь арифметическая операция вычитание. Может при вычитании должен получиться ноль, и тогда соприкасновение значит состоялось? 3) для чего полученное выше нормализованное значение сравнивается с Point?