Целью данного исследования является выявление зависимости между ситуацией на рынке и направлением движения во время новостей «Non Farm Payrolls». Для этой цели написано два советника с немного отличающимися условиями.
Советник оптимизируем на паре EURUSD, таймфрейм М30 с 2000-го года. Показания МА будут сниматься с ТФ М30-Weakly.
Первое условие для входа будет такое: за полчаса до новостей совершаем сделку в зависимости от расположения цены относительно МА на выбранном периоде. Вторым условием для исследования будет направление МА, т.е. ее возрастание и убывание.
Оптимизируемые параметры представлены на рисунке:
Функция для открытия позиции для первого условия будет выглядеть так:
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
if(Bid<ma && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
if(Ask>ma && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
Запустим последовательно оптимизацию эксперта на выбранных таймфреймах.
Наилучший результат с МА 10 на М30 — 22654.4$ с просадкой 46.9%.
Ниже результаты с МА на Н1, Н4, D1, Weakly.
На основании полученных данных можно сделать вывод, что «Нонки» лучше всего смотрят на «Машки» с периодом Н4, затем идет D1, Weakly, H1 и М30.
Ниже представлен полный код советника:
//+------------------------------------------------------------------+
//| Nonki.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod = 12;
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_M1;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
if(Bid<ma && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
if(Ask>ma && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+
Далее оптимизируем советник со вторым условием, которое имеет вид:
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);
//--- sell conditions
if(ma<ma3 && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
if(ma>ma3 && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
Теперь проделаем все тоже самое со вторым условием, суть его примерно такова: цена растет на трех МА подряд, также для всех периодов.
Также составим рейтинг «Машек» для второго уловия: D1, Weakly, H4, M30, H1.
Полный код советника для второго случая приведен ниже:
//+------------------------------------------------------------------+
//| Nonki.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod = 12;
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_M1;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);
//--- sell conditions
if(ma<ma3 && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
if(ma>ma3 && DayOfWeek()==5 && Day()<=7 && Hour()==15)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+
В первую тройку машек вошли: МА D1(2) c результатом 47862.2$, МА H4(1) c результатом 35724.0$, МА Weakly(2) c результатом 35622.6$.
И на последок сегодняшняя сделка совершенная советником в тестере и кривая баланса лучшей машки
Таким образом было выявлено, что «Нонки» лучше всего смотрят «Машки» со вторым условием и периодом D1.
Советник вы можете скопировать с окна топика или скачать файлом:
www.opentraders.ru/downloads/924/
Комментарии (33)
Вот придумщик!
46 Bishop Сообщений: 5816 - АЛЬФАХАМЕЦ-Машковод
24 SerOv Сообщений: 859 - Сергей
Объем и спрос\прдложение… больше ничего… Даже так называеые смарт мани, не используют больше перечисленного: спрос\предложение, объем…
6 kraz5 Сообщений: 72
Любой «крупный игрок» так же как и вы всегда анализирует график, и так же получает стопы, не важно сколько у него денег, миллион или миллиард. Все везде одно и тоже.
Со спросом и предложением согласен.
12 fantastictrader Сообщений: 239
6 kraz5 Сообщений: 72
Вот есть примета такая: ласточки низко летают — к дождю…
Это отнюдь не означает того, что тучки смотрят: — Ага, ласточки низенько залетали, пора дождиком пробиваться…
Назовите, плиз, этих крупных игроков, которые об этом могли рассказать. Неужели это всё было так:
Общее сборище «крупных игроков». И они такие заявляют: Мы тут это, все, как один, прежде чем валюты прикупить для нужд государства или корпорации, да и просто спекульнуть, сидим тут да анализируем… И никак иначе. А вот ежли анализ нам не понравится, то страна иль корпорация так поживёт пока, без валютки… Редактирован: 7 ноября 2015, 18:42
20 Anatoly74 Сообщений: 3710 - Анатолий
6 kraz5 Сообщений: 72
Просто не оправдались ваши ожидания, вы и расстроились: Но с чего это рынку ходить так, как вы от него ожидаете? А индикаторы вы просто не умеете готовить
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
6 kraz5 Сообщений: 72
Так никто ж не заставляет
Вы сами написали: Ничего про вас не знают, так как вы ничего и не говорите, кроме прогнозов! Некорректное сравнение с девушкой за рулем — у нее есть документ, подтверждающий, что она имеет право сидеть за рулем! А ваш где документ? А то сели за руль прогнозов, а документ в виде вашей торговли не показываете. Поправьте, если я не права.
Мы даже не знаем, сколько вам лет. Редактирован: 8 ноября 2015, 18:53
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
6 kraz5 Сообщений: 72
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
6 kraz5 Сообщений: 72
Для серьезного восприятия надо зарекомендовать себя.
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
6 kraz5 Сообщений: 72
Итак, собственные правила нарушены, покровы сорваны, карты выложены. Не получилось «анонимно», не получилось «без напряга». И не из-за кого-то, а исключительно из-за вас, из-за категоричности ваших суждений, из-за претензии на истину в последней инстанции.
Ваша игра слита без малейшего вмешательства из вне, началась новая игра — по правилам любого сообщества. И выглядит она так: предъявляешь претензии, требуешь к себе уважения — будь добр покажи, почему же ты такой особенный. И поверьте, это только начало… Я вот еще играть не начинал
Еще раз. Не мы напали на вас. А вы зачем-то напали на всех разом и требуете к себе должного уважения. Но только, что вам должно, а что вам не должно, мы пока не знаем
46 Bishop Сообщений: 5816 - АЛЬФАХАМЕЦ-Машковод
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
Редактирован: 9 ноября 2015, 16:17
20 Anatoly74 Сообщений: 3710 - Анатолий
Сравнение неверное. Потому что в данном случае вас останавливает никакой не «мент» (за которого еще можно было бы принять какого-нибудь модератора или админа), а простой пешеход или другой водитель, коих на дорогах много разнообразных и своеобразных. И вы зачем-то останавливаетесь, выслушиваете, принимаете близко к сердцу и заявляете, что «все вокруг такие неблагодарные и оставляют желать лучшего».
К слову, здесь более 20 тыс. зарегистрированных. У многих свои блоги, свои топики, свое виденье. 6 лет истории ресурса. Кто-то объемы торгует, кто-то советники тестирует, кто-то просто общается. Но нет, два человека в выходные вступили в дискуссию без особых обиняков и все уже: «аудитория оставляет желать лучшего» и «opentraders пока». Да еще и в чужом топике, куда сам первый пришел оставлять свое категоричное мнение.
Подумайте об этом
46 Bishop Сообщений: 5816 - АЛЬФАХАМЕЦ-Машковод
6 kraz5 Сообщений: 72
И не говори, я когда в своё время стоял на дороге, мне действительно было плевать насколько нарушитель крут. Только слово «милочка» при обращении к нарушителю, особливо мужского полу, не применял, а уважительно объяснял суть правонарушения.
Спорткары, говоришь? Хех
20 Anatoly74 Сообщений: 3710 - Анатолий
6 kraz5 Сообщений: 72
И я так же оставил своё лично мнение. Что за психи-то? Поищите в сети про эффект Данинга-Крюгера.
20 Anatoly74 Сообщений: 3710 - Анатолий
6 kraz5 Сообщений: 72
Если бы открыл бай именно на нонках, а не днем позже, то вместо стопаря получили бы нехилый профит.
Сейчас провожу тест + анализ сделок вручную, точность робота поражает
А можно сделать аналогичного советника, только чтоб он торговал в один определенный день, и его можно было бы самому выбрать во входных параметрах. Т.е. перед нонками ставим число когда он торгует, включаем сова, сов анализирует и входит в этот день. И все.
З.Ы.
Также сов не открыл 08.05.2015, т.к. это была вторая пятница, но нонки были именно на ней! Редактирован: 8 ноября 2015, 17:37
19 pacak Сообщений: 552 - варвар Andre
Вот этот момент можно поправить, если в советник подставить открытие не в первую пятницу, а в «пятницу после первой среды месяца». Нонки, как и экспирации опционов, происходят обычно именно по такой схеме.
46 Bishop Сообщений: 5816 - АЛЬФАХАМЕЦ-Машковод
Смотрю конец 2014-начало 2015, там печальней картина, очень много промахов, робот встает в другую сторону
Идея интересная, но дорабатывать много. Как потестирую, возможно выложу свои мысли, если в этом будет смысл.
З.Ы.
На у как быть с нонками 02.05.2014?
19 pacak Сообщений: 552 - варвар Andre
Я сказал «обычно». Исключения все равно вручную надо обрабатывать. Для нонок, которых 12 в год, это не так сложно.
Например, в один год, когда правительство из-за госдолга простаивало, нонки вообще вышли черт те когда. С разницей в неделю друг за другом.
Главное, что по правилу «пятницы после первой среды» исправлять придется меньше.
46 Bishop Сообщений: 5816 - АЛЬФАХАМЕЦ-Машковод
всего нонок 2012-ноябрь 2015: 47
ложные входы (торговали не по нонкам, а по пятницам): 9 раз (каждый пятый раз, это очень много) — эту торговлю из статы исключил
правильный вход: 14 из 38
неправильный: 17
бу: 7
19 pacak Сообщений: 552 - варвар Andre
Это можно поправить.
35 AM2 Автор Сообщений: 16507 - Андрей
19 pacak Сообщений: 552 - варвар Andre
35 AM2 Автор Сообщений: 16507 - Андрей
Так должно условие выглядеть, а целиком:
И советник исправленный:
Редактирован: 9 ноября 2015, 05:01
35 AM2 Автор Сообщений: 16507 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий