Всем доброго времени суток. Очень надеюсь, что модераторы всё же пропустят мой пост на главную, потому что это обычно редкость. Этот пост является продолжением этого поста. Мою прошлую запись можно было бы записать одним предложением: «Усреднение и мартингейл не работают». На этот раз я опишу, какие могут быть подводные камни, при разработке стратегий на MQL4/MQL5 не связанных с усреднением. Вернее подводный камень будет один: ваш робот не будет зарабатывать. Думаю этот пост будет так же интересен тем, кто не занимается алготрейдингом.
Итак, после того как я обломался с усреднителем, вторая мысль, которая у меня возникла (первая мысль это классическая «Трейдинг — отстой») — это посмотреть в маркете mql5.com, есть ли там ВИЗУАЛЬНО ПРИБЫЛЬНЫЕ торговые стратегии. К сожалению они были. Я там нашёл самого дорогого робота, с прекрасной доходностью на истории, причём генерация была не стандартная 90%, а 99%, что мне казалось — очень круто. Плюс ко всему там был мониторинг доходности на реальном счету. Большое количество процентов. Я посмотрел всё это и понял, что я должен себе написать клона этого робота. (Не надо смеяться, я думаю большинство из вас поступило бы так же, всё это было очень убедительно)
PeriodMA — период скользящей средней;
TrailingSto — трейлинг стоп в пунктах;
IN_Point — количество пунктов, при прохождении которых от скользящей средней открывается/закрывается сделка.
Этот несколько доработанный советникможно скачать с моего сайта (№3 в архиве).
Для написания индикатора мне потребовался массив типа очередь. Т.е. чтобы не было необходимости задавать размерность массива, можно было добавлять значения без указания индекса в конец и так далее. В C# и C++ есть такая удобная штука как Queue (с разными методами, но с общим смыслом), а вот в MT4 такого нет. Я подумал, что уже не первый раз сталкиваюсь с необходимостью такой очереди. Решил дописать несколько функций, которые мне нужны и из простого массива сделать очередь. Когда несколько функций было написано, я вынес все в файл *.mqh и думал куда бы поместить его, чтобы использовать в дальнейшем во всех своих работах. И тут я обнаружил, что в папке MQL4 (в MT5 все аналогично) уже есть папка Include, которая УЖЕ вкючает в себя расширения для массивов (и не только).
Разобрав все, что связано с массивами я не расстроился, так как тех методов, что мне нужны, я не нашел. Я вынес их отдельно в файлик ArrayDouble_ext.mqh. Добавил три новых функции: нахождение суммы всего массива, поиск максимального и минимального значений массива. Зачем нужны две последние спросите вы? Поясню. Есть стандартная фунция ArrayMaximum, например:
color TimeFromColor = Red; // левая граница диапазона — цвет
int TimeFromStyle = STYLE_DASH; // левая граница диапазона — стиль
color TimeToColor = Blue; // правая граница диапазона — цвет
int TimeToStyle = STYLE_DASH; // правая граница диапазона — стиль
Беру заменяю Red и Blue на Gray и White, сохраняю. Беру перезагружаю терминал, но линии как были синяя и красная, так и остались. Хотя в исходнике мои цвета стоят.
подскажите, может чего то не так делаю, первый раз сталкиваюсь с этим.