[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: Бизон  
Советник для автоматизации работы по сигналам
Versy OfflineДата: Четверг, 18.06.2009, 15:31 | Сообщение # 1
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
Доброго веремени суток)

Предлагаю избавится от рутинной работы, а именно от провернки графиков каждый час.

Предлагаемый мной советник будет сам ежедневно открывать позиции по инструментам, на которые он наложен. При включении советника нужно будет ввести верхнюю и нижнюю границу цен, при прохождении через которые он открывает либо позицию на покупку, либо на продажу.

Я начал писать этот советник, но по неопытности столкнулся с проблемой реализации отката (если цена уходит более чем на 15 пипсов от сигнала, данного Алексеем).

Думаю дальше разберемся, особенно если ктонибудь поможет) Может у когото больше опыта в программировании под MT4.

Думаю этот советник имеет пути для развития)

Спасибо.

Советника прикрепил)))

Прикрепления: Sedishev.mq4 (3.6 Kb)
Сообщение отредактировал Versy - Пятница, 19.06.2009, 13:47
 
R0Mi0 OfflineДата: Четверг, 18.06.2009, 16:30 | Сообщение # 2
Былинный трейдер
Группа: Проверенные
Сообщений: 5782
Репутация: 19
Награды: 7
Versy, отличная идея
давай обсуждать сразу ))
Quote (Versy)
if (price>prv) //цена пересекла верхнюю границу

правильнее будет, если цена закрытия предыдущего часа пересекла уровень... это считается сигналом по стратегии Алексея

P.S. Я вообще не силен в программировании, так что помочь с кодом не смогу - только советами и тестированием...

 
Ден OfflineДата: Четверг, 18.06.2009, 16:38 | Сообщение # 3
Бесполезняк
Группа: Проверенные
Сообщений: 27
Репутация: 3
Награды: 0
Идея действительно хорошая. biggrin
Надо тестировать ...
 
R0Mi0 OfflineДата: Четверг, 18.06.2009, 16:56 | Сообщение # 4
Былинный трейдер
Группа: Проверенные
Сообщений: 5782
Репутация: 19
Награды: 7
Только наверное раздел немного не тот?..
 
Versy OfflineДата: Четверг, 18.06.2009, 17:52 | Сообщение # 5
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
Quote (R0Mi0)
Только наверное раздел немного не тот?..

раздел более посещаем) если модераторы перенесут, не огрочусь))

Quote (R0Mi0)
правильнее будет, если цена закрытия предыдущего часа пересекла уровень... это считается сигналом по стратегии Алексея

откат то надо будет делать по текущему часу)
а start() всеравно срабатывает каждые 1-3 секуды, так что цена закрытия предыдущего там будет почти равна цене открытия текщего..

прикрепить удалось сам советник.. там реализовал откат...
качните, посмотрите... вроде так..
комментариев там понаписал)))

Добавлено (18.06.2009, 17:13)
---------------------------------------------
кстати файлик сюда:
C:\Program Files\MetaTrader - Alpari\experts (у меня) у вас мб другая папка с MT4//

после этого он появляется в MT 4 в советниках

Добавлено (18.06.2009, 17:52)
---------------------------------------------
и незабудьте в MT4 включить советника и разрешить ему торговать (при запуске советника там галочка будет на 1ой вкладке)

советник кстати пока работает правильно только на EUR/USD .. чтоб на других парах работал, надо придумать как вызвать в программу чему равен один пункт пары...

Сообщение отредактировал Versy - Четверг, 18.06.2009, 17:55
 
