Страница 1 из 80 1231151 ... ПоследняяПоследняя
Показано с 1 по 10 из 798

Тема: учимся писать советника

  1. #1
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    учимся писать советника
    При работе на валютном рынке трейдер сталкивается с многочисленными расчетами , кроме того эта работа требует к себе постоянного внимания . Облегчить жизнь трейдеров может советник (робот , атс) . Но работа программистов как правило стоит денег , причем цена растет пропорционально качеству исполнения. Есть вариант написать советника самому и в этой теме я покажу как это проще сделать человеку незнакомому с программированием .
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  2. #2
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    В любой стратегии есть сигнал на вход в рынок и сигнал выхода из него (вместо сигнала выхода могут быть стоплоссы и тейкпрофиты).
    Сигналом на вход в рынок могут быть показания индикатора(или нескольких) , размеры баров, время, отклонения цены от заданного уровня и т.д.
    Вот именно с сигнала мы и начнем писать советника , предлагаю посетителям этой темы описать любой сигнал на вход в рынок . Что бы все было наглядней, сигнал лучше основывать на стандартных индикаторах .
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  3. #3
    Re: учимся писать советника
    Очень классная мысль такую тему расписать. Хотел бы очень научится писать советники. А не лучше начать вообще со всяких возможных значений параметров, точней всяких переменных и констант...или как там, или это не важно?

  4. #4
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    человеку не знакомому с программированием пречисление только типов переменных покажется нудным (не говоря уже о структуре программы и функциях), поэтому я все буду обьяснять по ходу дела
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  5. #5
    Re: учимся писать советника
    хмм...я когда-то учил программирование в школе, так я не представляю как там с переменными... Ну вот давайте допустим разберем самый простой момент... Открываем сделку на пересечении двух МА с заданным периодом...? =) Давайте учиться, я только рад)))

  6. #6
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    открываем MetaEditor (желтый значек в терминале, рядом с кнопкой советники), там файл ___ новый , в выпавшем меню выбираем эксперт , потом вписываем название и нажимаем ок . если все сделали правильно то вы должны увидеть начальный код
    //+------------------------------------------------------------------+
    //| учебный.mq4 |
    //| Copyright © 2011, MetaQuotes Software Corp. |
    //| |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2011, MetaQuotes Software Corp."
    #property link

    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+

    int start()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+


    все что выделенно синим цветом нам пока знать не обязательно, пока мы будем работать только с тем участком который выделен красным
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  7. #7
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    int start() когда в терминал приходит новый тик программа начинается именно с этой строки
    {
    //----
    почти весь прграммный код у нас будет находиться внутри значков отмеченных красным цветом
    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  8. #8
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    первое что необходимо сделать это обьявить переменную . переменная это ячейка памяти в которой будет храниться информация , наглядно ее можно представить в виде коробочки в которую кладутся буквы, цифры , символы. есть несколько типов переменных в зависимости от того какие данные мы будем записывать . переменная обьявляется так :
    int signal=0;
    где int - это тип переменной в которой будут содержаться только целые числа (есть еще double - дробные , string - текст bool - значения "да" или "нет", datetime - время )
    signal - это назавние переменной , его придумываем сами , желательно не очень длинные
    =0 - это значение которое записывается в переменную при ее создании
    ; - означает конец команды
    дальше нам в зависимости от положения скользяших средних нужно записать в эту ячейку (переменную), либо значение 1(при сигнале на повышение) , либо значение (-1) (при сигнале на понижение). 0 будет означать что сигнала нет
    в коде это будет выглядеть так:
    if (
    iMA(symbol(), period(),30, 0 ,MODE_SMA,PRICE_CLOSE, 0) >iMA(symbol(), period(),60, 0 ,MODE_SMA,PRICE_CLOSE, 0)&&
    iMA(symbol(), period(),30, 0 ,MODE_SMA,PRICE_CLOSE,1) <iMA(symbol(), period(),60, 0 ,MODE_SMA,PRICE_CLOSE, 1)
    )
    {
    signal=1;
    }

    if (
    iMA(symbol(), period(),30, 0 ,MODE_SMA,PRICE_CLOSE, 0) <iMA(symbol(), period(),60, 0 ,MODE_SMA,PRICE_CLOSE, 0)&&
    iMA(symbol(), period(),30, 0 ,MODE_SMA,PRICE_CLOSE,1) >iMA(symbol(), period(),60, 0 ,MODE_SMA,PRICE_CLOSE, 1)
    )
    {
    signal=(-1);
    }

    теперь что это все обозначает:
    if - это команда условия (в переводе "если") в чистом виде она выглядит так
    if( )
    { }

    выполняется она следующим образом: если то что записанно внутри круглых скобок - правда, то выполняется то что записанно внутри фигурных скобок , если нет , то выполнение программы продолжится с команды стоящей за фигурными скобками.
    iMA(symbol(), period(),30, 0 ,MODE_SMA,PRICE_CLOSE, 0) - это ячейка памяти в которой хранятся данные об индикаторе MA
    где :
    symbol()- означает что индикатор расчитывается для пары на которой стоит советник , вместо symbol() можно написать например "EURUSD" тогда в ячейке всегда будут содержаться данные о значании индикатора по паре евро/усд (независимо от того на какой паре работает советник)
    period() - означает что индикатор расчитывается для того периода графика , на котором стоит советник если например у нас стоит Н1 то индикатор будет расчитываться для часавого , если мы на графике переключимся на другой период то индикатор будет расчиываться для него , я рекомендую привязывать расчеты к конкретному периоду, для этого вместо period(), можно написать количество минут для одного бара нужного периода , например если мы хотим что бы индикатор всегда расчитывался для пятьнадцатиминутки вместо period() записываем 15, для Н4 записываем 240
    далее 30, 0 ,MODE_SMA,PRICE_CLOSE это настройки индикатора 30 - период усреднения, 0 - сдвиг, MODE_SMA - метод , PRICE_CLOSE к какой цене применять .
    0- означает что мы получаем данные об индикаторе именно с текущего бара , если поставить 1 то будет расчитываться значение прошлого бара 2 позапрошлого и т.д.
    теперь переводим на человеческий язык то что записанно кодом
    если
    (
    текушее значение ма с периодом 30 больше текушего занчения ма с периодом 60 и(в коде "и" пишется &&)
    прошлое значение ма с периодом 30 меньше прошлого значения ма с периодом 60
    )
    {
    записываем в переменную signal значение 1
    }
    теперь у нас при пересечении скользящих средних (быстрая пресекает медленую снизу вверх) в ячейку signal будет записываться значение 1
    анологично с сигналом на понижение .
    если есть вопросы , задавайте
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

  9. #9
    Re: учимся писать советника
    Сложно блин =) нужно вчитываться несколько раз, чтобы что-то понять)))

  10. #10
    Посмотреть профиль Сторожила форума
    Регистрация
    15-12-10
    Сообщений
    930
    Re: учимся писать советника
    могу скинуть учебник по которому сам учился , может там понятней будет
    помощь в написании экспертов
    обучение MQL4
    консультация по скайпу ats_auto

Страница 1 из 80 1231151 ... ПоследняяПоследняя
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
loaded:ok