Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 123 из 123
Первая ... 113 122 Последняя

Показаны сообщения: с 2,441 по 2,453 из 2453

Тема: MQL4 для начинающих

 Перейти в классический вид темы
     
  1. ТОП сообщений
    2018-04-05   07:16
    Лучший ответ #1
    Накопленные выплаты 27108 RUB

    Цитата Сообщение от Viktor1987 Посмотреть сообщение
    у меня такого косяка не получилось,
    проблема происходит на том ТФ где подгрузка истории началась, нужно быстро тудым - сюдым нажать (был на Н1, переключил на Д1 и потом сразу на Н4)
    Цитата Сообщение от Viktor1987 Посмотреть сообщение
    Копай в сторону..
    ну на это всю жизнь можно потратить - проще с нуля свои кнопки написать, ладно может быть на форуме разработчиков поспрашиваю как нибудь
    Цитата Сообщение от Leschich Посмотреть сообщение
    Ох, уж эти классы,- тяжело поддаются изучению... я все по старинке, через функции.
    зря Вы так, я вчера, к примеру, взял о перегрузил операторы == и != чтобы было удобнее логику поиска паттернов видеть
    а на следующей неделе планирую сделать универсальный класс для Ренко - графиков, чтобы любой советник можно было на виртуальном Ренко-графике запустить

    2010-04-26   23:58
    Лучший ответ #2
    Накопленные выплаты 3750 RUB

    Вы должны понять важную вещь. То, что будет написано в MetaEditor'e, - это исходный код. То есть последовательность команд, которую будет выполнять терминал одну за другой сверху вниз. Но терминал не может выполнять исходные коды. Исходный код понятен вам, но не MetaTrader'у. Чтобы исходный код был понятен терминалу, его нужно "перевести" на соответствующий "язык". Чтобы это сделать, нужно нажать на клавишу F5 в MetaEditor'е. После этого будет выполнена компиляция исходного кода в исполняемый файл. Компиляция - это процесс "перевода" исходного кода, написанного вами и понятного вам, в специальный исполняемый файл, который понимает и способен выполнить MetaTrader. Проверьте это сами. Создайте новый скрипт под названием Test1 и сохраните, но не компилируйте. Запустите терминал и, используя Навигатор, зайдите в раздел "Скрипты". Как видно, скрипта с названием Test1 нет:
    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:

    Теперь скомпилируйте скрипт (клавиша F5):
    Опять загляните в терминал. Скрипт Test1 появился:
    Двойной клик на названии скрипта в Навигаторе терминала - и он запускается. Но ничего не происходит, так как скрипт пуст.
    Вы уже должны представлять, на что похож процесс написания скрипта: вы пишете исходный код, компилируете, запускаете скрипт в терминале, смотрите на результат, изменяете исходный код, компилируете, смотрите ... и так - до тех пор, пока не получите нужный результат.

    2010-04-27   23:45
    Лучший ответ #3
    Накопленные выплаты 3750 RUB

    Не пугайтесь. Это очень просто. Смотрите. Допустим, вы хотите запомнить пять цен. Как можно поступить? Ну, можно вот так:

    Код:
    double price1 = 1.2341;
    double price2 = 1.2321; 
    double price3 = 1.2361; 
    double price4 = 1.2411; 
    double price5 = 1.2301;
    У нас получается пять переменных, которые имеют один тип данных и описывают один и тот же параметр - цену. Но можно поступить иначе, используя массив. Массив - это всего лишь серия переменных, которые отличаются между собой индексами, но имеют одно общее название. Посмотрите, как нужно объявлять массив из пяти элементов:
    Код:
    double price[5];
    Общая форма:
    Код:
    (тип массива) (название массива) [количество элементов];
    В нашем случае: тип массива - double, название - price, количество элементов - 5. Давайте посмотрим, как можно обратиться к элементам массива:
    Код:
    double price[5];   // объявляем массив из 5 элементов
    price[0] = 1.2341; // обращаемся к первому элементу массива и 
    // присваиваем ему цену. Обратите внимание 
    // на то, что индекс первого элемента 
    // начинается с 0. Это важная особенность, 
    // к которой нужно привыкнуть. 
    price[1] = 1.2321;  // обращаемся ко второму элементу 
    price[2] = 1.2361;  // и так далее 
    price[3] = 1.2411; 
    price[4] = 1.2301;
    С элементами массива можно проделывать любые операции, как и с обычными переменными. Собственно, элементы массива - и есть обычные переменные:
    Код:
    double price[2];   
    price[0] = 1.2234; 
    price[1] = 1.2421; 
    MessageBox("Middle price is " + (price[0] +
    price[1]) / 2.0,"middle price");
    При объявлении массива можно также присвоить всем элементам начальные значения:
    Код:
    double price[2] = {1.2234, 1.2421};
    Мы просто перечисляем через запятую начальные значения элементов в фигурных скобках. В таком случае вы можете даже не указывать количество элементов, компилятор автоматически вставит нужное значение:
    Код:
    double price[] = {1.2234, 1.2421};
    Это всё, безусловно, очень хорошо, но... К сожалению, бесполезно. Нам нужно как-то добраться до реальных данных! Например, текущих цен, времени, количества свободных денег и так далее.

    2010-04-30   00:35
    Лучший ответ #4
    Накопленные выплаты 3750 RUB

    Итак, Вы узнали много нового. Однако, чтобы детально разобраться в программировании MQL 4 необходимо потратить больше времени, нежели Вы потратили на прочтение данного материла. Поэтому, перечитывайте текст, запоминайте, практикуйтесь и вникайте в суть и тогда Вы сможете на практике применять знания полученные в материалах, посвященных MQL 4. То, что описано в этой статье, - основа всего языка MQL4. Чем лучше Вы освоите этот материал, тем проще Вам будет учиться дальше.
    Учебник «Программирование на алгоритмическом языке MQL4» Скачать

    2010-04-26   23:52
    Лучший ответ #5
    Накопленные выплаты 3750 RUB

    Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли - автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы - самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник - автоматическую торговую систему (торговый робот). Советник может работать круглосуточно без постороннего вмешательства - отслеживать все изменения цен финансовых инструментов, отправлять сообщения по электронной почте, SMS-сообщения на мобильный телефон, а также выполнять множество других полезных действий.
    Основным достоинством прикладных программ является возможность совершать торговые операции в соответствии с алгоритмом, заданным трейдером по своему усмотрению. Любые идеи, которые возможно изложить на языке алгоритмов (пересечение двух скользящих средних или цифровая обработка сигналов, три экрана Элдера или фрактальный анализ Петерса, нейронная сеть или геометрические построения), можно заложить в прикладную программу и затем использовать её в практической торговле.
    Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи - алгоритмы прибыльной торговли.
    Для начала давайте разберемся, что Вы можете делать с помощью этого языка: создать скрипты, пользовательские индикаторы, советники и библиотеки.

    • Скрипты - это последовательности команд, программы, которые выполняются только один раз по вашему запросу. Они могут заменять действия, которые вы выполняете каждый день при торговле. Например, открывать ордера. Они также могут выполнять специфические действия - например, исследовать графики и выводить статистическую информацию.
    • Пользовательские индикаторы - это технические индикаторы, написанные в дополнение к встроенным в терминал индикаторам. Они выводят графики или другую визуальную информацию. В отличие от скриптов, пользовательские индикаторы выполняются при каждом изменении цены, то есть на каждом тике. То, что будут выводить индикаторы, зависит только от вас. Это может быть бесполезный график синуса или что-то, что будет помогать вам ориентироваться в ситуации на рынке. Например, если вы точно знаете, при каких условиях на рынке тренд, а при каких флэт, то это наверняка можно написать в виде индикатора.
    • Советники - это механические торговые системы, которые привязаны к любому финансовому инструменту. Подобно пользовательским индикаторам, советники выполняются при каждом новом тике, но в отличие от первых могут информировать вас о состоянии рынка (например, давать конкретные советы о покупке или продаже) или торговать самостоятельно без вашего участия. Терминал поддерживает тестирование стратегий, что позволяет быстро оценить прибыльность вашего советника. Вы описываете свою стратегию на языке MQL4, а терминал хладнокровно выполняет все ваши указания.
    • Библиотеки - это наборы функций для выполнения специфических задач. Например, один из ваших советников может использовать специальные математические функции для принятия решения о том, когда выполнять покупку, а когда - продажу.
    Для того, чтобы написать обычные скрипты необходимо научиться использовать специальную программу - редактор MetaEditor 4, встроенную в терминал MetaTrader 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или используйте сочетание клавиш Ctrl+N на клавиатуре:
    После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:
    В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:
    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:
    Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.

    2010-04-27   23:28
    Лучший ответ #6
    Накопленные выплаты 3750 RUB

    Что такое переменная? Попробуйте сами ответить на этот вопрос, а я вам помогу. Сколько вам лет? Сколько вам будет лет через пять лет? Теперь смотрите: возраст - это и есть переменная. Возраст изменяется с течением времени, как и любая другая переменная. То есть первая особенность переменной заключается в её изменении с течением времени. Другой пример: какой был ваш рост в пять лет? Очевидно, намного меньше, чем сейчас. Рост - ещё один пример переменной. Но есть важное отличие. Обратите внимание на то, что возраст мы измеряли, используя целые числа. Рост намного удобнее измерять, используя десятичные дроби ("числа с плавающей точкой"). Возраст: 20 лет, 30 лет. Рост: 1,8 метра, 1,95 метра. Это очень важная особенность: каждая переменная относится к определённому типу. Давайте посмотрим, какие еще бывают типы переменных. Вы можете описать числами многие параметры, но как представить текст? Для этого используются специальные типы - строковые. Эти типы переменных хранят только строки.Теперь давайте посмотрим, как можно создать и описать переменную на языке MQL4.

    Код:
    int age = 25;
    Здесь мы объявили переменную целого типа (int - integer - целое число). int - это ключевое слово языка MQL4, которое указывает, что мы используем тип целых чисел. Дальше мы написали age (возраст) - это название переменной, то есть слово, по которому мы будем обращаться к значению, хранящемуся в этой переменной. Затем мы присвоили переменной значение 25, используя символ "=". После каждой инструкции ставится точка с запятой, что мы и сделали. Обратите внимание - объявление и инициализация любой переменной сводятся к такой форме:
    Код:
    [тип переменной] [название переменной] = [значение переменной];
    Кстати, присваивать какое-то значение переменной (совершать инициализацию) необязательно, вы могли бы написать и так:
    Код:
    int age;
    Еще один пример:
    Код:
    double height = 1.95;
    Здесь мы объявляем переменную с названием height (рост), которая хранит значения типа double (число с плавающей запятой, десятичная дробь) и которой мы сразу присваиваем значение 1.95, используя оператор "=".
    Теперь рассмотрим строковую переменную:
    Код:
    string name = "Janet";
    string - тип переменной, name - название переменной, "Janet" - значение переменной. Обратите внимание, что значения для переменной типа string размещаются между двойными кавычками ("). Существует еще один очень полезный тип переменной - bool. Переменные этого типа могут принимать только два значения: либо true (правда), либо false (ложь).
    Код:
    bool trend = false;
    Теперь вам нужно запомнить несколько важных вещей. Язык MQL4 - это регистрозависимый язык, то есть имеет большое значение, ПРОПИСНЫМИ буквами вы пишете код или строчными. Например, если вы объявите несколько переменных с одинаковыми названиями, но разным регистром, то это будут совершенно разные переменные:
    Код:
    double HIGHTPRICE;
    double hightprice;
    double HightPrice;
    double hightPrice;
    Вышеприведённый код создаст четыре совершенно разных переменных. Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами.
    Следующий пример:
    Код:
    DOUBLE hightPrice1; 
    Double hightPrice2;
    Вышеприведённый код работать не будет, потому что слово double не будет воспринято как ключевое слово языка MQL4. Ещё один важный момент заключается в том, что названия переменных не могут начинаться с цифр или специальных знаков (*,&, ,%,$). Например:
    Код:
    double 1price;
    double %price;
    Ещё один элемент языка - комментарии. Если вы напишете "//" перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться. Например:
    Код:
    // this is a comment
    // это комментарий
    Теперь вы должны заметить, что код пустого скрипта включает в себя много комментариев, которые несут информативный характер. Комментируйте свой код, иногда это может сэкономить вам много времени.

  2. линк#2441
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Накопленные выплаты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:   439
    в 223 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли - автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы - самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник - автоматическую торговую систему (торговый робот). Советник может работать круглосуточно без постороннего вмешательства - отслеживать все изменения цен финансовых инструментов, отправлять сообщения по электронной почте, SMS-сообщения на мобильный телефон, а также выполнять множество других полезных действий.

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

    Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи - алгоритмы прибыльной торговли.

    Для начала давайте разберемся, что Вы можете делать с помощью этого языка: создать скрипты, пользовательские индикаторы, советники и библиотеки.
    • Скрипты - это последовательности команд, программы, которые выполняются только один раз по вашему запросу. Они могут заменять действия, которые вы выполняете каждый день при торговле. Например, открывать ордера. Они также могут выполнять специфические действия - например, исследовать графики и выводить статистическую информацию.
    • Пользовательские индикаторы - это технические индикаторы, написанные в дополнение к встроенным в терминал индикаторам. Они выводят графики или другую визуальную информацию. В отличие от скриптов, пользовательские индикаторы выполняются при каждом изменении цены, то есть на каждом тике. То, что будут выводить индикаторы, зависит только от вас. Это может быть бесполезный график синуса или что-то, что будет помогать вам ориентироваться в ситуации на рынке. Например, если вы точно знаете, при каких условиях на рынке тренд, а при каких флэт, то это наверняка можно написать в виде индикатора.
    • Советники - это механические торговые системы, которые привязаны к любому финансовому инструменту. Подобно пользовательским индикаторам, советники выполняются при каждом новом тике, но в отличие от первых могут информировать вас о состоянии рынка (например, давать конкретные советы о покупке или продаже) или торговать самостоятельно без вашего участия. Терминал поддерживает тестирование стратегий, что позволяет быстро оценить прибыльность вашего советника. Вы описываете свою стратегию на языке MQL4, а терминал хладнокровно выполняет все ваши указания.
    • Библиотеки - это наборы функций для выполнения специфических задач. Например, один из ваших советников может использовать специальные математические функции для принятия решения о том, когда выполнять покупку, а когда - продажу.

    Для того, чтобы написать обычные скрипты необходимо научиться использовать специальную программу - редактор MetaEditor 4, встроенную в терминал MetaTrader 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или используйте сочетание клавиш Ctrl+N на клавиатуре:






    После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:






    В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:






    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:






    Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.


  3. post_thanks Получено лайков: 11

    big-fan (27.03.2018), Djvanmukta (05.01.2016), Epiharia (03.10.2013), Forewoman (24.01.2011), ipb (06.12.2010), ogarew2009 (08.04.2012), polkiloqq (23.02.2012), Smont (09.05.2013), Trendsistem (09.06.2012), voinG (13.01.2020), ораз (31.05.2012)

  4. линк#2447
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Получается, что данное свойство включает/выключает режим крутой проверки ошибок. Но ведь выключение режима нелогично, по моему.
    Чтоб рассуждать о логичности или нелогичности чего либо желательно хорошо знать предмет рассуждений. Вот если бы вы еще прошли по ссылке "см. Обновленный MQL4" из вашей цитаты, то поняли бы, что раньше MQL4 допускал намного больше вольностей при написании кода. В то время были написаны гигабайты, если не терабайты кода, которые сегодня новыми компиляторами могли бы вобще не компилироваться. Поэтому разрабы, для совместимости со старыми версиями кода, ввели в язык такую фишку, как #property strict, отсутствие которой позволяет успешно компилировать старый код без кардинальной его модификации, а в новый код эта опция прописывается автоматом при создании файлов кода.
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Как я могу быть уверена в правильности кода, если есть вероятность ошибки в нем?
    Как ни странно, но вы не можете быть уверены в правильности кода даже с #property strict. Потому что в любом случае компилятор может найти и указать только на синтаксические ошибки и неточности. Но никоим образом не алгоритмические.
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Я не вижу смысла в этом.
    Вы смысла не видите, а он есть... Точно так же, как тот пресловутый суслик из известного фильма.
    Цитата Сообщение от docikstorm Посмотреть сообщение
    После ваших сообщений, полез разбираться и понял почему так.
    И чо там разбираться если об ентом, русским по белому, написано в справке. В самом низу таблички.


  5. post_thanks Получено лайков: 3

    docikstorm (28.11.2020), Rozachka (01.12.2020), Sailo (23.12.2020)

  6. линк#2448
    Кандидат форумных наук
    Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Аватар для Leschich
    Регистрация:
    30.11.2012
    Пол:
    Мужчина
    Сообщений:
    1,868
    Накопленные выплаты (Подробнее):
    72568 RUB
    Поставил лайков:
    6,357
    Получено лайков:   2,867
    в 1,149 сообщениях
    153%
    Поймано букетов:
    3
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Получается, что данное свойство включает/выключает режим крутой проверки ошибок. Но ведь выключение режима нелогично, по моему. Как я могу быть уверена в правильности кода, если есть вероятность ошибки в нем? Я не вижу смысла в этом. Понимаю, что знаний и опыта мало, но сейчас так.
    Все логично. Вы же сперва компилируете код с такой фичей "режим крутой проверки ошибок", а затем без... но код на корректность уже проверен. Логично? Как по мне, то да.

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

  7. post_thanks Получено лайков: 2

    docikstorm (28.11.2020), Незарегистрированный (1 пользователь)

  8. линк#2449
    Свой человек
    Rozachka приемлемый уровень репутации Rozachka приемлемый уровень репутации Аватар для Rozachka
    Регистрация:
    25.06.2019
    Пол:
    Женщина
    Сообщений:
    297
    Накопленные выплаты (Подробнее):
    6724 RUB
    Поставила лайков:
    27
    Получено лайков:   119
    в 85 сообщениях
    40%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Leschich Посмотреть сообщение
    Все логично. Вы же сперва компилируете код с такой фичей "режим крутой проверки ошибок", а затем без... но код на корректность уже проверен. Логично? Как по мне, то да.
    Я же об этом и говорю. Это нелогично. Нелогично выключение такой возможности. Если есть режим "крутой" проверки, то зачем его отключать? Зачем включать режим "некрутой" проверки, который с большой вероятностью ошибку пропустит. И тогда код либо не будет работать, либо будет работать неправильно.

    Здесь может быть Ваша реклама

  9. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

  10. линк#2450
    Кандидат форумных наук
    Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Аватар для Leschich
    Регистрация:
    30.11.2012
    Пол:
    Мужчина
    Сообщений:
    1,868
    Накопленные выплаты (Подробнее):
    72568 RUB
    Поставил лайков:
    6,357
    Получено лайков:   2,867
    в 1,149 сообщениях
    153%
    Поймано букетов:
    3
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Чтобы было понятней, разделю ваш вопрос на "под вопросы" .
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Я же об этом и говорю. Это нелогично.
    Все относительно... для вас нелогично, для других логично. У каждого своя логика, и она строится от полученных знаний, от своего-чужого опыта.
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Если есть режим "крутой" проверки, то зачем его отключать?
    Вдумайтесь в смысл ответа... Если есть режим "крутой" проверки, то его включаем и пользуемся при написании кода. Этот режим актуален только!!! во время компиляции кода! , делает проверку на синтаксис текста! кода. Если во время компиляции этот режим дал вам добро, он отработал свою задачу. Все, он проверил только синтаксис!! Он не участвует в работе кода, а раз так, то его можно и отключить.

    Цитата Сообщение от Rozachka Посмотреть сообщение
    Зачем включать режим "некрутой" проверки, который с большой вероятностью ошибку пропустит. И тогда код либо не будет работать, либо будет работать неправильно.
    Опять читаем внимательно ответ.. Про какую "с большой вероятностью ошибку пропустит.", идет речь? если только что скомпилировали с "крутой" проверкой??? Вы путаете такие понятия, как "проверка синтаксиса текста" и "проверка логики кода".

    Цитата Сообщение от Rozachka Посмотреть сообщение
    Если есть режим "крутой" проверки, то зачем его отключать?
    Для того, что с крутой проверкой, во внешних настройках отображаются не параметры настроек, а их комментарии. А комментарии бывают и больших размеров по кол-у буков и слов. Так комментарии и нужны для того, чтобы комментировать параметр.
    А отключаем режим "крутой" проверки, чтобы отображались параметры, а не комментарии.
    P.S. Если что, разговор был про логику. А как пользоваться режимом "крутой" проверки, включать/отключать,- это на усмотрение программиста.

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

  11. post_thanks Получено лайков: 6

    docikstorm (01.12.2020), ir0407 (01.12.2020), MonyaMaker (01.12.2020), Rozachka (01.12.2020), VadimRA (01.12.2020), Незарегистрированный (1 пользователь)

  12. линк#2451
    Свой человек
    Rozachka приемлемый уровень репутации Rozachka приемлемый уровень репутации Аватар для Rozachka
    Регистрация:
    25.06.2019
    Пол:
    Женщина
    Сообщений:
    297
    Накопленные выплаты (Подробнее):
    6724 RUB
    Поставила лайков:
    27
    Получено лайков:   119
    в 85 сообщениях
    40%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Leschich Посмотреть сообщение
    Если что, разговор был про логику. А как пользоваться режимом "крутой" проверки, включать/отключать,- это на усмотрение программиста.
    Из всего сказанного я поняла, что этот режим нужен для проверки синтаксиса кода от старых версий MQL. Другие форумчане об этом тоже говорят. Ну а так, как я пока не использую коды прошлых версий, то в принципе мне не зачем контролировать этот режим. Но буду иметь в виду. Большое всем спасибо за разъяснения.

    Здесь может быть Ваша реклама

  13. линк#2452
    Кандидат форумных наук
    Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Leschich авторитетный пользователь Аватар для Leschich
    Регистрация:
    30.11.2012
    Пол:
    Мужчина
    Сообщений:
    1,868
    Накопленные выплаты (Подробнее):
    72568 RUB
    Поставил лайков:
    6,357
    Получено лайков:   2,867
    в 1,149 сообщениях
    153%
    Поймано букетов:
    3
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Из всего сказанного я поняла, что этот режим нужен для проверки синтаксиса кода от старых версий MQL.
    Я вам говорил про логику и синтаксис кода в частности. Точка!
    Цитата Сообщение от Rozachka Посмотреть сообщение
    от старых версий MQL.
    Это ваши слова. Точка.
    Цитата Сообщение от Rozachka Посмотреть сообщение
    Ну а так, как я пока не использую коды прошлых версий, то в принципе мне не зачем контролировать этот режим.
    Это ваши мысли и ваши выводы. И ваша логика. Точка.

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

  14. post_thanks Получено лайков: 2

    VadimRA (24.12.2020), Незарегистрированный (1 пользователь)

  15. линк#2453
    Частый гость
    Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Аватар для Sailo
    Регистрация:
    22.11.2020
    Пол:
    Женщина
    Сообщений:
    54
    Накопленные выплаты (Подробнее):
    11969 RUB
    Поставила лайков:
    633
    Получено лайков:   241
    в 53 сообщениях
    446%
    ПодписатьсяПодписаться
    Подписано 0
    Подскажите пожалуйста, что здесь может быть не так? Писала по инструкциям с сайта MQL . Если правильно поняла, то у меня в ошибке лишняя скобка , но если её не будет, то тогда вместо 3 ошибок 40... И вообще получается что закрывающих скобок на одну меньше чем открывающих(так же не должно быть?), а если добавить ещё одну то ошибок только больше (7) , пробовала копировать их образец, сравнивать с ним , копировать из него в свой код, вставить вроде в 9 строку команду, что бы использовался старый алгоритм компелирования, но не помогает.

    MQL-Код:
    
    //+------------------------------------------------------------------+
    #property copyright "я "
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    #property strict
    #property indicator_separate_window
    #property indicator_buffers 7
    #property indicator_plots   1
    //--- plot TSL
    #include <MovingAverages.mqh>
    #property indicator_label1  "TSL"
    #property indicator_type1   DRAW_LINE
    #property indicator_color1  clrBlue
    #property indicator_style1  STYLE_SOLID
    #property indicator_width1  1
    //--- input parameters
    input int      r=25;
    input int      s=13;
    //--- indicator buffers
    double         TSLBuffer[];
    double         MTMBuffer[];
    double         AbsMTMBuffer[];
    double         EMA_MTMBuffer[];
    double         EMA2_MTMBuffer[];
    double         EMA_AbsMTMBuffer[];
    double         EMA2_AbsMTMBuffer[];
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //--- indicator buffers mapping
       SetIndexBuffer(0,TSLBuffer,INDICATOR_DATA);
       SetIndexBuffer(1,MTMBuffer,INDICATOR_CALCULATIONS)  ;
       SetIndexBuffer(2,AbsMTMBuffer,INDICATOR_CALCULATIO  NS);
       SetIndexBuffer(3,EMA_MTMBuffer,INDICATOR_CALCULATI  ONS);
       SetIndexBuffer(4,EMA2_MTMBuffer,INDICATOR_CALCULAT  IONS);
       SetIndexBuffer(5,EMA_AbsMTMBuffer,INDICATOR_CALCUL  ATIONS);
       SetIndexBuffer(6,EMA2_AbsMTMBuffer,INDICATOR_CALCU  LATIONS);
       //--- с какого бара начнет отрисовываться индикатор
       PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,r+s-1);
       string shortname;
       StringConcatenate(shortname,"TSI(",r,",",s,")");
    //--- установим метку для отображения в DataWindow
       PlotIndexSetString(0,PLOT_LABEL,shortname);   
    //--- установим имя для показа в отдельном подокне и во всплывающей подсказке
       IndicatorSetString(INDICATOR_SHORTNAME,shortname);
    //--- укажем точность отображения значений индикатора
       IndicatorSetInteger(INDICATOR_DIGITS,2);
    //---
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int OnCalculate (const int rates_total,
                    const int prev_calculated,
                    const int  begin,
                    const double& prise[])
      {
    //---
      if(rates_total<r+s) return(0); // ничего не считаем и ничего не рисуем на графике
    //--- если это первый вызов 
       if(prev_calculated==0)//--- рассчитать значения mtm и |mtm|
          {
          //--- для нулевых индексов установим нулевые значения
           MTMBuffer[0]=0.0;
           AbsMTMBuffer[0]=0.0;
          }
       
       //--- рассчитать значения mtm и |mtm|
       int start;
       if(prev_calculated==0) start=1;  // начнем заполнять MTMBuffer[] и AbsMTMBuffer[]  с 1-го индекса 
       else start=prev_calculated-1;    // установим start равным последнему индексу в массивах 
       for(int i=start;i<rates_total;i++)
         {
          MTMBuffer[i]=price[i]-price[i-1];
          AbsMTMBuffer[i]=fabs(MTMBuffer[i]);
         }
    //--- return value of prev_calculated for next call
    //--- рассчитаем первую скользящую среднюю на массивах
       ExponentialMAOnBuffer(rates_total,prev_calculated,
                             1,  // с какого индекса есть значения в массиве для сглаживания 
                             r,  // период экспроненциальной средней
                             MTMBuffer,       // буфер для взятия средней
                             EMA_MTMBuffer);  // в этот буфер помещаем значения средней
       ExponentialMAOnBuffer(rates_total,prev_calculated,
                             1,r,AbsMTMBuffer,EMA_AbsMTMBuffer);
                             //--- рассчитаем вторую скользящую среднюю на массивах
       ExponentialMAOnBuffer(rates_total,prev_calculated,
                             r,s,EMA_MTMBuffer,EMA2_MTMBuffer);
       ExponentialMAOnBuffer(rates_total,prev_calculated,
                             r,s,EMA_AbsMTMBuffer,EMA2_AbsMTMBuffer);
    //--- теперь вычислим значения индикатора
     if(prev_calculated==0) start=r+s-1; // установим начальный индекс для входных массивов
       else start=prev_calculated-1;    // установим start равным последнему индексу в массивах 
       for(int i=r+s-1;i<rates_total;i++)
        {    
        TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
            
        return(rates_total);
     } 
             
    //+------------------------------------------------------------------+ 
    
    
    


    Вот сам скрин ошибок :
    Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 6
Размер:	9.9 КБ
ID:	4429998

    Последний раз редактировалось Sailo; 24.12.2020 в 10:32.

  16. post_thanks Получено лайков: 3

    Незарегистрированный (3 пользователя)

  17. линк#2454
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от Sailo Посмотреть сообщение
    Подскажите пожалуйста
    Выложите ваш файл и все что к нему нужно еще раз, только вложением или архивом, а не через тэг MQL. А то форум ваш код искажает.


  18. post_thanks Получено лайков: 3

    docikstorm (24.12.2020), Sailo (24.12.2020), VadimRA (24.12.2020)

  19. линк#2455
    Частый гость
    Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Аватар для Sailo
    Регистрация:
    22.11.2020
    Пол:
    Женщина
    Сообщений:
    54
    Накопленные выплаты (Подробнее):
    11969 RUB
    Поставила лайков:
    633
    Получено лайков:   241
    в 53 сообщениях
    446%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Выложите ваш файл и все что к нему нужно еще раз, только вложением или архивом, а не через тэг MQL. А то форум ваш код искажает.
    Большое спасибо, вот: первый.mq5
    Там ещё в низу сайта есть два файла, как образец, в первом документе true_strength_index_ver1.mq5 всё работает (но там сам код мене продуманный ), а у второго true_strength_index_ver2.mq5 такая же ошибка.


  20. post_thanks Получено лайков: 2

    docikstorm (24.12.2020), Незарегистрированный (1 пользователь)

  21. линк#2456
    Свой человек
    docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь Аватар для docikstorm
    Регистрация:
    03.09.2016
    Пол:
    Мужчина
    Сообщений:
    363
    Накопленные выплаты (Подробнее):
    71467 RUB
    Поставил лайков:
    1,466
    Получено лайков:   1,403
    в 329 сообщениях
    387%
    Поймано букетов:
    28
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 1
    Цитата Сообщение от Sailo Посмотреть сообщение
    Подскажите пожалуйста, что здесь может быть не так? Писала по инструкциям с сайта MQL . Если правильно поняла, то у меня в ошибке лишняя скобка , но если её не будет, то тогда вместо 3 ошибок 40... И вообще получается что закрывающих скобок на одну меньше чем открывающих(так же не должно быть?), а если добавить ещё одну то ошибок только больше (7) , пробовала копировать их образец, сравнивать с ним , копировать из него в свой код, вставить вроде в 9 строку команду, что бы использовался старый алгоритм компелирования, но не помогает.
    ir0407 как всегда прав, лучше исходник, здесь порой вставка кода через тег mql искажается, вроде бы получше код сохраняется когда через тег php вставляется.

    С исходниками всё стало понятней.

    Цитата Сообщение от Sailo Посмотреть сообщение
    Большое спасибо, вот: первый.mq5
    Цитата Сообщение от Sailo Посмотреть сообщение
    а у второго true_strength_index_ver2.mq5 такая же ошибка.
    В обоих ошибки как минимум это:
    Первое необъявленный массив TSIBuffer[].

    Второе это опечатка в
    MQL-Код:
    
    int OnCalculate (const int rates_total,
                    const int prev_calculated,
                    const int  begin,
                    const double& prise[]) 
    
    
    

    а должно быть:
    MQL-Код:
    
    int OnCalculate (const int rates_total,
                    const int prev_calculated,
                    const int  begin,
                    const double& price[]) 
    
    
    

    было неправильно написано название массива price[].

    Ну и третье в обоих незакрытая скобка почти в самом конце в коде, в цикле for:
    MQL-Код:
    
       for(int i=r+s-1;i<rates_total;i++)
        {    
        TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
            
        return(rates_total); 
    
    
    
    а должно быть:
    MQL-Код:
    
       for(int i=r+s-1;i<rates_total;i++)
        {    
        TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
        }    
        return(rates_total); 
    
    
    
    После объявления массива TSIBuffer[], исправления опечатки в OnCalculate и добавления скобки закрытия цикла for код компилируется и индикаторы работают:

    Нажмите на изображение для увеличения
Название: Снимок экрана 2020-12-24 125400.png
Просмотров: 3
Размер:	30.2 КБ
ID:	4430585
    Вот исправленные файлы:
    true_strength_index_ver2-ispr.mq5
    первый-ispr.mq5

    Последний раз редактировалось docikstorm; 24.12.2020 в 13:12.

  22. post_thanks Получено лайков: 7

    Sailo (24.12.2020), VadimRA (24.12.2020), Незарегистрированный (5 пользователей)

  23. линк#2457
    Частый гость
    Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Sailo приемлемый уровень репутации Аватар для Sailo
    Регистрация:
    22.11.2020
    Пол:
    Женщина
    Сообщений:
    54
    Накопленные выплаты (Подробнее):
    11969 RUB
    Поставила лайков:
    633
    Получено лайков:   241
    в 53 сообщениях
    446%
    ПодписатьсяПодписаться
    Подписано 0
    Всё работает, спасибо сколько же тонкостей.. даже и не знаю, где бы надо было искать информацию, что бы выйти на эти ошибки самостоятельно. Первый индикатор обоюдно, но написан, начало положено
    Цитата Сообщение от docikstorm Посмотреть сообщение
    третье в обоих незакрытая скобка почти в самом конце в коде в цикле for:
    Хоть в чём-то была права
    Цитата Сообщение от docikstorm Посмотреть сообщение
    ir0407 как всегда прав, лучше исходник, здесь порой вставка кода через тег mql искажается, вроде бы получше код сохраняется когда через тег php вставляется.
    С исходниками всё стало понятней.
    Учту
    Ещё раз спасибо.


  24. post_thanks Получено лайков: 3

    docikstorm (24.12.2020), VadimRA (24.12.2020), Незарегистрированный (1 пользователь)

  25. линк#2458
    Свой человек
    docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь docikstorm авторитетный пользователь Аватар для docikstorm
    Регистрация:
    03.09.2016
    Пол:
    Мужчина
    Сообщений:
    363
    Накопленные выплаты (Подробнее):
    71467 RUB
    Поставил лайков:
    1,466
    Получено лайков:   1,403
    в 329 сообщениях
    387%
    Поймано букетов:
    28
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 1
    Цитата Сообщение от Sailo Посмотреть сообщение
    Учту
    Тег MQL часто насколько я заметил портит условия у if'ов и выражения и условия циклов for

    Вот на примере цикла for, видно что через тег PHP код лучше сохраняется чем через тег MQL,

    тег MQL:

    MQL-Код:
    
       for(int i=r+s-1;i<rates_total;i++)
        {    
        TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
        }   
        return(rates_total); 
    
    
    


    тег PHP:
    MQL-Код:
    
       for(int i=r+s-1;i<rates_total;i++)
        {    
        TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
        }   
        return(rates_total); 
    
    
    
    Как видим всё таки код обёрнутый в тег PHP сохранился нормально, поэтому если будете выкладывать код на форуме лучше его походу оборачивать тегом PHP а не MQL.
    Что самое интересное, во время создания/редактирования поста в предпросмотре всё нормально показывается, а вот после публикации становится понятно что код испортился.


  26. post_thanks Получено лайков: 5

    Sailo (24.12.2020), VadimRA (24.12.2020), Незарегистрированный (3 пользователя)

    <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://www.mt5.com/ru/forex_analysis">InstaForex</a>
  27. линк#2459
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от docikstorm Посмотреть сообщение
    Вот на примере цикла for, видно что через тег PHP код лучше сохраняется чем через тег MQL,
    Тэг MQL иногда начинает колбасить если в коде отсутствуют смысловые пробелы. И отсутствие пробелов вокруг символов < и > тоже вводит этот тэг в ступор(правда почему-то не всегда). Если использовать пробелы, в большинстве случаев все остается без искажений.


  28. post_thanks Получено лайков: 3

    Sailo (24.12.2020), Незарегистрированный (2 пользователя)


Страница 123 из 123
Первая ... 113 122 Последняя

Подписанные на тему (62)

Похожие темы

  1. Общие рекомендации для начинающих
    от Gold в разделе Трейдерские университеты
    Replies: 5848
    Последнее сообщение: 15.01.2021, 22:05
  2. Основы скальпинга на М1 для начинающих.
    от totsam в разделе Скальпинг и пипсовка
    Replies: 241
    Последнее сообщение: 18.06.2014, 18:17
  3. Топ-60 ошибок начинающих предпринимателей
    от Volangott в разделе Свободное общение
    Replies: 0
    Последнее сообщение: 30.01.2014, 18:42
  4. Форекс для начинающих
    от Sova в разделе Доска объявлений
    Replies: 2
    Последнее сообщение: 07.09.2011, 19:19
  5. Первые Шаги Для Начинающих
    от akella в разделе Доска объявлений
    Replies: 4
    Последнее сообщение: 05.10.2010, 23:38

Метки этой темы