Всем привет!
Наверняка многие из вас часто замечали, что периодически графики той или иной валютной пары повторяют свои движения. На самом деле, в большинстве случаев – это всего лишь временное явление, на котором не получится сделать достаточно много денег. Но что, если есть такие надежные ценовые движения и закономерности, о которых мы и не догадываемся? Сегодня мы напишем довольно простой советник, который поможет нам с исследованиями рынка.
Что будем писать?
В основе любого исследования всегда лежит определенная гипотеза. Сначала мы выдвигаем ее, а потом уже доказываем или опровергаем.
Сегодня мы напишем простой советник, который будет работать на дневных графиках. В основе формирования входа будет лежать некий свечной паттерн с привязкой ко дню недели. Гипотеза наша заключается в следующем: если мы видим одну медвежью свечу, а затем бычью, скажем, в среду, то в четверг свеча тоже будет бычьей. Если мы видим бычью свечу, а затем медвежью, то следующий день закроется еще ниже. Проиллюстрирую это на картинке:
Как видите, паттерн очень простой, и маловероятно, что он действительно работает. Тем не менее, на рынке действительно присутствуют подобные аномалии, на которых можно спокойно из года в год зарабатывать пусть и небольшие, но все же реальные деньги.
Конструкция нашего советника
Советник будет очень простым. Он будет сверять текущий день недели с днями, в которые торговля разрешена. Затем он проверит, нет ли сейчас открытых ордеров. После этого сверится, присутствует ли заданный паттерн, и в случае его обнаружения откроет сделку. Закрытие позиции будет произведено на следующий день.
Поэтому разделим тело советника на несколько частей. Первая часть – фильтр дня недели:
bool TimeFilter(){
if(!MondayTrade&&DayOfWeek()==1) return(false);
if(!TuesdayTrade&&DayOfWeek()==2) return(false);
if(!WednesdayTrade&&DayOfWeek()==3) return(false);
if(!ThursdayTrade&&DayOfWeek()==4) return(false);
if(!FridayTrade&&DayOfWeek()==5) return(false);
return(true);
}
Он будет возвращать false, если текущий день недели запрещен в настройках. Второй блок генерирует сигнал:
int Signal(){
if (!TimeFilter()) return -5;
double Close1 = iClose(_Symbol, signal_period, 1);
double Open1 = iOpen(_Symbol, signal_period, 1);
double Close2 = iClose(_Symbol, signal_period, 2);
double Open2 = iOpen(_Symbol, signal_period, 2);
if (Close2 > Open2 && Close1 < Open1) {
return OP_SELL;
}
if (Close2 < Open2 && Close1 > Open1) {
return OP_BUY;
}
return -5;
}
Как видите, мы просто ищем нужный нам паттерн. И этот метод вы можете переписать под поиск любого паттерна.
Дальше осталось только написать метод для открытия и закрытия позиции. И метод, сигнализирующий о том, что текущая позиция уже открыта 1 бар, и ее пора закрывать:
bool ExitTime(int dir){
for (int i = OrdersTotal(); i >= 0; i—) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if (OrderSymbol() != Symbol() || OrderMagicNumber() != magic) {
continue;
}
if (TimeCurrent() — OrderOpenTime() > 60 * exit_bars * exit_period) {
return(true);
}
}
return(false);
}
Вот, собственно, и все. Полный код советника вы можете увидеть в видеоуроке.
Результаты
Как я уже говорил, советник, как и сам паттерн, – очень простой. Но на рынках «просто» — не всегда означает плохо и не прибыльно. Даже такие простые вещи, к нашему удивлению, могут оказаться рабочими, за что мне и нравится этот рынок. Это рынок умопомрачительных контрастов. В то время как ручные трейдеры торгуют вслепую вообще, без какого-либо подтверждения статистической значимости своих систем, новички вкладывают последние деньги в сетки и мартины, алготрейдеры изобретают все более изощренных скальперов с количеством строк кода, дающим фору «Войне и миру», порой очень простые, но прибыльные вещи лежат на поверхности, но их никто не видит. В этом есть какая-то очень изощренная ирония, не находите?
Результаты не блещут, конечно, но паттерн был взят наобум, и он крайне прост. Я уверен, что если немного подкорректировать его, — то можно добиться лучших результатов.
Заключение
Идея паттерна с двумя свечами противоположных цветов и настроенного на продолжение движения – очень простой пример. Тут не учитывается ни форма, ни волатильность, ни отношение размера теней к размеру самого тела свечи. Вы же можете придумать свои паттерны и протестировать их, – как знать, может быть, вы найдете действительно ценные и очень прибыльные возможности.
Скачать исходник советника из урока
С уважением, Дмитрий аkа Silentspec
Tlap.com