Всем доброго времени суток. Очень надеюсь, что модераторы всё же пропустят мой пост на главную, потому что это обычно редкость. Этот пост является продолжением этого поста. Мою прошлую запись можно было бы записать одним предложением: «Усреднение и мартингейл не работают». На этот раз я опишу, какие могут быть подводные камни, при разработке стратегий на MQL4/MQL5 не связанных с усреднением. Вернее подводный камень будет один: ваш робот не будет зарабатывать. Думаю этот пост будет так же интересен тем, кто не занимается алготрейдингом.
Итак, после того как я обломался с усреднителем, вторая мысль, которая у меня возникла (первая мысль это классическая «Трейдинг — отстой») — это посмотреть в маркете mql5.com, есть ли там ВИЗУАЛЬНО ПРИБЫЛЬНЫЕ торговые стратегии. К сожалению они были. Я там нашёл самого дорогого робота, с прекрасной доходностью на истории, причём генерация была не стандартная 90%, а 99%, что мне казалось — очень круто. Плюс ко всему там был мониторинг доходности на реальном счету. Большое количество процентов. Я посмотрел всё это и понял, что я должен себе написать клона этого робота. (Не надо смеяться, я думаю большинство из вас поступило бы так же, всё это было очень убедительно)
В результате они не знают, что легко могут улучшить качество исполнения своих сделок за счет более быстрой реакции и скорости проведения транзакций.
12 сентября 2016 года были проведены три замера скорости на реальном счете БД «Открытие» на MetaTrader 5 build 1415 и Quik 7.2.23 в одно и то же время.Оба терминала установлены на арендованном сервере VPS в Москве, как и сами торговые серверы БД «Открытие». Торговля велась на одном и том же реальном счете в срочной секции Московской биржи инструментом Si-9.6.
Мы записали на видео все три теста одним роликом, чтобы было видно:
Результаты всех трех тестов собраны в сводной таблице, детальные результаты по каждому тесту представлены ниже отдельными разделами этой статьи.
Тест MetaTrader 5 QUIK Выигрыш MT5 Синхронные операции 9.59 ms 277.80 ms 28.96 раз Асинхронная 0.09 ms 0.30 ms 3.33 раза Обновлений стакана 42.7 в сек 8.40 5.08 раза
Как видно из таблицы, MetaTrader 5 опережает по всем трем тестам со значительным отрывом. Желающие могут самостоятельно провести подобные испытания с помощью приложенных исходных кодов. Само тестирование представлено на видео выше.
Многие трейдеры на Московской бирже хотели бы автоматизировать свои торговые алгоритмы, но не знают с чего начать. А ведь давно есть проработанные решения, которые максимально облегчают первые шаги в алготрейдинге.
Язык MQL5 изначально поддерживает все торговые возможности платформы MetaTrader 5 — в нем множество торговых функций для работы с ордерами, позициями и торговыми запросами. При этом не имеет значения, на каком рынке вы торгуете - фьючерсы, акции, опционы и т.д.
Средствами MQL5 вы можете создать торговый запрос и отослать его на сервер с помощью функций OrderSend() или OrderSendAsync(), получить результат его выполнения, просмотреть торговую историю, узнать спецификацию контракта для инструмента, обработать
Для сравнения языков MQL5 и QLUA мы написали несколько тестов, которые замеряют скорость выполнения базовых операций.
В тестах использовался компьютер с Windows 7 Professional 64 bit, MetaTrader 5 build 1340 и QUIK версии 7.2.0.45.
Результаты представлены в таблице, где все значения представлены в миллисекундах (чем меньше время, тем лучше):
Название MQL5 QLUA Преимущество MQL5 TestFloat 3 969 273 391 69 раз TestArrays 375 230 768 615 раз TestFibo 1 125 61 110 55 раз TestPiCalculated 2 328 183 812 79 раз TestQuickSort 2 031 211 279 104 раза TestAckermann 828 64 541 78 раз
Смысл стратегии в двух словах.
Если с 7-ми до 16 часов было движение более 48 пунктов от максима/минимума цены за период 1-6 часов. Открывать сделку в этом направлении.
На тесте с 2010 года на Евродолларе стратегия показывает прибыль. Но если тестировать с 2003 года — там будут не очень результаты.:(
Есть ли какие-нибудь стандартные ухищрения, чтоб улучшить прибыльность?
#property copyright «ForexMan»
#property link «bergovfx.com»
#include <Tools\DateTime.mqh>
input double Lots=0.1;
input int TakeProfit=59;
input int StopLoss=27;
input int Raznica=48;
CDateTime DT;
int magic_number=555;
bool f;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
double High[];
int count=10; // сколько копируем
ArraySetAsSeries(High,true);
CopyHigh(_Symbol,PERIOD_H1,0,count,High);
double Low[];
ArraySetAsSeries(Low,true);
CopyLow(_Symbol,PERIOD_H1,0,count,Low);
DT.DateTime(TimeCurrent());
if(DT.day_of_week==0 || DT.day_of_week==6) return; // в выходные не работаем
if(MQLInfoInteger(MQL_TRADE_ALLOWED)==false) return; // пропустим тик, если терминал занят
double max, min; //максимальная и минимальная цены
// Если 7 утра — открываем сделки на пробой флэта
if(DT.hour==7 && OrdersTotal()==0)