_Eugene_ OfflineДата: Четверг, 18.06.2009, 18:40 | Сообщение # 6
Турист
Группа: Проверенные
Сообщений: 67
Репутация: 4
Награды: 0
Полтора года в форексе занимался тем что программил советников!
Именно полтора года понадобилось чтобы понять - что робот никогда не сможет вам сделать прибыль!
Роботы в единственном случае приносят доход - когда вы их продаете дурочкам, которые верят, что робот может торговать!
Полтора года понадобилось чтобы понять - если хочешь хорошо работать на форекс - делай это руками!
И вам совет - плюньте! Не связыввайтесь с роботами!
Робот никогда не сможет оценить график - как это сделают мозг и глаз!
"if (price>prv) //цена пересекла верхнюю границу"
то что вы написали - это не стратегия Алексея - на пробой - это может быть и касание!!!
Только глаз определит - произошел пробой уровня - или отскок!!!
И рутины в стратегии Алексея нет!
Он сам говорит - что не сидит часами за компом - посмотрит раз в час - раз в 2 часа на график - подкорректирует - и дальше своими делами заниматься!
if (price>prv) // - и вот это не по окончанию часа! Это каждые 3 сек!
Нужно делать 2 проверки-
1. типа (LB!=iBars(Symbol, PERIOD_H1))
где LB - предыдущее значение баров!
т.е. проверяем - не настал ли след час!
2. iOpen(Symbol, PERIOD_H1, 0)>Уровня + желательно пипсов 5-10! или вместо iOpen - iClose(Symbol, PERIOD_H1, 1)-кому как больше нравится! smile
и напоследок - один пункт пары любой - можно посмотреть - MarketInfo(Symbol, MODE_POINT)

Добавлено (18.06.2009, 18:40)
---------------------------------------------
Да! И еще! уж лучше тогда пишите советник - чтоб отложные ордера выставлял! Так точнее и проще запрограмить можно будет! И они всегда сработают! А если у вас отключат свет - то ваш советник по рынку не сработает! Либо есть еще такая фигня - как "торговый поток занят"! тоже тогда советник не сработает! Так что лучше отложниками работать! Они на сервере - они сработают всегда! smile
И к проверке Price> еще надодобавлять что-то типа - Price< и еще учитывать таие понятия как StopLimit - так называемый - минимальное кол-во пунктов какое можно выставить от цены...
И стоп-лос и тейк-профит нужно выставлять - не как вы - 50 и 25 пип - а такие какие рекомендует Алексей! Не просто так ведь он их расчитывает! smile
Вроде все! smile Что вспомню - то еще напишу! smile

Сообщение отредактировал _Eugene_ - Четверг, 18.06.2009, 18:30
 
Versy OfflineДата: Четверг, 18.06.2009, 18:42 | Сообщение # 7
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
Quote (_Eugene_)
и напоследок - один пункт пары любой - можно посмотреть - MarketInfo(Symbol, MODE_POINT)

за это спасибо)

а вообще.. ну я всетаки попробую.. я не корректирую обычно цифры, данные Алексеем, а просто торгую по ним.. вобщем получается неплохо..

Quote (_Eugene_)
"if (price>prv) //цена пересекла верхнюю границу"
то что вы написали - это не стратегия Алексея - на пробой - это может быть и касание!!!

тут несоглашусь... цитату лень искать, но Алексей говорил, что даже на 1 пункт - пробой. а если в 1ю минуту нового часа на 1 пункт цена выше сигнала, то уже получается пробой.. значит новый час открылся выше сигнала..

по поводу советников - полностью с Вами соглашусь - пустая трата времени восновном... понял просто логически подумав.. даже не программируя на MQ полтора года... но тут другое дело.. тут просто робот для игры по сигналам, которые дал человек.

для использования компьютера для определения пути рынка в моменты времени - минумум нужно использовать нейронные сети... а это уже ИИ.. не машина почти))) =)

//снова перезалил советника. вот эта версия уже ИМХО рабочая для пары EUR/USD
завтра поробую адаптировать его на все пары. (спсибо совету
_Eugene_)))

 
_Eugene_ OfflineДата: Пятница, 19.06.2009, 07:35 | Сообщение # 8
Турист
Группа: Проверенные
Сообщений: 67
Репутация: 4
Награды: 0
Лучше все таки отложниками делать!
Но как говорится - хозяин барин! smile
А про нейронные сети - фигня - делал - повезет - проработает месяц, два - потом сольет - не повезет - сразу сольет!
На чемпионате мира в 2007 году - Топчило с его PNN просто повезло! smile Я не читал - что он говорил - но думаю - всетаки сказал гденибудь - что повезло! smile
Руками и только руками! smile

Добавлено (19.06.2009, 07:29)
---------------------------------------------
Вы уж сильно не ругайтесь - но еще по исходнику чуть чуть добавлю: smile
" if (work == true)"
так не пишут - пишут " if (work)"
соответственно не пишут " if (work == false)" - пишут " if (!work)"
Далее разбираем вот эту строчку:
" ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,0.0003,Ask-0.0050,Bid+0.0025,"Мой ордер",777777,0); work = false; //покупаем"
лоты - не пишут 0.1 - пишут свою функцию GetLots() - а в ней уже расчет лотов какой хотите - можно даже просто return(0.1) smile
slippage - выражается в пунктах - т.е. не 0.0003 - а просто 3 - slippage - целого типа! и лучше ее вообще выносить в extern переменные - чтобы юзер сам устанавливал проскок какой считает нужным...
Ask-0.0050,Bid+0.0025 - так тоже не пишут
обычно пишут:
Ask-sl*pnt, Bid+tp*pnt, где
sl, tp - значения тейкпроф и стоплос в пунктах, pnt - размер пункта
Вообще отказывайтесь от чисел в коде! Пользуйтесь переменными - так проще потом исправлять и модифицировать код!
Теперь "work = false" - а если ордер не открылся? - т.е. (ticket<0)? А вы уже сказали флагом work - что больше не будем открывать! smile
лучше вместо work=false, написать - work=(ticket<0)
Если ордер открылся - то будет как раз work=false
Если произошла какаято ошибка - work=true и можно будет попробывать еще раз зайти открыть ордер!
Ну и последнее, когда придется на все 10 инструментов расширять код - придется вводить массивы:
вместо Symbol() - Smb[0..9]={"EURUSD", "USDCHF", и т.д.}
так же sl и tp для каждого символа будете вбивать
" double price = Ask; //текущая цена " - вот это будете переделывать в
Price[i]=MarketInfo(Smb[i], MODE_ASK)
и соответств вот это " if (price>prv)" - будете переделывать в Price[i]>prv[i]
и все это делать и проверять в цикле для каждого инструмента!
Ну и флаг work - тоже будет для каждого инструмента свой work[i]...
вроде все - вспомню что еще - напишу... smile
Только не обижайтесь - типа лезет не в свое дело - учит... smile
Сам не люблю когда меня учат...
Если это так - просто скажите - отстань! smile

Добавлено (19.06.2009, 07:35)
---------------------------------------------
Вспомнил что еще... smile
"ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,0.0003,Ask-0.0050,Bid+0.0025,"Мой ордер",777777,0);"
после вот этого обычно ставят Sleep(3000);
чтобы дать серверу хотябы 3 сек - чтобы заглотить запрос на ордер, а затем уже продолжить исполнять код робота...
К сожелению - в тестере стратегий робот не так работает - как в реальном режиме времени...
в тестере ордер исполняется мгновенно...
но когда запустите на реале - ордера в лучшем случае исполняются 3-5 сек....
поэтому этот sleep просто необходим... smile

Сообщение отредактировал _Eugene_ - Четверг, 18.06.2009, 18:49
 
Versy OfflineДата: Пятница, 19.06.2009, 10:22 | Сообщение # 9
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
Да нет, что Вы!!
Великолепные советы)
Спасибо Вам большое!) Если бы они были не нужны, не создавал бы ветку)
Буду писать) wink

Добавлено (19.06.2009, 09:48)
---------------------------------------------

Quote (_Eugene_)
Ну и последнее, когда придется на все 10 инструментов расширять код - придется вводить массивы:
вместо Symbol() - Smb[0..9]={"EURUSD", "USDCHF", и т.д.}
так же sl и tp для каждого символа будете вбивать
" double price = Ask; //текущая цена " - вот это будете переделывать в
Price[i]=MarketInfo(Smb[i], MODE_ASK)
и соответств вот это " if (price>prv)" - будете переделывать в Price[i]>prv[i]
и все это делать и проверять в цикле для каждого инструмента!

а я с пунктами для каждого инструмента так сделал..\
после инт страт()
if (point == true)
{
p = MarketInfo(Symbol(),MODE_POINT);
point = false;
}

потом просто
if ((prn-price)>12*p) .. както так.. ИМХО...
щас посмотрим правильно ли все работает)

Добавлено (19.06.2009, 10:13)
---------------------------------------------
хотя еще можно написать
if ((prn-price)>12*Point) //предопределенная переменная..

но чето эта поинт везде ноль возвращает...

Добавлено (19.06.2009, 10:22)
---------------------------------------------
перезалил файлик с исправлениями..

Сообщение отредактировал Versy - Пятница, 19.06.2009, 10:03
 
