+ Ответить в теме
Страница 1 из 110 1 2 3 11 51 101 ... ПоследняяПоследняя
Показано с 1 по 10 из 1098

Тема: Курс молодого программиста

  1. #1
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Всем привет !

    Как говорит мой папа, "чтобы учить не обязательно знать", а, поскольку он проработал учителем лет сорок, то я склонен ему верить.

    Целью данного курса является научить человека программингу с нуля и до уровня "дальше сам". Курс будет проведен в виде лабораторных работ, после чего, всякий, кто их пройдет, ну если по аналогии с врачом, почку пересадить конечно не сможет, но вырвать гланды, пусть даже и через зад, сможет точно.

    Каждое занятие займет мало времени, но нужно обязательно не просто прочитать, а сделать это своими руками - что делал сам, то не забудешь. Кто чего не поймет, можно спрашивать в этой же ветке, до следующего занятия, потом всю воду из ветки уберу и будет людям на будущее полезная веСч.

    Отдельно хочу отметить, что целью является научить чела разбираться самому, а не готовые ответы на разные вопросы, не имеющие отношения к текущей теме.

  2. 7 пользователя(ей) сказали cпасибо:
    Freemax (02.12.2011) fxlos (27.01.2013) Limita (28.10.2013) Nigeko (08.01.2013) RDEM (24.06.2012) tasia (22.05.2013) vehbr22 (17.02.2015)
  3. #2
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Итак, начнем.

    Занятие первое.

    MQL - язык программирования. Не страшный. Сейчас увидите сами.

    В терминале справа от кнопки "новый ордер" есть желтая кнопка, на которой нарисован восклицательный знак. Нажмите ее.
    То, что открылось, называется "Метаэдитор", то бишь редактор, в котором мы и будем делать советник или что нам будет нужно.

    Теперь работаем по пунктам далее :

    1. Вверху жмем "файл" - "создать" - "советник" - придумали название - "готово".
    В отрывшемся окне удалим все, кроме этого :
    CODE
    int start()
    {
    //----

    //----
    return(0);
    }
    Все кроме этого нам не нужно и будет только отвлекать.

    Идем дальше. Что такое советник ? Это такая штука (набор кода), которая срабатывает каждый тик. Есть тик - срабатывает, нету тика - сидит тихо.
    Последний раз редактировалось славик; 23.01.2011 в 13:46.

  4. 2 пользователя(ей) сказали cпасибо:
    Nigeko (08.01.2013) Tatarin89 (22.06.2013)
  5. #3
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Если "на пальцах" все очень просто :

    слово "start", само собой, обозначает начало советника и слово "return(0)" в конце обозначает его конец, то есть тут все возвращается опять в начало и ждет очередного тика.

    Между этими началом и концом должна быть середина. В середине мы и пропишем, что нам нужно от советника.

    Итак, в середине мы пишем :

    Alert("куку");

    В итоге получили код советника :
    CODE
    int start()
    {



    Alert("куку");



    return(0);
    }
    Теперь полученный код нужно скомпилировать (вверху кнопочка "компилировать").

    После компиляции получаем готовое изделие. Делаем, вешаем на график, смотрим как работает, что делает. Не забудьте в настройках разрешить эксперту работать (сервис-настройки-советники) а также отжать кнопку "советники" на верхней панели терминала. Если советник загружен как нужно, в правом верхнем углу графика появится улыбающаяся рожица.
    Да,забыл сказать,как вешать эксперта на график : вид-навигатор-советники-ваш советник - два щелчка по нему или потащить его мышкой на график.
    На сегодня хватит, а теперь вопросы у кого ничего не получилось.
    Последний раз редактировалось славик; 23.01.2011 в 13:47.

  6. 2 пользователя(ей) сказали cпасибо:
    fxlos (27.01.2013) Nigeko (08.01.2013)
  7. #4
    Постоялец Гулящий на пути к лучшему Аватар для Гулящий
    Регистрация
    05.11.2008
    Адрес
    Край Вселенной
    Сообщений
    1,122
    Сказал(а) спасибо
    38
    Поблагодарили 46 раз(а)
    Репутация:
    20
    Всем привет !

    ...но вырвать гланды, пусть даже и через зад, сможет точно.
    +100 ... Улыбнуло от души...
    Последний раз редактировалось славик; 23.01.2011 в 13:50.

  8. #5
    Бывалый ForexTools пока не определено
    Регистрация
    14.12.2008
    Сообщений
    309
    Сказал(а) спасибо
    0
    Поблагодарили 14 раз(а)
    Репутация:
    2
    Это такая штука (набор кода), которая срабатывает каждый тик. Есть тик - срабатывает, нету тика - сидит тихо.
    Но не забывайте: если вы в своем эксперте будете что-то очень-очень-очень долго вычислять, то приход нового тика, прервет ваши вычисления в момент своего прихода, и все результаты долгих вычислений будут утеряны, а эксперт начнет все вычисления с самого начала но уже для новых значений котировок
    Последний раз редактировалось славик; 23.01.2011 в 13:50.
    Комплексный набор инструментов трейдера - forextools.com.ua

  9. #6
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Всем привет !
    Продолжим, занятие № 2.

    Сегодня изучим сравнение и кое-что еще. Что такое сравнение ? Ну всем известно, что вся фигня, которая существует в природе имеет разные размеры ( цвет, скорость и т.п.).

    Ну значки сравнения всем известны из школы. В языке MQL это выглядит аналогично.

    CODE

    if (A > В) //- если А больше, чем Б

    if (A >= В) //- если А больше или равно Б

    if (A == В) //- если А равно Б

    if (A != В) //- если А не равно Б
    нерусское слово "if" обозначает если. Скобки нужны согласно правописанию языка.

    Теперь применим это в деле. Берем нашего эксперта из 1-го занятия (кто не делал, тот не знает, что он у нас делает ). Впишем в него что-нить для сравнения каких-нить ерундовин. Примерно вот так :
    CODE
    int start()
    {


    if (A > Bid)
    Alert("куку");



    return(0);
    }
    В переводе на русский язык это звучит примерно так : если А больше, чем Bid ( бид это меньшая цена из бид-аск инструмента), то экперт выполняет свою работу. В чем она заключается, тем, кто не делал задание мы не говорим .

    Компилируем полученный код.......................
    При компиляции имеем сообщение об ошибке : "A" - variable not defined.
    По-русски это значить "переменная А не определена".

    Тогда мы берем и ЗАДАЕМ ЕЕ В настройках эксперта до слова "start()".
    Вот так (возможны варианты) :

    extern int A = 34; // переменная А - целое число, она равна 34
    extern double A = 1.2345; // переменная А - не целое число, она равна 1.2345

    extern string А = "лабуда" // переменная А - текст, например название инструмента или комментарий

    Тут нужно быть внимательным, если мы напишем вот так :
    extern int A = 1.2345; то эксперт будет расценивать переменную А как ЦЕЛОЕ число, то есть для него это будет вовсе не 1,2345, а целое число 1, до которого он это дело без разрешения округлит. Чтобы так не случилось, думать должны МЫ при задании типа переменной (ведь у эксперта моск отсутствует ).

    Итак, зададим переменную A, скомпилируем код и запустим эксперта на график.
    CODE
    extern double A = 1.2534; // - здесь не запятая,а точка - таков язык...

    int start()
    {


    if (A > Bid) // если А больше, чем Бид
    Alert("куку");


    return(0);
    }

    Проверяем в работе. Что делает наш эксперт ?
    Когда заданное нами значение А больше цены ( больше чем бид ) эксперт неутомимо делает свою работу. Когда цена пошла вверх и стала больше, чем А, следовательно условие if (A > Bid) больше не выполняется, эксперт не делает свою работу.
    Ведь эксперт на то и нужен, если что-то больше чего-то продавать, если что-то меньше того-то, закрывать, не так ли ? Наш эксперт пока ничего не продает , так как он простейший. Не все сразу.
    Дополнительная инфа : когда нам нужно написать комментарии в коде, а нужно приучаться всегда это делать, делаем это после двух косых чертей, например :

    // если А больше, чем Бид

    все что написано после двух косых чертей - это чисто для нас, эксперт этого не видит и ему это не надо.
    Пробуем, спрашиваем, если что.
    Последний раз редактировалось славик; 23.01.2011 в 13:53.

  10. Пользователь сказал cпасибо:
    Nigeko (08.01.2013)
  11. #7
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    При компиляции выдаёт ошибку :bid-переменная не определена.
    Также задал bid ,всё скомпилировалось, и даже на графике сработало.
    extern double A =1.3315;
    extern double bid = 1.3310;
    int start()
    {
    if (A > bid)
    Alert ("kyky");

    return(0);
    }

    Правильно-ли ??? Пара eur/usd.
    Ну и правильно и нет ...
    Ты просто задал вторую переменную "bid", а у меня в коде была цена "Bid". Найди два отличия ...
    Последний раз редактировалось славик; 23.01.2011 в 13:53.

  12. #8
    федя
    Регистрация
    26.10.2006
    Сообщений
    6
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а)
    Репутация:
    0
    Ошибку нашёл!!!

    Понял так что " Бид" с большой буквы окрашивается в красный цвет и советник сам находит его значение на графике.

    Большое спасибо.

  13. #9
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Всем привет !

    Занятие № 3.

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

    Итак мы изучим :
    1. Как сделать, чтобы советник реагировал на два-три условия.
    2. Как сделать, чтобы код исполнялся однократно, а не каждый тик.
    3. Где искать помощи.

  14. Пользователь сказал cпасибо:
    Nigeko (08.01.2013)
  15. #10
    Специалист MQL К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек К.Моржов как роза среди колючек Аватар для К.Моржов
    Регистрация
    28.08.2008
    Сообщений
    10,914
    Сказал(а) спасибо
    794
    Поблагодарили 2,135 раз(а)
    Репутация:
    316
    Итак, значки сравнения мы уже знаем. Однако в реальном советнике редко бывает условие, если, то...
    Зачастую нужно отслеживать много условий сразу, например, "если цена стала выше МА, но ниже заданного значения 1,3700 а время по терминалу больше или равно 11 часов, покупаем!" и т.п. Как это сделать ?

    Для этого существуют значки "и" вот так он выглядит : &&

    а также значок "или", выглядит вот так : ||

    При помощи них мы можем задавать несколько условий, например :
    CODE
    extern double A = 1.3500;
    extern double B = 1.2534;

    int start()
    {

    if ( Bid < A || Bid > B )
    Alert("куку");

    return(0);
    }
    Здесь стоит значок "или" и советник в данном случае работает, когда цена (Bid) ниже значения А или выше значения В.


    Рассмотрим второй пример :

    CODE
    extern double A = 1.3500;
    extern int H = 11;

    int start()
    {

    if ( Bid < A && Hour() >= H )
    Alert("куку");

    return(0);
    }

    В данном примере Hour() есть текущее время сервера - час, например в 11 по терминальному времени значение Hour() равно одиннадцати, в 12 часов - двенадцати и т.д. Приведенное в примере условие в переводе на русский язык означает :
    "если цена ниже заданного значения А и время больше или равно 11-ти часов, эксперт делает свою работу". Если же одно или оба условия не выполнены, не делает.
    Последний раз редактировалось славик; 23.01.2011 в 13:55.

  16. 4 пользователя(ей) сказали cпасибо:
    Nigeko (08.01.2013) RDEM (24.06.2012) skripA (28.11.2012) Tatarin89 (22.06.2013)
+ Ответить в теме
Страница 1 из 110 1 2 3 11 51 101 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

     

Ваши права

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