vikas
Алексей

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Изменить условия выставления ордеров

Здравствуйте Oxy. Вы недавно подправляли мне советник. Нельзя ли
в нём изменить условие для выставления ордеров? Сейчас он выставляет
ордера исходя из макс. и мин. значения цены за выбранный временной
промежуток плюс отступ, и по времени, указанному в настройках. А
хотелось бы по линиям поддержки и сопротивления, которые рисует
индикатор Price channel на выходе этого временного промежутка плюс
конечно отступ. Просто часто бывают ситуации, когда срабатывает
отложенник, цена не доходит до ТП (хотя он маленький) и начинается
усреднение. И заканчивается всё это в итоге то хорошо, только как то
это напрягает. Так вот насчёт индикатора, — в основном его линии
совпадают с макс. и мин. ценой, но иногда именно в ситуации, когда
цена не доходит до ТП, он рисует канал уже и это позволило бы выс-
тавить ордер раньше и закрыться по ТП. На ТФ м5 всё это наглядно.
Я всё таки за то чтобы заканчивать одной сделкой а мартингейл на
крайний случай, хотя и это работает. Попробуете?
Сам исходный советник — www.opentraders.ru/downloads/534/
индикатор — progi-forex.ru/indicator%20price%20channel.html
(не могу закачать в базу — выдаёт ошибку)
Торгую на м5 поэтому в блоке Expert tick function изменил период на m5.
  • 0
  • Просмотров: 4850
  • 26 февраля 2015, 13:30
  • vikas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Доработка индикатора auto_fibo_retracement-v2
26 февраля 2015
26 февраля 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (14)

+
0
Судя по заданию — это не изменить советник, а написать новый :) 
______________________________________________
Топик, где я вам помогла этот?
zakaz.opentraders.ru/22912.html
(чтобы вспомнить советник, и что я там меняла)
______________________________________________
Индикатор по ссылке самый верхний?

Или какой-то из этих?

______________________________________________
Торгую на м5 поэтому в блоке Expert tick function изменил период на m5.

Где именно и что вы заменили?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 февраля 2015, 17:53
+
0
Да, топик этот. Индикатор тот который по ссылке самый верхний.
В коде в строчках
double up=iHigh(Symbol(),PERIOD_H1,iHighest(NULL,0,MODE_HIGH,CountHour,1));
double dn=iLow(Symbol(),PERIOD_H1,iLowest(NULL,0,MODE_LOW,CountHour,1));
заменил период H1 на M5
Насчёт написания нового ссоветника… блин ожидалось всё как то проще.
Смотрите если это хлопотно, то не надо. Он меня вобщем то устраивает.
Ну а если возьмётесь, тогда мне придётся описать его стратегию заново со
всеми нюансами? AM2 несколько раз дорабатывал.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 26 февраля 2015, 18:44
+
0
Там много нюансов? Можете в комментариях описать?
Смотрите если это хлопотно, то не надо.
Напишу, только понять бы, что :) 
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 февраля 2015, 21:39
+
0
Сейчас он работает так: в настройках выставляется временной промежуток, ну скажем
с 7 утра до 11 дня. В 11:00 советник определяет макс. и мин. цену за этот промежуток и выставляет по этим уровням плюс отступ (указано в меню)стоповые
ордера. цена дошла до ордера, он сработал, другой удаляется. Дальше если цена дошла до ТП — всё стоп торговля до следующего дня. Если не дошла и повернула — начинает усреднять. И как только доходит до ТП — также стоп. При усреднении каждый последующий ордер он открывает не строго через указанное колличество
пунктов, а по началу следующей свечи при условии что колличество пунктов не
меньше, чем указанное в настройках. (оно может быть и больше если свеча длинная)
Вот так он сейчас работает. А мне хотелось бы чтобы в 11:00 он выставлял ордера
исходя не из макс. и мин. цены плюс отсуп, а исходя из уровней, которые в этот
момент нарисовал индикатор плюс конечно отступ. Ну а нюансы… Надо чтобы советник
распозновал свои ордера после перезагрузки терминала и чтобы несколько таких
советников не мешали друг другу. (то, что вы подправляли). В меню все пункты остаются. Единственное — нужно предусмотреть в меню возможность изменения общего
ТП при усреднении. Некий коэффициент. Сейчас в коде в блоке void Modify orders в строчке: tp=NormalizeDouble(all+TakeProfit*Point*0.2,Digits); я добавил после
Point *0.2 для обоих ордеров. Наверно получилось коряво. Но после этого советник при определённых настройках стал зарабатывать.
Вот вроде бы всё.

avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 26 февраля 2015, 22:36
+
0
Наконец-то добралась и до вашего советника.
Про сам советник я вроде все поняла.
Но вот про индикатор *think* 
В индикаторе Price Channel я не нашла строк:
double up=iHigh(Symbol(),PERIOD_H1,iHighest(NULL,0,MODE_HIGH,CountHour,1));
double dn=iLow(Symbol(),PERIOD_H1,iLowest(NULL,0,MODE_LOW,CountHour,1));
Вот код самого индикатора, который я скачала по ссылке:
//+------------------------------------------------------------------+
//|                                                Price Channel.mq4 |
//|                                                                  |
//|                                       http://forex.kbpauk.ru/    |
//+------------------------------------------------------------------+
 
