Шаблон для разработки советников - страница 2

 
Vitaly Muzichenko:

Наоборот, замечание очень важное, и очень полезное, и на него нужно реагировать как "Спасибо огромное"

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

У меня кстати тоже бывают такие косяки, напишешь что-то, а через время смотришь, и понимаешь что написал х.ню и начинаешь переделывать. От этого никто не застрахован, не ошибается тот, кто ничего не делает.

Я  не имею ничего против более компактного и совершенного кода. Но можно было бы сделать это в более мягкой, не обидной форме.

Например так: - Ваш код не совершенный, предлагаю более компактный вариант...или это можно сделать проще.

И это для человека было бы не обидно.

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

 
Vasiliy Sokolov:

Очередная порция знатного говнокода. Взял первое попавшее:

Переделал на более простое:

И так во всем.


Спасибо за критику, вы правильно заметили, что написанная функция слишком растянута. Писал я раньше дай боже как поэт :), поэтому и занялся переписыванием шаблона в нормальный вид писать быстрее и показать было не стыдно.

По вашему замечанию есть момент - что имя файла может иметь в себе не одну точку, например имя советника "myAdvisor.V.2.mq4". В итоге вы получите неверный результат.

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

Файлы:
EA_Tempate.mq4  17 kb
 
STARIJ:
Вот еще iCustom

А что делает этот советник? 

 
trader781:

ждем такой же код по смыслу от вас

например интересно пополнить свою коллекцию функциями которых у меня еще нет

Можете показать свой шаблон?

 
Roman Starinskij:

Можете показать свой шаблон?


все то что я хотел написать лежит в ветке помощи новичкам. Не думаю что это вам как то поможет. Разве что могу показать свой сигнал где ращу лосей уже более двух лет

 
Roman Starinskij:

А что делает этот советник? 

это шаблон для написания советников - кое кто им пользуется и весьма успешно
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 ( MQL5 ), среда разработки MetaEditor и...
 

посмотрел Ваши шаблоны ... ну кто как хочет так и др...

Вот вам коды ошибок на русском ... 

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

 

Какая интересная тема. Ребята, помогите вот в каком вопросе. нужен советник, который обрабатывает все эти ошибки и гарантированно выполняет условия открытия и закрытие позиций в соответствии с логикой. Главное это надёжность исполнения. Есть что то подобное??????

 
Mihail Marchukajtes:

Какая интересная тема. Ребята, помогите вот в каком вопросе. нужен советник, который обрабатывает все эти ошибки и гарантированно выполняет условия открытия и закрытие позиций в соответствии с логикой. Главное это надёжность исполнения. Есть что то подобное??????

если выходной, или интернет отключен, или ... то вряд ли можно открыть / закрыть ордер. А в других случаях просто оставляю это до следующего тика

 
Mihail Marchukajtes:

Какая интересная тема. Ребята, помогите вот в каком вопросе. нужен советник, который обрабатывает все эти ошибки и гарантированно выполняет условия открытия и закрытие позиций в соответствии с логикой. Главное это надёжность исполнения. Есть что то подобное??????


что мешает в Ваш советник добавить обработку ошибок и повтор необходимых действий? Просто многие не заморачиваются этим ... ес фо ми так у меня в советниках такое практикуется...

Причина обращения: