Перейти к содержимому


Фотография
* * * * * 11 Голосов

Напишу советник/скрипт/индикатор на MQL4 бесплатно

очно нужно в индикатор постав

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2259

#3280603 AntFX

AntFX

    Трейдер-программист

  •  
  •  
  • 23 249 сообщений
  • 8 записей в блоге
  • Регистрация: 13 Июн 2008
  • ГородСанкт-Петербург

Отправлено 10 Октябрь 2013 - 18:55

Данная ветка предназначена для тех, кто ищет помощи специалистов в реализации своих торговых идей для терминала MetaTrader, а также для специалистов MQL, готовых воплощать интересные идеи трейдеров на безвозмездной основе.

Вот рекомендации, которым нужно следовать:

  • Идея торговой системы/индикатора/скрипта должна быть полностью описана Вами в сообщении.
  • Выкладывать декомпилированный код запрещено.
  • Программы, изготавливаемые по публичным заданиям, должны выкладываться с открытым кодом.
  • Конфиденциальность гарантируется только при заказе советника за деньги. Самым надежным способом заказа советника является сервис "Работа" от компании MetaQuotes. В этом разделе форума запрещено оставлять объявления о заказе или выполнении работ по написанию советников. Для этого используйте раздел "Реклама".
  • Если кого-либо из программистов заинтересует Ваша идея, или он просто захочет помочь, то займется написанием. Отсутствие ответов означает, что Ваша идея никого пока не заинтересовала. Повторять пост с просьбой в этом случае не нужно.

Сообщение отредактировал AntFX: 16 Январь 2017 - 05:55

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.


#2 Andy Tacker

Andy Tacker

    Завсегдатай

  •  
  •  
  • 635 сообщений
  • Регистрация: 01 Фев 2011
  • ГородНовосибирск

Отправлено 11 Октябрь 2013 - 21:58

для alexvv: "Но функцию открытия ордеров, видимо, придется изобретать..."
мне в этом разделе с ф-цией открытия ордеров по рынку пару лет назад уже помогли мужики. за это им всем огромная благодарность! перечислять по именам не стану - они сами знают...
так вот, я эту ф-цию выложу здесь лично для тебя и остальных с чьей-то(не помню) обработкой ошибок:
extern string __T__ = "включение=1, выключение=0, советника";  
 extern int    TRADE = 1; // работа: 1 - РАЗР., 0 - ЗАПР.
string WEN; 
//+------------------------------------------------------------------+                 
//+------------------------------------------------------------------+
//|                         ИНИЦИАЛИЗАЦИЯ                            |
//+------------------------------------------------------------------+
 int init() { PlaySound("alert2.wav"); 
 WEN=WindowExpertName();    
 GlobalVariableSet(WEN+" "+Symbol(),0); 
 Sleep(1000); Alert(WEN," ",Symbol()," ГОТОВ"); return(0); }
//+------------------------------------------------------------------+ 
//+------------------------------------------------------------------+
//|                 ВЫСТАВЛЕНИЕ ПОЗИЦИЙ СЭЛ                          |
//+------------------------------------------------------------------+  
 void OPEN_S() { while(true) { if(TRADE==0) break; RefreshRates();  
 int ticket=OrderSend(Symbol(),1,LOT(1),Bid,3,0,0,WEN+" СЭЛ",MAG_S,0,Red);
//-------------------------------------------------------------------+   
 if(ticket<0) { RefreshRates(); int error=ErrorBlock(GetLastError()); 
 if(error==3) { Alert(Symbol()," отмена СЭЛ"); MesBox(); break; } else 
 if(error==2) { Alert(Symbol()," отмена СЭЛ ",LOT(1)); break; } else  
 if(error==1) { Alert(Symbol()," повтор СЭЛ ",LOT(1)); Sleep(3000); 
 RefreshRates(); }} else { PlaySound("ok.wav"); break; }}}
//+------------------------------------------------------------------+ 
//+------------------------------------------------------------------+
//|                 ВЫСТАВЛЕНИЕ ПОЗИЦИЙ БАЙ                          |
//+------------------------------------------------------------------+        
 void OPEN_B() { while(true) { if(TRADE==0) break; RefreshRates();  
 int ticket=OrderSend(Symbol(),0,LOT(0),Ask,3,0,0,WEN+" БАЙ",MAG_B,0,Blue);
//-------------------------------------------------------------------+ 
 if(ticket<0) { RefreshRates(); int error=ErrorBlock(GetLastError()); 
 if(error==3) { Alert(Symbol()," отмена БАЙ"); MesBox(); break; } else 
 if(error==2) { Alert(Symbol()," отмена БАЙ ",LOT(0)); break; } else 
 if(error==1) { Alert(Symbol()," повтор БАЙ ",LOT(0)); Sleep(3000); 
 RefreshRates(); }} else { PlaySound("ok.wav"); break; }}}