Wictoriya OfflineДата: Пятница, 19.06.2009, 10:27 | Сообщение # 10
Первонах
Группа: Проверенные
Сообщений: 9
Репутация: 0
Награды: 0
немного не поняла
это советник работает как отложенные ордера?
тогда я пойму зачем он
ведь отложки можно и самим ставить
 
_Eugene_ OfflineДата: Пятница, 19.06.2009, 10:33 | Сообщение # 11
Турист
Группа: Проверенные
Сообщений: 67
Репутация: 4
Награды: 0
Я понял - хотите вешать советника на каждое окно графика... smile
А я вам говорил про советника - который весит на одном окне и работает сразу с 10 парами...
Тогда все проще - можно вообще MarketInfo не использовать - а использовать только Point, Ask, Digit, Symbol() и т.д.
Point по идеи не должен 0 возвращать - ищите - гдето глюк! smile
 
Versy OfflineДата: Пятница, 19.06.2009, 10:35 | Сообщение # 12
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
Quote (Wictoriya)
немного не поняла
это советник работает как отложенные ордера?
тогда я пойму зачем он
ведь отложки можно и самим ставить

нет советник работает так:
С утра (в 9,00) вы получаете сигналы с сайта по каждой паре.
прим EUR/USD: если дойдет по итогам часа выше динии х.хххх, то покупать, если ниже y.yyyy то продавать. SL и TP такойто.
Вы вбиваете в настройку советника эти данные.
prv- цена верхней линии
prn- цена нижней линии
и советник при пересечении линии по итогам часа должен открыть правильный ордер.

преимущество в сравнении с отложенными ордерами, делающимися вручную - меньше манипуляций мышкой при установке советника и возможность автоматической реализации ожидания отката при сильном пробое (больше 12 пунктов) перед установкой ордера..
т.е. отпадает необходимость проверять каждый час котировки.

Робот пока на стадии бета тестирования lol

Так что тестируем только на демках)
Опен сорс) Советы по коду приветствуются)

Сообщение отредактировал Versy - Пятница, 19.06.2009, 10:36
 
_Eugene_ OfflineДата: Пятница, 19.06.2009, 10:35 | Сообщение # 13
Турист
Группа: Проверенные
Сообщений: 67
Репутация: 4
Награды: 0
Wictoriya, Нет! Он хочет по рынку его сделать! smile
По мне - так лучше отложниками работать!
Наставил их - и в шкаф до вечера спрятался! smile
А вечером пришел - и посмотрел - чтож там натворилось! smile
 
Versy OfflineДата: Пятница, 19.06.2009, 10:54 | Сообщение # 14
Полуфабрикат
Группа: Проверенные
Сообщений: 33
Репутация: 3
Награды: 0
блин возвращает чет всетаки ноль...
пытаюсь вот так посмотреть Alert(Point);
и пишет именно 0, а не 0,0000... хотя пойнт вродь дабл

Добавлено (19.06.2009, 10:47)
---------------------------------------------
понял))))у EUR/USD 0,00001 ))) doubletosrting)))) псмотрел с ним)

Добавлено (19.06.2009, 10:54)
---------------------------------------------
все) все заработало) кому интересно, попробуйте потестировать на демке)

 
_Eugene_ OfflineДата: Пятница, 19.06.2009, 11:17 | Сообщение # 15
Турист
Группа: Проверенные
Сообщений: 67
Репутация: 4
Награды: 0
Нельзя инт так писать: extern int Prosk=3.0;
если инт - то просто 3!
if (point == true) - вот это вообще не понял! Где у вас поинт этот объявляется?
я так понимаю у вас Алпари - поэтому и 5 знак добавлен - и Point=0.00001 - тогда Proskok - должен быть 30 tp=200 sl=500
а вот этого вообще не нужно - p = p*10; smile
и еще tp и sl - в пунктах - а след они должны быть инт!

Добавлено (19.06.2009, 11:17)
---------------------------------------------
Конструкцию с if (point == true) так и не понял!
Выкинте ее нафик!
И просто в ордерах используйте - tp*Point и все!

 
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:
На ряду с высокой прибольностью, операции на рынке Форекс содержат в себе высокий уровень риска. Будьте внимательны!
Использование материалов сайта возможно только при наличии прямой активной ссылки на analitika-forex.ru