#property link      "http://forex.kbpauk.ru/"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 DodgerBlue
#property indicator_color2 DodgerBlue
#property indicator_color3 DodgerBlue
//---- input parameters
extern int ChannelPeriod=14;
//---- buffers
double UpBuffer[];
double DnBuffer[];
double MdBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE,2);
   SetIndexBuffer(0,UpBuffer);
   SetIndexBuffer(1,DnBuffer);
   SetIndexBuffer(2,MdBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Price Channel("+ChannelPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"Up Channel");
   SetIndexLabel(1,"Down Channel");
   SetIndexLabel(2,"Middle Channel");
//----
   SetIndexDrawBegin(0,ChannelPeriod);
   SetIndexDrawBegin(1,ChannelPeriod);
   SetIndexDrawBegin(2,ChannelPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Price Channel                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   int    k;
   double high,low,price;
//----
   if(Bars<=ChannelPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=ChannelPeriod;i++) UpBuffer[Bars-i]=0.0;
//----
   i=Bars-ChannelPeriod-1;
   if(counted_bars>=ChannelPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
       high=High[i]; low=Low[i]; k=i-1+ChannelPeriod;
      while(k>=i)
        {
         price=High[k];
         if(high<price) high=price;
         price=Low[k];
         if(low>price)  low=price;
         k--;
        } 
     UpBuffer[i]=high;
     DnBuffer[i]=low;
     MdBuffer[i]=(high+low)/2;
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+

Может вы код индикатора сюда разместите? Как я только что сделала.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 27 февраля 2015, 23:45
+
0
Нет, эти строчки
double up=iHigh(Symbol(),PERIOD_H1,iHighest(NULL,0,MODE_HIGH,CountHour,1));
double dn=iLow(Symbol(),PERIOD_H1,iLowest(NULL,0,MODE_LOW,CountHour,1));
в коде советника

А индикатор да как раз тот, который нужен.
Редактирован: 28 февраля 2015, 07:31
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 28 февраля 2015, 04:34
+
0
Сейчас он работает так: в настройках выставляется временной промежуток, ну скажем
с 7 утра до 11 дня. В 11:00 советник определяет макс. и мин. цену за этот промежуток и выставляет по этим уровням плюс отступ (указано в меню)стоповые ордера.

Вы знаете, то ли я не там смотрю, но я не нашла в настройках такого. *shock* 
extern int    StopLoss    = 190;         // стоп лосс ордера
extern int    TakeProfit  = 50;          // тейк профит ордера
extern int    Step        = 10;          // шаг между ордерами
extern int    MaxTrades   = 10;          // количество трейдов
extern int    Slip        = 3;           // проскальзывание
extern int    EndHour     = 11;          // час окончания торговой сессии
extern int    CountHour   = 8;           // длительность торговой сессии
extern int    Expiration  = 14;          // время истечения ордера
extern int    Delta       = 100;         // расстояние от вершин
extern int    Magic       = 21122014;    // магик
extern double Lots        = 0.1;         // начальный торговый объем
extern double KLot        = 1;           // коэффициент увеличения объема
extern double KStep       = 10;          // увеличение шага между ордерами

Приняла для себя решение, всё-таки запрограммировать заново. Очень трудно читать код другого человека.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 февраля 2015, 16:20
+
0
час окончания торговой сессии — это как раз и есть момент выставления ордеров.
длительность торговой сессии — колличество часов, отсчитываемое назад от этого
момента. Всё вместе получается временной промежуток.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 28 февраля 2015, 17:18
+
0
Написала советник, проверяйте:
opentraders.ru/downloads/613/
не на тот советник сначала сделала ссылку <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; '>&nbsp; 

Кстати, для 5-ти знака стоп лосс, к примеру, 200, а для 4-рех знаков 20. Сами так выставляете. Я не программирую, чтобы люди выставляли только 20, а программа сама бы считала — 200 или 20. Я так путаюсь, когда сама использую советник.
Редактирован: 28 февраля 2015, 19:07
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 февраля 2015, 19:03
+
0
я не понял это вы про что? Вы про какой стоплосс. Я вроде ни о чём таком не
говорил.
Насчёт советника…
1. все сделки почему то только Buy.
2. ордера выставляются почему то внутри канала. А надо вне его на величину
отступа от линий канала.
3. если ордер сработал и закрылся по ТП в течении 1 часа, следом открывается
следующий. А торговля должна была остановиться.
Это пока то что на поверхности.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 28 февраля 2015, 19:51
+
0
А вы точно советник мой скачали? opentraders.ru/downloads/613/
Все три пункта, что вы написали, у меня нет такого. Я прогоняла в тестере.







Про в течение часа — теоретически возможно, если стоп очень маленький.
Редактирован: 28 февраля 2015, 22:56
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 февраля 2015, 22:43
+
0
Доброе утро Oxy. Что то я туплю. Всё работает конечно. Просто индикатор то надо
было ваш установить. Каюсь.
Ну а так всё вроде бы как хотел. Насколько он будет лучше или хуже… посмотрим.
на истории результат хороший.
В любом случае большое спасибо Вы как всегда на высоте!
И с первым днём весны Вас!
Редактирован: 1 марта 2015, 08:17
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 1 марта 2015, 08:14
+
0
ant-GUBreakout_V.0.4.2 имеется в виду?
avatar

  10  session Сообщений: 165

  • 1 марта 2015, 08:23
+
+1
Нет. Price Channel. Он в архиве вместе с советником.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 1 марта 2015, 09:49

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий