Если писал самостоятельно - что мешает проверить логику открытия ордеров?
Или таки не сам? ;)
Работает так, как и написан. Ошибка, по-моему, в том, что не проверяется пересечение машек, а просто берется их взаимное расположение на нулевом баре.
Так если нет пересечения средних, то сигнала не будет. Ведь условие не выполнится и функция GetStateOfMA() вернёт значение CROSS_NO т.е. пересечение отсуствует:
int GetStateOfMA() { if (GetMA(1) > GetMA(2)) { pr ("GetStateOfMA() = CROSS_UP"); return (CROSS_UP); } if (GetMA(1) < GetMA(2)) { pr ("GetStateOfMA() = CROSS_DN"); return (CROSS_DN); } pr ("GetStateOfMA() = CROSS_NO"); return (CROSS_NO); }
Вопрос остаётся открытым. Профессионалы отзовитесь! Нужен совет. Как вообще тут заниматься отладкой? Как искать ошбики? Ведь я распринтовал по цепочке алгоритм, но ордера посылаются без выполнения соответствующих функций.
А где Вы увидели, что здесь проверяется пересечение? 1 - это быстрая на нулевом, а 2 - медленная. Где проверка на предыдущем баре? Или я чего не догоняю?
То что проверялось значение положения машек друг относительно другой на 0 баре, это я уже переработал :( Уже исправил. А вот причину проверки пересечения я не понял. Ведь сигнал будет только при наличии чёткого положения быстрой ниже или выше медленной, иначе сигнала нет! Зачем нам проверять место пересечения?
То что имеем на данный момент прилагаю к посту. Всё что было в библиотеке (2 функции я добавил в эксперт, чтоб можно было скомпилировать).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я написал простой эксперт. Исходный код прилагаю. Писал для тестера, без соответствующих проверок под реал, для некоторых своих тестов.
Эксперт получает сигнал от 2 функций т.е. общий сигнал на покупку или продажу состоит из 2 сигналов.
1-ый сигнал: быстрая машка выше медленной - покупка, быстрая ниже медленной - продажа.
2-ой сигнал зависит: если 1-ый сигнал на покупку, то считаются медвежьи бары, т.е. направленные вниз. Если кол-во медвежьих баров достигает значения cntDn значит происходит сигнал на покупку. Для продажи 2-ой сигнал наоборот: 1-ый сигнал на продажу, считаются бары бычьи. Если бычьих баров больше значения cntUp то получаем общий сигнал на продажу.
В исходном коде, ставлены комментарии, где нужно. Отчётливо видно, что код исполняется не так как должен.
Прошу обосновать что там не так.. Сигнал я объяснил.
Вот, например, скрин:
Для продажи должны машки быть в режиме CROSS_DN т.е. быстрая ниже медленной, и бычьих баров 3. На скрине видно, что быстрая машка ниже медленной, НО бары не бычьи !!!. НО это сигнал на покупку, а не на продажу! Чтоб это за такое, прошу помоч понять причину не верного исполнения столь простого алгоритма.