//+------------------------------------------------------------------+   
//+------------------------------------------------------------------+
//|         БЛОКИРОВКА СОВЕТНИКА ПО РЕЗУЛЬТАТУ ОШИБКИ                |
//+------------------------------------------------------------------+
 void MesBox() { int ret=MessageBox(StringConcatenate(
 "ошибка!!!","\nНеобходимо прекратить все попытки торговых операций.",
 "\nОтключить эксперта ",WindowExpertName()," до устранения ошибки?",
 MB_OK|MB_ICONERROR)); if(ret==IDOK) TRADE=0; }
//+------------------------------------------------------------------+
работает как часики. стоит у меня на реалах. лишнее сами убирайте. недостающее сами вписывайте.:agree:

Сообщение отредактировал Andy Tacker: 11 Октябрь 2013 - 22:23

  • 0
:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

#3 Andy Tacker

Andy Tacker

    Завсегдатай

  •  
  •  
  • 635 сообщений
  • Регистрация: 01 Фев 2011
  • ГородНовосибирск

Отправлено 11 Октябрь 2013 - 22:22

а вот сама ф-ция(в один пост не влезло) обработки ошибок:
//+------------------------------------------------------------------+
//|                       БЛОК ОБРАБОТКИ ОШИБОК                      |
//+------------------------------------------------------------------+ 
 int ErrorBlock(int error) { switch(error) {
 case    0: { Alert("0 операция прошла успешно");       return(0); }
 case    1: { Alert("1 попытка изменить знач.теми же"); return(2); }
 case    2: { Alert("2 Общая ошибка");                  return(2); }
 case    3: { Alert("3 переданы неправильные парам. "); return(3); }
 case    4: { Alert("4 Торговый сервер занят");         return(1); }
 case    5: { Alert("5 Старая версия терминала");       return(3); }
 case    6: { Alert("6 Нет связи с торговым сервером"); return(2); }
 case    7: { Alert("7 Недостаточно прав");             return(3); }
 case    8: { Alert("8 Слишком частые запросы");        return(2); }
 case    9: { Alert("9 Недопустимая операция");         return(3); }
 case   64: { Alert("64 Счет заблокирован");            return(3); }
 case   65: { Alert("65 Неправильный номер счета");     return(3); }
 case  128: { Alert("128 Истекло ожид.соверш.сделки");  return(1); }
 case  129: { Alert("129 неверная, ненормализов.цена"); return(1); }
 case  130: { Alert("130 Слишком близкие стопы");       return(2); }
 case  131: { Alert("131 ошибка в грануляции объема");  return(2); }
 case  132: { Alert("132 Рынок закрыт");                return(2); }
 case  133: { Alert("133 Торговля запрещена");          return(3); }
 case  134: { Alert("134 мало денег для операции");     return(2); }
 case  135: { Alert("135 Цена резко изменилась");       return(1); }
 case  136: { Alert("136 отсутствуют котировки цен");   return(1); }
 case  137: { Alert("137 диллерский центр занят");      return(1); }
 case  138: { Alert("138 Запрошенная цена устарела");   return(1); }
 case  139: { Alert("139 Ордер уже обрабатывается");    return(2); }
 case  140: { Alert("140 Разрешена только покупка");    return(2); }
 case  141: { Alert("141 Слишком много запросов");      return(2); }
 case  142: { Alert("142 Ордер поставлен в очередь");   return(2); }
 case  143: { Alert("143 Ордер принят к исполнению");   return(2); }
 case  144: { Alert("144 Ордер аннулирован клиентом");  return(2); }
 case  145: { Alert("145 Модификация запрещена");       return(2); }
 case  146: { Alert("146 Подсистема торговли занята");  return(1); }
 case  147: { Alert("147 дата истечения запрещена");    return(2); }
 case  148: { Alert("148 Колич. орд. достигло пред.");  return(2); }
 case  149: { Alert("149 хеджирование запрещено");      return(2); }
//+------------------------------------------------------------------+ 
 case 4000: { Alert("0 нет ошибки, но рез.неизвестен"); return(0); }
 case 4001: { Alert("4001 Неправильный указат. ф-ции"); return(3); }
 case 4002: { Alert("4002 Индекс масс. вне диапазона"); return(3); }
 case 4003: { Alert("4003 Нет памяти для стека ф-ий");  return(3); }
 case 4004: { Alert("4004 Переполнен стек после выз."); return(3); }
 case 4005: { Alert("4005 нет пам. для перед. парам."); return(3); }
 case 4006: { Alert("4006 Нет пам. для строк. парам."); return(3); }
 case 4007: { Alert("4007 Нет пам. для времен.строки"); return(3); }
 case 4008: { Alert("4008 Неинициализир. строка");      return(3); }
 case 4009: { Alert("4009 Неинициализир.стр. в масс."); return(3); }
 case 4010: { Alert("4010 Нет памяти для строк.масс."); return(3); }
 case 4011: { Alert("4011 Слишком длинная строка");     return(3); }
 case 4012: { Alert("4012 Остаток от деления на ноль"); return(3); }
 case 4013: { Alert("4013 Деление на ноль");            return(3); }
 case 4014: { Alert("4014 Неизвестная команда");        return(3); }
 case 4015: { Alert("4015 Неправильный переход");       return(3); }
 case 4016: { Alert("4016 Неинициализированный масс."); return(3); }
 case 4017: { Alert("4017 Вызовы DLL не разрешены");    return(3); }
 case 4018: { Alert("4018 Невозможно загр.библиотеку"); return(3); }
 case 4019: { Alert("4019 Невозможно вызвать функцию"); return(3); }
 case 4020: { Alert("4020 Вызовы внешн.ф-ций запрещ."); return(3); }
 case 4021: { Alert("4021 мало памяти для строки");     return(3); }
 case 4022: { Alert("4022 Система занята");             return(3); }
 case 4050: { Alert("4050 неверное кол. парам. ф-ции"); return(3); }
 case 4051: { Alert("4051 неверное знач.парам.ф-ции");  return(3); }
 case 4052: { Alert("4052 Внутр. ошибка строк. ф-ции"); return(3); }
 case 4053: { Alert("4053 Ошибка массива");             return(3); }
 case 4054: { Alert("4054 Неправ.исп.масс.-таймсерии"); return(3); }
 case 4055: { Alert("4055 Ошибка пользоват. индюка");   return(3); }
 case 4056: { Alert("4056 Массивы несовместимы");       return(3); }
 case 4057: { Alert("4057 Ошибка обраб.глоб.перемен."); return(3); }
 case 4058: { Alert("4058 Глоб. перемен. не обнаруж."); return(3); }
 case 4059: { Alert("4059 Ф-ция запрещ. в тест. реж."); return(3); }
 case 4060: { Alert("4060 Функция не разрешена");       return(3); }
 case 4061: { Alert("4061 Ошибка отправки почты");      return(3); }
 case 4062: { Alert("4062 Ожид-ся парам. типа string"); return(3); }
 case 4063: { Alert("4063 Ожид. парам. типа integer");  return(3); }
 case 4064: { Alert("4064 Ожид. парам. типа double");   return(3); }
 case 4065: { Alert("4065 В кач. парам. ожид. массив"); return(3); }
 case 4066: { Alert("4066 данные в сост. обновления");  return(3); }
 case 4067: { Alert("4067 Ошибка торговой операции");   return(3); }
 case 4099: { Alert("4099 Конец файла");                return(3); }
 case 4100: { Alert("4100 Ошибка при работе с файлом"); return(3); }
 case 4101: { Alert("4101 Неправильное имя файла");     return(3); }
 case 4102: { Alert("4102 Слишком много откр. файлов"); return(3); }
 case 4103: { Alert("4103 Невозможно открыть файл");    return(3); }
 case 4104: { Alert("4104 Несовмес.реж.дост. к файлу"); return(3); }
 case 4105: { Alert("4105 Ни один ордер не выбран");    return(3); }
 case 4106: { Alert("4106 Неизвестный символ");         return(3); }
 case 4107: { Alert("4107 неверный параметр функции");  return(3); }
 case 4108: { Alert("4108 Неверный номер тикета");      return(3); }
 case 4109: { Alert("4109 Разрешить роботу торговать"); return(3); }
 case 4110: { Alert("4110 Длинные позиции запрещены");  return(3); }
 case 4111: { Alert("4111 Короткие позиции запрещены"); return(3); }
 case 4200: { Alert("4200 Объект уже существует");      return(3); }
 case 4201: { Alert("4201 неизв. свойство объекта");    return(3); }
 case 4202: { Alert("4202 Объект не существует");       return(3); }
 case 4203: { Alert("4203 Неизвестный тип объекта");    return(3); }
 case 4204: { Alert("4204 Нет имени объекта");          return(3); }
 case 4205: { Alert("4205 Ошибка координат объекта");   return(3); }
 case 4206: { Alert("4206 Не найдено указанное окно");  return(3); }
 case 4207: { Alert("4207 Ошибка работы с объектом");   return(3); }
 default:   { Alert("Неизвестная ошибка: ",error);      return(0); }}}
//+------------------------------------------------------------------+
надеюсь кому-то поможет...:agree:
  • 0
:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

#4 nyxl44

nyxl44

    Я тут не случайно

  •  
  •  
  • 28 сообщений
  • Регистрация: 12 Сен 2013

Отправлено 16 Октябрь 2013 - 15:47

можете написать советник?
цена пересекла ma появился фрактал, советник ставит отложенный ордер выше max(min) бара, в настройках советника желательно чтобы были стоп, тейк и трал.

спасибо!

Сообщение отредактировал nyxl44: 16 Октябрь 2013 - 16:29

  • 0

#5 conn

conn

    Я тут случайно

  •  
  •  
  • 1 сообщений
  • Регистрация: 19 Окт 2013

Отправлено 19 Октябрь 2013 - 13:09

 

Уважаемые программисты, сделайте пожалуйста советник по данному индикатору. все просто гистограмма синего цвета - открывает сделку на BUY и наоборот гистограмма красного цвета - открывает сделку на SELL, но после закрытие свечи т.е не на нулевом баре. Чтобы была возможность ставить советник на любые пары, на любой таймфрейм и задать лот. Индикатор прикрепляю, он не рисует закрытие бары. Заранее благодарен!

Прикрепленные файлы

  • Прикрепленный файл  1.png   54,96К   272 скачиваний

