![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
leonid553 |
![]()
Сообщение
#251
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Использую систему при ручной торговле по всем своим парам на Н4. Как один из подтверждающих сигналов. Некоторый недостаток, - стохастик перерисовывается на последней (текущей свече).
По киви - на н1. Работаеt система прилично. А советник, - "любит" молотить против тренда! С этим надо бороться. Вот вставил дополн. режим, - открытие встречной позиции если убыток текущей позиции превышает "m" пипсов. Но фильтр ещё видно нужно добавить. Добавил индюк Форсе, - но - результат слабый. Код //+------------------------------------------------------------------+ //|Stochastic_Env.mq4.mq4 //| leonid553 & Co //| http://www.tradersforum.net.ru/ //+------------------------------------------------------------------+ #property copyright "leonid553 & Co" #property link "http://www.tradersforum.net.ru/" //---- input parameters--------- extern int MagicNum = 294; extern int MagicLock = 295; //----------------------------------- extern int Stochastic_period=8; extern int Env_period=25; extern int Env_shift=1; extern double Env_deviation=20; //------------------------------ extern int TP=55; extern int SL=55; extern int m=20; extern int TP_lock=30; extern int SL_lock=30; extern double Lot=0.1; extern int Slippage=3; //------------------- int ticket; //********************************************************************* //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- if (Env_deviation==0) Env_deviation=0.1; //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // int cnt=0; int total = OrdersTotal(); // количество открытых ордеров if( total==0) //если нет открытых ордеров { double Stochastic_array[49]; //заполняем массив значениями Stochastic-----------------] int i=0; while (i<50) { Stochastic_array[i]= iStochastic(NULL, 0, Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, i); i++; } //------------------------------------------------------ ArraySetAsSeries(Stochastic_array,true); // Цепляем на стохастик конверт - Envelope : double En0_low=iEnvelopesOnArray(Stochastic_array,0,Env_period,0,Env_shift,Env_deviation,MODE_LOWER,0); double En0_up=iEnvelopesOnArray(Stochastic_array,0,Env_period,0,Env_shift,Env_deviation,MODE_UPPER,0); double Stochastic_0=iStochastic(NULL, 0, Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, 0); double Stochastic_1=iStochastic(NULL, 0, Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, 1); //]===== Ищем возможность войти в рынок ]========================================================= //проверяем условие на покупку-------------[/ if ( (Stochastic_1<En0_low) && (Stochastic_0>En0_low) ) { // ---покупаем----- ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,NULL,MagicNum,0,Blue); if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); } } //--------проверяем условие на продажу if ( //-------продаем------------ (Stochastic_1>En0_up) && (Stochastic_0<En0_up)) { ticket=OrderSend(Symbol(),1,Lot,Bid,Slippage,Bid+SL*Point,Bid-TP*Point,NULL,MagicNum,0,Yellow); if (ticket<0) { Print("Ошибка открытия ордера SELL #", GetLastError()); return (0); } } //------------------------------------------------------------------ } //***************ЛОКИРОВАНИЕ********************** if( total==1)//если есть открытый ордер { double val=iForce(NULL, 0, 5,MODE_SMA,PRICE_CLOSE,0); if (OrderSelect(0, SELECT_BY_POS, MODE_TRADES)) { //---------------------------------------------------------------------- if (OrderType() == OP_BUY && (OrderMagicNumber() == MagicNum)) //и если это - длинная позиция открыта---------- { if ((OrderProfit() < (-m) ) && val<-0 ) // - если убыток позиции превышает "m", то открываем лок SELL { ticket=OrderSend(Symbol(),1,Lot,Bid,Slippage, Bid+SL_lock*Point, Bid-TP_lock*Point,NULL,MagicLock,0,Aqua); if (ticket<0) { Print("Ошибка открытия ордера SELL #", GetLastError()); return (0);} } } //------------------------------------------------------------------ if (OrderType() == OP_SELL && (OrderMagicNumber() == MagicNum)) //и если это - короткая позиция открыта---------- { if ((OrderProfit() <(-m) ) && val>0) // - если убыток позиции превышает "m", то открываем лок BUY { ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL_lock*Point,Ask+ TP_lock*Point,NULL,MagicLock,0,Green); if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); } } } //---------------------------------------------------------- } } return(0); } |
Invest1979 |
![]()
Сообщение
#252
|
Группа: Активный участник Сообщений: 12 Регистрация: 23.7.2007 Из: г. Оренбург Пользователь №: 1 426 Спасибо сказали: 0 раз(а) ![]() |
Может я чего не понимаю. Но в коде советника написано, что сравнение значения стохастика присходит всегда с текущим значение конверта. вот тут:
//проверяем условие на покупку-------------[/ if ( (Stochastic_1<En0_low) && (Stochastic_0>En0_low) ) То есть с текущим значением конверта сравнивается и значение стохастика свечку назад и текущее. Из-за этого не которые сигналы пропускаются. Если в ручную пройтись по графику и сравнить результат с резултатом советника. Мне кажется нужно добавит еще значение енвилопса свечку назад и тогда писать вот так: //проверяем условие на покупку-------------[/ if ( (Stochastic_1<En1_low) && (Stochastic_0>En0_low) ) Тогда пропусков сигнала не будет. И еще у меня мысль. А что если сделать что бы советник работал только с закрытыми свечами. То есть без нулевого текущего бара. и сделать что бы система работала по переворотам. |
leonid553 |
![]()
Сообщение
#253
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Не думаю, что входы пропускаются. Ведь цена двигается тиками, - туда/сюда, - и так или иначе условие всегда выполнится.
Чтобы сделать с закрытыми свечами, - нужно предусмотрееть работу советника по ценам открытия. Но в этом случае, - при длинных свечах (например на новостях) мы войдем в рынок с бо.о.ольшим опозданием! - когда уже и не надо, - на излете движения! Вроде бы есть еще версия, - где предусмотрено закрытие текущей позиции при встречном сигнале! Т.е. переворот. Посмотрю... |
space |
![]()
Сообщение
#254
|
Группа: Пользователи Сообщений: 3 Регистрация: 21.7.2007 Пользователь №: 1 423 Спасибо сказали: 0 раз(а) ![]() |
с учётом последнего выложенного кода чуть позже выложу свою версию ))
|
leonid553 |
![]()
Сообщение
#255
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Ок! Думаю что индикатор Форсе (и условие по нему) нужно выкинуть, и вместо него можно предусмотреть для лока обычный фильтр из 2-х сглаженных МА. И возможно в дальнейшем будет целесоображным - для лока - предусмотреть отдельный трейлинг!
Исходя из логики такой системы. |
NoName |
![]()
Сообщение
#256
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Может я чего не понимаю. Но в коде советника написано, что сравнение значения стохастика присходит всегда с текущим значение конверта. вот тут: //проверяем условие на покупку-------------[/ if ( (Stochastic_1<En0_low) && (Stochastic_0>En0_low) ) То есть с текущим значением конверта сравнивается и значение стохастика свечку назад и текущее. Из-за этого не которые сигналы пропускаются. Если в ручную пройтись по графику и сравнить результат с резултатом советника. Мне кажется нужно добавит еще значение енвилопса свечку назад и тогда писать вот так: //проверяем условие на покупку-------------[/ if ( (Stochastic_1<En1_low) && (Stochastic_0>En0_low) ) Тогда пропусков сигнала не будет. И еще у меня мысль. А что если сделать что бы советник работал только с закрытыми свечами. То есть без нулевого текущего бара. и сделать что бы система работала по переворотам. Не думаю что Вы заметите разницу изменив это условие. Дело в том что разница значений Envelope на 0-м и 1-м барах, как правило, очень маленькая, в то время как стохастик перемещается большими шагами. |
Invest1979 |
![]()
Сообщение
#257
|
Группа: Активный участник Сообщений: 12 Регистрация: 23.7.2007 Из: г. Оренбург Пользователь №: 1 426 Спасибо сказали: 0 раз(а) ![]() |
Разница есть в открытии позиций. Но может быть она есть у меня так как я изменил советника что бы он торговал только по закрытым барам. То есть открытие позии происходит после того как стохастик закрепится выше или ниже конверта. И еще при таком способе открытия позиций оптимизация показывает что периоды стохастика для 4 часового графика должны быть достаточно большими. Кто нибудь сталкивался с этим?
|
SERGE |
![]()
Сообщение
#258
|
Группа: Активный участник Сообщений: 27 Регистрация: 10.6.2006 Пользователь №: 657 Спасибо сказали: 0 раз(а) ![]() |
Разница есть в открытии позиций. Но может быть она есть у меня так как я изменил советника что бы он торговал только по закрытым барам. То есть открытие позии происходит после того как стохастик закрепится выше или ниже конверта. И еще при таком способе открытия позиций оптимизация показывает что периоды стохастика для 4 часового графика должны быть достаточно большими. Кто нибудь сталкивался с этим? Стохастик может работать и как осциллятор во флете при малых периодах, и как трендовый индикатор наподобие кросс-ма при длительных. В соответствии с вашими ограничениями тестер подбирает вам флет или тренд. |
NoName |
![]()
Сообщение
#259
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Разница есть в открытии позиций. Но может быть она есть у меня так как я изменил советника что бы он торговал только по закрытым барам. То есть открытие позии происходит после того как стохастик закрепится выше или ниже конверта. И еще при таком способе открытия позиций оптимизация показывает что периоды стохастика для 4 часового графика должны быть достаточно большими. Кто нибудь сталкивался с этим? А не могли бы Вы повесить отчёт по тестированию Вашей версии советника? В свое время так же пробовал работу по закрытым барам, но количество сделок сильно сокращалось, и были они далеко не самыми удачными. Всё дело в том что стохастик очень быстро "прошивает" канал и если ждать закрытия бара, он либо уже давно за второй границей (сигнала, соответственно, уже нет), либо вход уже в самом конце движения. Как вы поступили с этим моментом в своём советнике? |
Invest1979 |
![]()
Сообщение
#260
|
Группа: Активный участник Сообщений: 12 Регистрация: 23.7.2007 Из: г. Оренбург Пользователь №: 1 426 Спасибо сказали: 0 раз(а) ![]() |
Вешаю по паре евро фунт. Надо сказать не самые лучшие у нее результаты. А что касается прошивание канала то для меня в принципе это значения не имеет. (У меня если она пробила первый канал, то не важно пробила второй или нет, это в советнике не прописано). Я торгую по 4 часовикам и достаточно длительные по времени сделки. Поэтому при оптимизации стараюсь что бы параметры индюков были большие. Это конечно увеличивает стоп, тэйк и снижает размер позиций. В данном случае стохастик период больше 50, а по некоторым парам и за 200 есть. Конечно количество сделок уменьшается, но это по моему даже хорошо. Так как я торгую много пар. Но зато система становится более устойчивая. В данном случае оптимизация проводилась на периоде 1 полугодие 2007 года. И с этими же параметрами сносный результат показывает и на 2006 году. У меня она работает в качестве переворотной, если раньше стоп не сроботает. Хотя наверное нужно попробовать трал, но пока опыта в програмировании не хватает.
Эскизы прикрепленных изображений Прикрепленные файлы ![]() |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 24.4.2025, 8:31 |