0
я запрограммирую, что у меня автор топика просит, а потом вы уже создадите свой топик со своим заказом
avatar

Oxy

  • 24 апреля 2015, 16:45
0
Посмотрите, для будущего советника индикатор написала:
//+------------------------------------------------------------------+
//|                                   Indicator_TrendRiver_Artev.mq4 |
//|                                                              Oxy |
//|                                   http://oxy.opentraders.ru/bio/ |
//+------------------------------------------------------------------+
#property copyright "Oxy"
#property link      "http://oxy.opentraders.ru/bio/"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 9

#property indicator_label1  "main_MA"
#property indicator_color1  clrRed

#property indicator_label2  "up_1"
#property indicator_color2  clrGray
#property indicator_label3  "up_2"
#property indicator_color3  clrGray
#property indicator_label4  "up_3"
#property indicator_color4  clrGray
#property indicator_label5  "up_4"
#property indicator_color5  clrGray
#property indicator_label6  "dn_1"
#property indicator_color6  clrGray
#property indicator_label7  "dn_2"
#property indicator_color7  clrGray
#property indicator_label8  "dn_3"
#property indicator_color8  clrGray
#property indicator_label9  "dn_4"
#property indicator_color9  clrGray
//------- Внешние параметры -----------------------------------------+
extern int                ma_period     = 7;            // Период MA
extern ENUM_MA_METHOD     ma_method     = MODE_SMMA;    // Метод усреднения MA
extern int                ma_shift      = 0;            // Сдвиг MA
extern ENUM_APPLIED_PRICE applied_price = PRICE_MEDIAN; // Тип цены MA
extern int                Ma_Level_1    =230;           // Уровень 1 Ма
extern int                Ma_Level_2    =380;           // Уровень 2 Ма
extern int                Ma_Level_3    =500;           // Уровень 3 Ма
extern int                Ma_Level_4    =610;           // Уровень 4 Ма
//------- Глобальные переменные -------------------------------------+
string   Symb;
//--- indicator buffers
double Buffer_main_MA [];
double Buffer_MA_H_L1 [];
double Buffer_MA_H_L2 [];
double Buffer_MA_H_L3 [];
double Buffer_MA_H_L4 [];
double Buffer_MA_L_L1 [];
double Buffer_MA_L_L2 [];
double Buffer_MA_L_L3 [];
double Buffer_MA_L_L4 [];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, Buffer_main_MA);
   SetIndexStyle (0, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(1, Buffer_MA_H_L1);
   SetIndexStyle (1, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(2, Buffer_MA_H_L2);
   SetIndexStyle (2, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(3, Buffer_MA_H_L3);
   SetIndexStyle (3, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(4, Buffer_MA_H_L4);
   SetIndexStyle (4, DRAW_LINE, 0, 1);

   SetIndexBuffer(5, Buffer_MA_L_L1);
   SetIndexStyle (5, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(6, Buffer_MA_L_L2);
   SetIndexStyle (6, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(7, Buffer_MA_L_L3);
   SetIndexStyle (7, DRAW_LINE, 0, 1);
   
   SetIndexBuffer(8, Buffer_MA_L_L4);
   SetIndexStyle (8, DRAW_LINE, 0, 1);
   
   Symb = Symbol();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0) {
     for(int i=rates_total-ma_period; i>0; i--) {
       draw_MA (i);
     }
   }
   draw_MA (0);   
       
   return(rates_total);
  }
//+------------------------------------------------------------------+
void draw_MA (int i) {
   double  _ima = iMA(Symb, 0, ma_period, ma_shift, ma_method, applied_price, i);
   Buffer_main_MA[i] = _ima;
      
   Buffer_MA_H_L1[i] = _ima+Ma_Level_1*Point;
   Buffer_MA_H_L2[i] = _ima+Ma_Level_2*Point;
   Buffer_MA_H_L3[i] = _ima+Ma_Level_3*Point;
   Buffer_MA_H_L4[i] = _ima+Ma_Level_4*Point;

   Buffer_MA_L_L1[i] = _ima-Ma_Level_1*Point;
   Buffer_MA_L_L2[i] = _ima-Ma_Level_2*Point;
   Buffer_MA_L_L3[i] = _ima-Ma_Level_3*Point;
   Buffer_MA_L_L4[i] = _ima-Ma_Level_4*Point;
}
//+------------------------------------------------------------------+



Если у вас 4 знака, то во входных параметрах надо у уровней 0 везде убрать.
avatar

Oxy

  • 24 апреля 2015, 16:44
0
получился какой-то Трэнд Ривер наоборот :D  запрограммирую
avatar

Oxy

  • 24 апреля 2015, 15:39
+1
постараюсь сделать, как вы хотите
avatar

Oxy

  • 24 апреля 2015, 15:38
0
P.S. мне самой интересно довести этот советник до ума, поэтому еще раз вам спасибо за терпение и сотрудничество
avatar

Oxy

  • 24 апреля 2015, 14:46
0
Смотрите, у меня написано так:
советник запускается и считывает параметр AccountEquity (сумма собственных средств текущего счета):
balance = AccountEquity();
Пусть он у нас будет 10000.

Вы во входящем параметре назначили процент прибыли:
Profit = 0.04;

Далее советник каждый раз проверяет следующее условие:
AccountEquity()>=balance*Profit/100+balance
Т.е. если сейчас сумма собственных средств больше или равна, чем 10000*0,04/100+10000 = 10004, то сделки должны быть закрыты/удалены.

По идее, проблемы должны возникнуть:
1) если запущено несколько советников
2) если запущен один советник и ему неправильно передается значение AccountEquity() — а это возможно, так как расчет Equity зависит от настроек торгового сервера!
Формула не идеальная, да. Но я хорошо программирую, а вот в формулах я слаба.
Готова для вас написать ту формулу, которая у вас будет выводить прибыль.
avatar

Oxy

  • 24 апреля 2015, 14:45
0
сегодня запущу на демо, посмотрю. Спасибо за терпение
avatar

Oxy

  • 24 апреля 2015, 12:45
+1
Вы не заметили входящий параметр: Прибыль в валюте = 100?
Если первоначальный баланс был 10000. Вы задали этот параметр 100. То закрытие/удаление произойдет при балансе 10100.
avatar

Oxy

  • 24 апреля 2015, 12:40
0
Внимательно перечитала все ваши сообщения. Посмотрела все ссылки.
В рамках данной группы не буду выполнять этот проект. Вам проще найти программиста, который окажется с вами на «одной волне» и сразу поймет ваше задание. Сорри.
avatar

Oxy

  • 24 апреля 2015, 02:28
0
советник переписан, тестируйте, потом напишите, о его работе
avatar

Oxy

  • 24 апреля 2015, 00:53
0
переписала советник: opentraders.ru/downloads/648/
avatar

Oxy

  • 24 апреля 2015, 00:51
0
Порылась в предыдущих топиках и наткнулась на похожий топик: zakaz.opentraders.ru/22455.html
avatar

Oxy

  • 23 апреля 2015, 21:05
0
уточню. мартин — это увеличение лота по мартингейлу: лот × 2
Хорошо, а пирамидинг? Что это такое?
Если коротко, то суть уловила следующую:
1) вход по зиг-загу в часы, обозначенные вами ( зиг-зага параметры вы сами зададите)
2) открываем одну позицию, плюс ставим стоповые и лимитные ордера с разными параметрами шага, расстоянием от первоначальной цены и количества
3) лот с увеличением (которое сами зададите)
4) take profit прибыльных ордеров двигаем по ma (ma параметры вы сами зададите). А у не прибыльных ордеров ставить TP? куда?
Что-то совсем не поняла, как связан TP и разные тайм-фреймы.
5) с формулами не дружу — уровень б/у не смогу рассчитать
6) что делать с убыточными позициями? если будет стоп лосс, то как его ставить?
7) плюс у вас фигурирует какая-то «закрывашка» — не понимаю, о чем речь
avatar

Oxy

  • 23 апреля 2015, 11:44
0
у меня сегодня компьютер сломался, в ближайшее время планирую его починить. Я поправлю код. Примерно поняла в чем может быть ошибка. Как поправлю, отпишусь, еще протестируем
avatar

Oxy

  • 23 апреля 2015, 11:12
0
Да мне вообще с заданием не разобраться, тут столько наворочено, да еще таким языком для меня, что я половины не понимаю, а вы пишите не сложно будет :D 
avatar

Oxy

  • 23 апреля 2015, 00:34
+1
Для этого дальше сетка и ставится, чтобы не зависли в просадке. Плюс этот советник закрывает по проценту от эквити. А у вас, кажется в скрипте закрывается по формуле:
сумма прибыли + сумма убытков >= заданной прибыли
avatar

Oxy

  • 23 апреля 2015, 00:32
0
вы можете не одной паре запустить советник несколько раз с разными магиками
avatar

Oxy

  • 23 апреля 2015, 00:24
0
в четверг-пятницу буду программировать вам советник
avatar

Oxy

  • 22 апреля 2015, 22:45