Сообщение отредактировал AntFX: 18 Ноябрь 2014 - 12:56
удален декомпил

  • 1

#6 Scripter

Scripter

    Я тут не случайно

  •  
  •  
  • 49 сообщений
  • Регистрация: 19 Окт 2010

Отправлено 21 Октябрь 2013 - 21:48

Нужна помощь в написании индикатора. Смысл заключается в том, чтобы с каждого таймфрейма брать по 1 последнему бару то есть по текущему и выводить это всё в одно отдельное окно, по задумке выводиться в окне бары должны не графиком и не гистограммой а в процентном соотношении цены открытия и закрытия бара к верхней и нижним максимумам этого же бара.
  • 0

#7 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 21 Октябрь 2013 - 23:21

Нужна помощь в написании индикатора. Смысл заключается в том, чтобы с каждого таймфрейма брать по 1 последнему бару то есть по текущему и выводить это всё в одно отдельное окно, по задумке выводиться в окне бары должны не графиком и не гистограммой а в процентном соотношении цены открытия и закрытия бара к верхней и нижним максимумам этого же бара.

На самом деле я недавно использовал эти показатели в одной программе, только в несколько другом определении: Процент открытия - отношение цены открытия к размеру свечи: Open%=(High-Open)/(High-Low). Процент закрытия - отношение цены закрытия к размеру свечи: Close%=(High-Close)/(High-Low). Вот в таком варианте прилагаю ваш индикатор. Если нужен другой формат показателей, приведите точную формулу их расчета.
Прикрепленный файл  iopenclosetf.jpg   38,13К   1776 скачиваний

Прикрепленные файлы


Сообщение отредактировал AntFX: 21 Октябрь 2013 - 23:28

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.


#8 Scripter

Scripter

    Я тут не случайно

  •  
  •  
  • 49 сообщений
  • Регистрация: 19 Окт 2010

Отправлено 22 Октябрь 2013 - 17:45

На самом деле я недавно использовал эти показатели в одной программе, только в несколько другом определении: Процент открытия - отношение цены открытия к размеру свечи: Open%=(High-Open)/(High-Low). Процент закрытия - отношение цены закрытия к размеру свечи: Close%=(High-Close)/(High-Low). Вот в таком варианте прилагаю ваш индикатор. Если нужен другой формат показателей, приведите точную формулу их расчета.
[ATTACH]243855[/ATTACH]


Да это наверное то что надо, только почему то ничего не рисует, пустое поле в окне индикатора.

Сообщение отредактировал AntFX: 22 Октябрь 2013 - 18:06

  • 0

#9 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 22 Октябрь 2013 - 18:06

Должно выглядеть так, как в моем скриншоте. Если не показывает, посмотрите сообщения в журнале экспертов, нет ли там ошибок.
  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.


#10 Scripter

Scripter

    Я тут не случайно

  •  
  •  
  • 49 сообщений
  • Регистрация: 19 Окт 2010

Отправлено 22 Октябрь 2013 - 18:22

Должно выглядеть так, как в моем скриншоте. Если не показывает, посмотрите сообщения в журнале экспертов, нет ли там ошибок.


