Метод написания простого советника
Страница 1 из 10 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 1 по 10 из 100

Тема: Метод написания простого советника

  1. #1
    Теоретик Аватар для logoped99
    Регистрация
    19.11.2013
    Сообщений
    1,302
    Promo (¢)
    590
    Благодарности
    Получено: 92
    Отправлено: 29

    Метод написания простого советника

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

    Вы не можете благодарить!

  2. #2
    Новичок
    Регистрация
    27.07.2015
    Сообщений
    100
    Promo (¢)
    1,135
    Благодарности
    Получено: 30
    Отправлено: 4
    Я сам так часто программирую. Есть несколько блоков, они ложатся в основу нового советника. Потом по мере необходимости добавляю обработку событий.

    Вы не можете благодарить!

  3. #3
    Теоретик Аватар для logoped99
    Регистрация
    19.11.2013
    Сообщений
    1,302
    Promo (¢)
    590
    Благодарности
    Получено: 92
    Отправлено: 29
    Так я ничего нового не предлагаю, просто есть масса людей, которые боятся начинать программировать, вот я и хочу показать, что это совсем не сложно. Не вдаваясь в подробности Мета Эдитора, как добавить новый советник и прочие мелочи (Об этом можно прочитать в интернете), начну с закрытия открытых ордеров.
    for (int tik=0; tik<OrdersTotal();tik++)
    {
    if(OrderSelect(tik, SELECT_BY_POS)==true)
    {
    int tt=OrderType();
    int tiik=OrderTicket();
    if(tt==4)
    {
    int tk=OrderDelete(tiik,Green);
    }
    if(tt==5)
    {
    int tk=OrderDelete(tiik,Red);
    }
    }
    }

    Вы не можете благодарить!
    Последний раз редактировалось logoped99; 26.08.2015 в 20:08.

  4. #4
    Новичок
    Регистрация
    06.09.2015
    Сообщений
    10
    Promo (¢)
    545
    Благодарности
    Получено: 0
    Отправлено: 0
    я Вам рекомендую просмотреть разные ветки форума - основы программирования довольно стандартны, внутри советников как правило есть описание на русском каждой части алгоритмов. Понимание хотя бы части кода советника, позволяет проверить алгоритм работы советника и оценить качество его написания - т е сложность и соответственно качество

    Вы не можете благодарить!

  5. #5
    Новичок
    Регистрация
    27.07.2015
    Сообщений
    100
    Promo (¢)
    1,135
    Благодарности
    Получено: 30
    Отправлено: 4
    Цитата Сообщение от logoped99 Посмотреть сообщение
    начну с закрытия открытых ордеров
    Думаю, будет нагляднее, если код форматировать. Отступы там и прочее.

    И информативнее и поучительнее, если каждую строчку комментировать.


    Цитата Сообщение от logoped99 Посмотреть сообщение
    if(tt==4)

    Цитата Сообщение от logoped99 Посмотреть сообщение
    f(tt==5)
    Такие записи понятны опытному, но не очевидны новичку.
    Я бы написал:

    if (tt == OP_BUYSTOP) и if (tt == OP_SELLSTOP)

    - - - Добавлено - - -

    Цитата Сообщение от logoped99 Посмотреть сообщение
    int tk=OrderDelete(tiik,Green);
    Эта функция выдает результат типа bool. Будет замечание при компиляции. И какой смысл получать значение результата выполнения функции, если дальше не идет никакая проверка?

    Может следующим блоком напишите функцию закрытия ордера с обработкой всех возможных ошибок?

    - - - Добавлено - - -

    Цитата Сообщение от logoped99 Посмотреть сообщение
    Green
    Цитата Сообщение от logoped99 Посмотреть сообщение
    Red
    Это тоже скомпилируется, но правильнее писать clrGreen, clrRed.

    Просто в следующем обновлении отменят внезапно старое написание констант и советник не будет компилироваться в новом билде.

    Вы не можете благодарить!

  6. #6
    Новичок
    Регистрация
    24.08.2015
    Сообщений
    100
    Promo (¢)
    825
    Благодарности
    Получено: 8
    Отправлено: 3
    Очень интересная тема, жаль никто не поддерживает. Очень интересна тема написания советников, у самого нет опыта, а бесплатных нормальных программ не встречал. Надеюсь в этой ветке форума будет больше полезной информации для новичков.

    Вы не можете благодарить!

  7. #7
    Новичок
    Регистрация
    27.07.2015
    Сообщений
    100
    Promo (¢)
    1,135
    Благодарности
    Получено: 30
    Отправлено: 4

    Функция определения нового бара

    Иногда (да в больше половины случаев) некоторые действия необязательно делать на каждом тике. Достаточно это сделать при открытии каждого бара. В этом поможет такая простая функция
    Код:
    bool NewBar()
    {
       static datetime New_Time = iTime(NULL, PERIOD_CURRENT, 0);
       bool            New_Bar  = False;
    
       if (New_Time != iTime(NULL, PERIOD_CURRENT, 0))
       {
          New_Time = iTime(NULL, PERIOD_CURRENT, 0);
          New_Bar  = True;
          Print("Новый бар открыт в   ", iTime(NULL, PERIOD_CURRENT, 0));
       }
       
    return (New_Bar);
    }
    Теперь в функции OnTick пишем следующий код:

    Код:
    if (NewBar() == True)
    {
       ...
    }
    Вместо многоточия вставляем свой код, который будет выполняться не на каждом тике, а только при открытии нового бара.

    Вы не можете благодарить!
    Последний раз редактировалось Starker; 10.11.2015 в 15:39.

  8. #8
    Новичок
    Регистрация
    27.07.2015
    Сообщений
    100
    Promo (¢)
    1,135
    Благодарности
    Получено: 30
    Отправлено: 4

    Простейшая защита советника от кражи

    Многие трейдеры или сами пишут советники для себя или пользуются услугами программистов. Затем советника устанавливают на VPS или другие серверы. Очевидно, что нужно устанавливать откомпилированный файл с расширением .ех4, чтобы злоумышленники не смогли украсть код. Однако это не защищает от того, что может быть похищен откомпилированный файл и установлен для работы в другом месте без ведома владельца советника. Поэтому всегда необходимо делать привязку советника к брокеру, счету и владельцу.
    Для этого создаем скрипт следующего содержания:
    Код:
    void OnStart()
    {
       Comment(AccountCompany(),
         "\n", AccountNumber(),
         "\n", AccountName());
    }
    В результате выполнения скрипта получим название брокера, номер счета и има владельца счета. Например:
    Roboforex
    1258976
    Ivan Ivanov
    Далее в советнике в самом начале функции OnTick() пишем следующую проверку:
    Код:
    if (AccountCompany() != "Roboforex" ||
        AccountNumber() != 1258976    ||
        AccountName != "Ivan Ivanov") break;
    Теперь в случае перестановки советника на другой счет советник работать просто не будет.

    Вы не можете благодарить!

  9. #9
    g1f3
    Guest
    Цитата Сообщение от Starker Посмотреть сообщение
    Теперь в случае перестановки советника на другой счет советник работать просто не будет.
    Тогда надо осветить методы защиты в случае попытки декомпиляции, что делать, если файл все такие скопирован злоумышленником и его хотят использовать на другом счете.

    Какие методы защиты вы бы предложили. Использование библиотек *. dll, по ряду причин неактуально.

    Вы не можете благодарить!

  10. #10
    Программист Аватар для Azizkin
    Регистрация
    05.02.2013
    Адрес
    Шервудский лес
    Сообщений
    2,922
    Promo (¢)
    250
    Благодарности
    Получено: 2,120
    Отправлено: 3,717
    Цитата Сообщение от g1f3 Посмотреть сообщение
    Тогда надо осветить методы защиты в случае попытки декомпиляции, что делать, если файл все такие скопирован злоумышленником и его хотят использовать на другом счете.
    g1f3, на сегодняшний день взлом кода, скомпилированного на последних версиях метаэдитора, крайне затруднителен. Если он и доступен, то крайне ограниченной группе лиц. Поэтому указанная выше защита от несанкционированного использования вполне самодостаточна.

    Вы не можете благодарить!

Страница 1 из 10 1 2 3 4 5 ... ПоследняяПоследняя

Похожие темы

  1. Метод Jarroo
    от raekwon в разделе Трейдерский клуб Price Action
    Ответов: 592
    Последнее сообщение: 09.09.2018, 14:48
  2. Торговля мажорами, дневник простого трейдера!
    от Leon77 в разделе Архив. Аналитика
    Ответов: 33
    Последнее сообщение: 25.05.2016, 11:12
  3. 2 резидента (проще простого)
    от RDLNEO в разделе Советники с открытым исходным кодом (mq4)
    Ответов: 19
    Последнее сообщение: 07.09.2015, 14:57
  4. Как метод торговли влияет на метод управления капиталом
    от pianistlol в разделе Разговоры о трейдинге
    Ответов: 32
    Последнее сообщение: 22.05.2015, 20:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •