Перейти к содержимому

Theme© by Fisana
 

Фотография
- - - - -

эксперты и скрипты


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 21 January 2011 - 18:59

Нужна ... "подсказка зала"...

Вопрос то простой:
- в чём различие в программном коде эксперта (советника) и скрипта, в ML4?
- в чём различие эксперта и индикатора - совершенно понятно...
- но вот я пишу простейший (проще не бывает, это как Hello World!) ... (?) код:
int start()  {
   Alert( "мой пользовательский скрипт" );
   return(0);
}

Это что?
- если я его помещаю в .../experts и компилирую + переношу на график - оно "тарабанит" Aletr() на каждом тике, выполняясь как эксперт...
- если я его помещаю в .../experts/scripts + переношу на график - он выдаёт сообщение однократно и завершается, как скрипт...

В чём была разница? Только в файловом пути? ... это было бы как-то ... грустно :thumbsup: .
  • Michelangelo® и valenok_2003 это нравится

 
 

#2 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 21 January 2011 - 22:13

- но вот я пишу простейший (проще не бывает, это как Hello World!) ... (?) код:


И если тот пример был больше из области рождественской шутки, то вот совсем реальный код
- strlib - это "заглушка библиотеки", чтоб только компилятор не ругался: поместите strlib.h в .../experts/include, strlib.mq4 - в .../experts/libraries
- а вот SYmbInfo.mq4 - это и есть демонстрируемый код: его можете поместить (и скомпилировать) и в .../experts и в .../experts/scripts - поведение (при перетаскивании на график валютного инструмента) будет разное!
- ... как скрипт он нарисут информационную картинку (см. рис.) и завершится.

Прикрепленные изображения

  • GBPUSD_H1.png

Прикрепленные файлы

  • Прикрепленный файл  strlib.mq4   1.09К   27 скачиваний
  • Прикрепленный файл  strlib.mqh   516байт   13 скачиваний
  • Прикрепленный файл  SymbInfo.mq4   3.83К   7 скачиваний

  • Michelangelo® это нравится

#3 Michelangelo®

Michelangelo®

    МОРДЕ-РАПТОР

  • Профи
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1003 сообщений

Отправлено 21 January 2011 - 23:07

И если тот пример был больше из области рождественской шутки, то вот совсем реальный код
- strlib - это "заглушка библиотеки", чтоб только компилятор не ругался: поместите strlib.h в .../experts/include, strlib.mq4 - в .../experts/libraries
- а вот SYmbInfo.mq4 - это и есть демонстрируемый код: его можете поместить (и скомпилировать) и в .../experts и в .../experts/scripts - поведение (при перетаскивании на график валютного инструмента) будет разное!
- ... как скрипт он нарисут информационную картинку (см. рис.) и завершится.

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

Изображение

#4 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 21 January 2011 - 23:38

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


Это я всё отлично знаю, всё в букварях написано, всё читал.
И индикаторов с советниками я понаписал весьма немало, скрипты меньше надобились...

Но здесь мысль у меня возникла в принципе: чем <b>по коду</b> (а не по использованию) отличаются эксперт и скрипт?
Если <b>один и тот же</b> код, в зависимости от того, откуда он запускается ( .../experts или .../experts/scripts ), ведёт себя (вот здесь как раз "по использованию") то как эксперт, то как скрипт... странно это ...

Более того, я специально проверил такое:
- скрипт SymbInfo.mq4, показанный раньше, помещён скомпилирован в каталоге .../experts/scripts ...
- теперь скомпилированный плагин (?) SymbInfo.ex4 тупо скопирован в .../experts ...
- один и тот же скрипт, запускаемый из .../experts/scripts - ведёт себя как скрипт (завершается), его копия, запускаемая из .../experts - ведёт себя как эксперт (прицепляется к графику инструмента и срабатывает многократно до явного удаления).

#5 Michelangelo®

Michelangelo®

    МОРДЕ-РАПТОР

  • Профи
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1003 сообщений

Отправлено 21 January 2011 - 23:44

Это я всё отлично знаю, всё в букварях написано, всё читал.
И индикаторов с советниками я понаписал весьма немало, скрипты меньше надобились...

Но здесь мысль у меня возникла в принципе: чем <b>по коду</b> (а не по использованию) отличаются эксперт и скрипт?
Если <b>один и тот же</b> код, в зависимости от того, откуда он запускается ( .../experts или .../experts/scripts ), ведёт себя (вот здесь как раз "по использованию") то как эксперт, то как скрипт... странно это ...

Более того, я специально проверил такое:
- скрипт SymbInfo.mq4, показанный раньше, помещён скомпилирован в каталоге .../experts/scripts ...
- теперь скомпилированный плагин (?) SymbInfo.ex4 тупо скопирован в .../experts ...
- один и тот же скрипт, запускаемый из .../experts/scripts - ведёт себя как скрипт (завершается), его копия, запускаемая из .../experts - ведёт себя как эксперт (прицепляется к графику инструмента и срабатывает многократно до явного удаления).

принципиально эксперт и скрипт - одно и тоже... но именно прикрепленный к графику и лежащий в /experts - запускается самим МТ на каждом тике... а лежащий в /experts/scripts - один раз при первом вызове...
т.е. ты прав место размещения имеет значение...
Изображение
Возможно все! ...что ниже скорости света!
Невозможное делаю сразу! Чудо требует незначительной подготовки...
Пришел, увидел, нафлудил...

Изображение

#6 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 22 January 2011 - 00:24

лежащий в /experts - запускается самим МТ на каждом тике... а лежащий в /experts/scripts - один раз при первом вызове...
т.е. ты прав место размещения имеет значение...


Это и смущает ...

1. это, в общем, противоречит самой концепции файловой системы в операционной системе: действия программы не должны зависеть от её местоположения...

2. по аналогиям (по опыту 5-7-ми операционных систем и >2 языков программирования в них ): ничего и нигде подобного не виделось, чтобы свойства сомпилированного компонента зависели от того места (путевого имени) куда его скомпилировали;

Вот это и удивило :thumbsup:

#7 Michelangelo®

Michelangelo®

    МОРДЕ-РАПТОР

  • Профи
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1003 сообщений

Отправлено 22 January 2011 - 00:47

Это и смущает ...

1. это, в общем, противоречит самой концепции файловой системы в операционной системе: действия программы не должны зависеть от её местоположения...

2. по аналогиям (по опыту 5-7-ми операционных систем и >2 языков программирования в них ): ничего и нигде подобного не виделось, чтобы свойства сомпилированного компонента зависели от того места (путевого имени) куда его скомпилировали;

Вот это и удивило :thumbsup:

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

Изображение

#8 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 22 January 2011 - 00:58

ну тут ты преврал...

Не - а ... :thumbsup:

а как же фалы инициализации? перемести его и он уже не будет этим файлом... а винда скомпелирует новый... (если сможет)...

И конфиги, и любые файлы данных ... - они все или есть, или их нет ... на тех путях-именах, где система/программы их пытаются найти, нашли - выполнили, не нашли - значит нет, и там начинаются другие действия системы (но не конфигов), вплоть до создания новых дефаултных заготовок.

и скрипт или эксперт - не отдельные программы, а подключаемые процедуры

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

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

В принципе, разработчики имеют право сделать именно так, как они считают должным.
Только ... нигде они не "описали именно так"(с), что если это положить в /experts, то он будет выполняться по-одному, а если просто перекопировать (уже откомпилированный плагин!) в /experts/scripts - то уже совсем по-другому...

Но, в общем, понятно.
Вы подтвердили то, что я догадался, спасибо.
Вопрос разобран.

#9 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 26 January 2011 - 20:07

принципиально эксперт и скрипт - одно и тоже... но именно прикрепленный к графику и лежащий в /experts - запускается самим МТ на каждом тике... а лежащий в /experts/scripts - один раз при первом вызове...


Ещё один вопрос относительно "одно и то же"...

Пусть у меня в начале кода:
extern bool DebugLevel  = false;
...
// здесь какие-то сообщения в зависимости от уровня отладочного вывода

Когда этот код выполняется из /experts (как советник) - перед стартом выводятся закладки, где я могу переопределить параметры запуска ... в том числе и свой DebugLevel.

Но этот же код выполняется из /experts/scripts (как скрипт), то он стартует сразу, и возможности переопределить параметры нет.

Это принципиально так установлено, что скрипт не может иметь параметров запуска?

Сталкивался кто с этим?

#10 Necron

Necron

    Пошёл в рукопашку

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPip
  • 683 сообщений

Отправлено 26 January 2011 - 21:39

Это принципиально так установлено, что скрипт не может иметь параметров запуска?


В скриптах для изменения внешних параметров (чтобы они показывались пользователю) следует использовать
#property show_inputs

Каждый сам кузнец своей судьбы.

#11 Olej

Olej

    Почётный житель форума

  • Свой человек
  • PipPipPipPipPipPipPipPipPipPip
  • 411 сообщений

Отправлено 26 January 2011 - 23:17

В скриптах для изменения внешних параметров (чтобы они показывались пользователю) следует использовать

#property show_inputs


Спасибо, очень любопытно.

P.S. сработало :D



Copyright © 2024 Your Company Name