Спасибо, это то что я просил.
  • 0

#11 Rustem65

Rustem65

    Я тут случайно

  •  
  •  
  • 13 сообщений
  • Регистрация: 12 Дек 2010
  • ГородТашкент

Отправлено 22 Октябрь 2013 - 22:23

Здравствуйте.
Можно ли написать индикатор типа Zig-zag, но чтобы отрисовывалась по пробою максимумов за N дней?
  • 0

#12 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 22 Октябрь 2013 - 22:26

Здравствуйте.
Можно ли написать индикатор типа Zig-zag, но чтобы отрисовывалась по пробою максимумов за N дней?


Советую ознакомиться с коллекцией ЗигЗагов в codebase. Какой-нибудь должен подойти.
  • -1

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.


#13 Rustem65

Rustem65

    Я тут случайно

  •  
  •  
  • 13 сообщений
  • Регистрация: 12 Дек 2010
  • ГородТашкент

Отправлено 22 Октябрь 2013 - 22:50

Советую ознакомиться с коллекцией ЗигЗагов в codebase. Какой-нибудь должен подойти.


Увы! Не подходят. Мне нужно именно по пробою максимумов и минимумов за N дней, а такого там нет.
  • 0

#14 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 22 Октябрь 2013 - 22:58

Увы! Не подходят. Мне нужно именно по пробою максимумов и минимумов за N дней, а такого там нет.


Индикаторы зигзагового типа одни из самых сложных, так что в рамках этой ветки вряд ли кто-то напишет, увы...
  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.


#15 Rustem65

Rustem65

    Я тут случайно

  •  
  •  
  • 13 сообщений
  • Регистрация: 12 Дек 2010
  • ГородТашкент

Отправлено 22 Октябрь 2013 - 23:01

Индикаторы зигзагового типа одни из самых сложных, так что в рамках этой ветки вряд ли кто-то напишет, увы...

Спасибо, что пытались помочь.
  • 0

#16 kazakov.v

kazakov.v

    Завсегдатай

  •  
  •  
  • 1 188 сообщений
  • Регистрация: 17 Июн 2010

Отправлено 23 Октябрь 2013 - 12:30

Здравствуйте.
Можно ли написать индикатор типа Zig-zag, но чтобы отрисовывалась по пробою максимумов за N дней?


А стандартный чем не нравится?
Бросаешь на D1, первый параметр - N, остальные два =0.
  • -1

#17 Rustem65

Rustem65

    Я тут случайно

  •  
  •  
  • 13 сообщений
  • Регистрация: 12 Дек 2010
  • ГородТашкент

Отправлено 23 Октябрь 2013 - 12:48

А стандартный чем не нравится?
Бросаешь на D1, первый параметр - N, остальные два =0.

Это не совсем то. При таких настройках ZZ рисуется по экстремумам N, а не по пробою N.
Ребята, спасибо за советы, этот вопрос больше не актуален.
  • 1

#18 kazakov.v

kazakov.v

    Завсегдатай

  •  
  •  
  • 1 188 сообщений
  • Регистрация: 17 Июн 2010

Отправлено 23 Октябрь 2013 - 13:02

А, ну тогда можно типа такой фигни использовать:



Стрелками показывает новые экстремумы за Depth баров.
  • 0

#19 nyxl44

nyxl44

    Я тут не случайно

  •  
  •  
  • 28 сообщений
  • Регистрация: 12 Сен 2013

Отправлено 23 Октябрь 2013 - 17:27

Здравствуйте!
Такая система(D1):
1. Цена закрытия сегодня минус 10-дневное скользящее среднее за-
крытия.
2. 10-дневное скользящее среднее сегодня минус 10-дневное сколь-
зящее среднее 10 дней назад.
3. Цена закрытия сегодня минус цена закрытия 40 дней назад.

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

Хотелось бы индикатор показывающий сигнальный бар (свечу) по этому методу.
  • 0

#20 kazakov.v

kazakov.v

    Завсегдатай

  •  
  •  
  • 1 188 сообщений
  • Регистрация: 17 Июн 2010

Отправлено 23 Октябрь 2013 - 17:55

Здравствуйте!
Такая система(D1):
1. Цена закрытия сегодня минус 10-дневное скользящее среднее за-
крытия.
2. 10-дневное скользящее среднее сегодня минус 10-дневное сколь-
зящее среднее 10 дней назад.
3. Цена закрытия сегодня минус цена закрытия 40 дней назад.

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

Хотелось бы индикатор показывающий сигнальный бар (свечу) по этому методу.


Как-то так, примерно:

  • 0




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных