| / | Форум |
|
SK.
05.01.2008 20:07
Climber писал (а):
Неделю назад впервые установил и попробовал в работе Meta Trader. Оказалось что этот терминал намного удобнее ранее использованных мной (Румус и Форекс Трейдер). Еще года два назад, когда я узнал про форекс и открыл свой первый демосчёт, меня мучал вопрос, как это всё автоматизировать. Тут открыв терминал, я увидел в разделе почта сообщение Автотрейдинг. И вот я тут))) Интенсивно читаю книгу и надеюсь, что в ближайшее время я напишу свой первый эксперт по своей сложившейся стратегии. Раньше с программированием абсолютно никак не был связан, даже тяжело было представить, что я когда-либо буду изучать программирование))) По ходу чтения возникали вопросы, но они так же исчезали по ходу. Вопрос появился, посмотрел наперёд и остался доволен, т. к. через пару разделов я увидел ответ, вернулся назад чтоб по порядку всё прочитать. Особенно меня привлекла возможность тестирования стратегии на исторических данных и в результате корректировать стратегию. Вобщем большое спасибо за книгу.
Разрешите Вам предложить: сообщать хотя бы 2 - 3 раза в месяц как у Вас продвигаются дела (а по желанию можно и чаще). Это было бы чрезвычайно интересно. А пока, если позволите, у меня вопрос. Вот, Вы говорите, что возник вопрос, на который Вы нашли ответ в следующих разделах. Я старался составить текст так, чтобы не допускать такой ситуации. Не могли бы Вы прояснить, о каком вопросе идёт речь? |
|
Climber
05.01.2008 21:34
SK. писал (а): Когда-то я пользовался для облегчения своей работы программой
Sign of Misery, в которой можно написать программу, не зная программирования.
Там просто необходимо было указывать действия в порядке их
выполнения (в основном я использовал его как автоматизатор,
хотя возможностей намного больше). У меня допустим в экселе
было много значений в 4х столбцах (данные по электроразведке
из геофизики, через каждые 20 см). Для дальнейшей обработки этих
данных мне надо было брать данные только с метров (т. е. с 0, 1,
2, 3, 4 ....). Я делал в этой программе автоматизатор действий, командами
эмуляций клавиш и изменения координат мыши. Компилировал в
ехе. Но это лирическое отступление. В этой программе ингода
приходилось делать метки и устанавливать условия переходов
к этим меткам, т. е. производить цикл операций, с условием выхода
из этого цикла. Придя к вопросу о построении эксперта, я представлял
себе общий вид структуры кода. Но начав читать книгу меня немного
смутила структура построения программы и потом функция int start
(), которая повторяется при каждом тике, при этом если во время
её выполнения я узнал цену bid, то она записывается в переменную
и хранится в ней всё время выполнения, тогда как я узнаю когда
цена изменилась и программа может выполнять какие-либо другие
действия, основанные на новой цене? Я думал что цену у меня в
программе будет обновлять код какого-то цикла, постоянно её
запрашивая. Вопрос у меня возник ещё такой: при вызове функции
и её выполнении я себе представлял что далее выполняться будет
следующая за ней функция, а оказалось что управление возвращается
к фунции, следующей за той что вызывала первоначально указанную
функцию. Но этот факт меня особо обрадовал, т. к. это для меня
стало ясным (ато я думал, а как же остальные действия, которые
шли за этой функцией, они что таким образом пропускаются?). Теперь
у меня возник вопрос такого плана: я понял что при исполнении
функции init у меня будет вызываться функция подсчёта устраиваемой
меня цены открытия ордера, а также подсчёт размера лота, исходя
из данных балланса на счёте; после её завершения начнётся исполнение
ф-ции start, в которой у меня будет содержаться код "ожидания"
нужной цены сделки, и как только она наступит, будет выполнено
открытие ордера (тейк профиты не предполагал ставить из-за того
что если будет скачок который перепрыгнет значение ТР, то он
не сработает, а скачок этот потенциально выгоднее значения
ТР, поэтому хочу чтоб формироваля приказ о закрытии ордера по
последней известной цене, когда текущая цена или равна, или
<, или > указанной) ; далее самое для меня пока загадочное,
это где мне писать код ожидания цены "закрытия" ордера
и возврат к началу, т. е. опять подсчёт устраиваемой цены для
открытия, ожидание этой цены и т. д. Заглянул наперёд в разделы,
вроде что-то увидел в названиях, т. е. вроде будет ответ на этот
мой вопрос. Пока дочитываю читаю раздел Открытие и установка
ордеров. Начал читать вчера утром. Climber писал (а):
Неделю назад впервые установил и попробовал в работе Meta Trader. Оказалось что этот терминал намного удобнее ранее использованных мной (Румус и Форекс Трейдер). Еще года два назад, когда я узнал про форекс и открыл свой первый демосчёт, меня мучал вопрос, как это всё автоматизировать. Тут открыв терминал, я увидел в разделе почта сообщение Автотрейдинг. И вот я тут))) Интенсивно читаю книгу и надеюсь, что в ближайшее время я напишу свой первый эксперт по своей сложившейся стратегии. Раньше с программированием абсолютно никак не был связан, даже тяжело было представить, что я когда-либо буду изучать программирование))) По ходу чтения возникали вопросы, но они так же исчезали по ходу. Вопрос появился, посмотрел наперёд и остался доволен, т. к. через пару разделов я увидел ответ, вернулся назад чтоб по порядку всё прочитать. Особенно меня привлекла возможность тестирования стратегии на исторических данных и в результате корректировать стратегию. Вобщем большое спасибо за книгу.
Разрешите Вам предложить: сообщать хотя бы 2 - 3 раза в месяц как у Вас продвигаются дела (а по желанию можно и чаще). Это было бы чрезвычайно интересно. А пока, если позволите, у меня вопрос. Вот, Вы говорите, что возник вопрос, на который Вы нашли ответ в следующих разделах. Я старался составить текст так, чтобы не допускать такой ситуации. Не могли бы Вы прояснить, о каком вопросе идёт речь? Сообщать продвижение дел конечно буду, как в моём положении и без общения)) Надеюсь на конструктивное общение. Спасибо за внимание. |
|
SK.
05.01.2008 22:46
Пожалуйста, разбивайте текст следующих сообщений на абзацы, т.к. возникают затруднения понять смысл написанного. Climber писал (а):
Но начав читать книгу меня немного смутила структура построения программы и потом функция int start (), которая повторяется при каждом тике, при этом если во время её выполнения я узнал цену bid, то она записывается в переменную и хранится в ней всё время выполнения, тогда как я узнаю когда цена изменилась и программа может выполнять какие-либо другие действия, основанные на новой цене? Я думал что цену у меня в программе будет обновлять код какого-то цикла, постоянно её запрашивая. Вы правильно заметили, что для самой возможности работы программы в режиме реального времени нужно периодически получать сведения о факте появления новой цены и саму эту цену. Действительно, существует 2 способа: 1й способ состоит в том, чтобы запустить в бесконечном цикле какую-то функцию и из неё периодически запрашивать цену. 2й способ (принят как основной в MQ-технологии) принципиально отличается тем, что инициатива запуска нужного кода принадлежит терминалу. Терминал получает сведения от сервера, понимает, что пришёл новый тик (факт новой цены и сама цена), и на этом основании терминал запускает функцию start(). Всё это изложено в разделе Программа на MQL4. Climber писал (а):
Теперь у меня возник вопрос такого плана: я понял что при исполнении функции init у меня будет вызываться функция подсчёта устраиваемой меня цены открытия ордера, а также подсчёт размера лота, исходя из данных балланса на счёте; после её завершения начнётся исполнение ф-ции start.. Неправильно. init() и start() - это специальные функции. Они вызываются клиентским терминалом в соответствии со своими собственными свойствами (а проще говоря в соответствии с правилами, условиями, при которых они вызываются для исполнения). Об этом написано в параграфе Специальные функции . Функция init() исполняется один раз, при загрузке программы в окно. А start() вызывается на каждом тике. Это очень удобно. Пришёл тик, принёс новую цену = терминал запускает на исполнение start(), которая и исполняется пока не исполнится. Вот в неё и надо вставить все расчёты - и вычисление количества лотов, и условия открытия/закрытия ордеров и всё другое. Climber писал (а):
далее самое для меня пока загадочное, это где мне писать код ожидания цены "закрытия" ордера и возврат к началу, т. е. опять подсчёт устраиваемой цены для открытия, ожидание этой цены и т. д. Заглянул наперёд в разделы, вроде что-то увидел в названиях, т. е. вроде будет ответ на этот мой вопрос. Пока дочитываю читаю раздел Открытие и установка ордеров. Судя по тому, какие вопросы у Вас возникают, Вам пока не надо писать программы и читать то, что Вы сейчас читаете, тоже не нужно. В этой ситуации настоятельно рекомендуется начать читать книгу сначала. Последовательно и без забегания вперёд. А по ходу дела все представленные примеры собственноручно набирать в МЕ и исполнять на своём ПК. И не переходить к следующему разделу до тех пор, пока не будет достигнута полная ясность по каждой букве кода. Помотрите понятия Тик, Управление, Функция, Специальная функция, Оператор и вообще время от времени заглядывайте в Словарь терминов. Climber писал (а):
Сообщать продвижение дел конечно буду, как в моём положении и без общения)) Надеюсь на конструктивное общение. Спасибо за внимание. Надеюсь, что Вы правильно воспримете совет и последуете ему. |
|
Climber
05.01.2008 23:50
SK. писал (а):
Climber писал (а):
далее самое для меня пока загадочное, это где мне писать код ожидания цены "закрытия" ордера и возврат к началу, т. е. опять подсчёт устраиваемой цены для открытия, ожидание этой цены и т. д. Заглянул наперёд в разделы, вроде что-то увидел в названиях, т. е. вроде будет ответ на этот мой вопрос. Пока дочитываю читаю раздел Открытие и установка ордеров. Судя по тому, какие вопросы у Вас возникают, Вам пока не надо писать программы и читать то, что Вы сейчас читаете, тоже не нужно. Быстро накрапал в ворде, вот: Init Start Устанавливаю максимальное количество открытых ордеров = 1; проверяю сколько открыто ордеров; если 1 открыт, то вызываю функцию закрытия ордера, если не открыто ни одного, вызываю функцию «расчёт цены и кол-во лотов» -------------------------- Необходимые расчеты выгодной цены покупки и продажи и расчет количества лотов; -------------------------- запрос текущей цены; если текущая >= выгодной цене для продажи, то открыть ордер продажи равный количеству уже определённых лотов; если нет, то сравнить текущую с выгодной ценой покупки; ели текущая <= выгодной цене покупки, то соответственно открыть ордер покупки; -------------------------- вызов функции закрытия ордера; return deinit
|
|
SK.
06.01.2008 00:12
Climber писал (а):
Правильно понял? Ну, в целом правильно:) Поздравляю Вас. Это всегда приятно - ещё что-то понять. Всё же, последуйте моему совету: необходимо вернуться к началу. И идти от начала без пропусков и перескакиваний, методично исполняя на своём ПК все предлагаемые в учебнике коды. |
|
timbo
06.01.2008 09:25
Parabellum писал (а): Кстати, текст индикатора опубликованный на самой странице имеет
две опечатки в коде, а потому некомпелируется.В книге приводится интересный индикатор ROC - индикатор скорости изменения цены (http://book.mql4.com/ru/samples/iroc). Я понимаю, что эта книга - учебник, и автор не обязан давать ни полу-, ни даже четверть-граальные исходники, но идея индикатора уж больно хороша, и я слегка подшаманил, чтобы запаздывание было ещё слабее. Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив //-------------------------------------------------------- 17 -- Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линииДва раза пропущен (исчез при создании ХТМЛ файла?) символ деления. Подлинкованный в тексте файл индикатора нормальный. |
|
xnsnet
06.01.2008 10:46
SK. писал (а):
Ну, в целом правильно:) Поздравляю Вас. Это всегда приятно - ещё что-то понять. Всё же, последуйте моему совету: необходимо вернуться к началу. И идти от начала без пропусков и перескакиваний, методично исполняя на своём ПК все предлагаемые в учебнике коды.
P.S.: Извините, если перегнул палку:) |
|
SK.
06.01.2008 13:17
timbo писал (а):Кстати, текст индикатора опубликованный на самой странице имеет две опечатки в коде, а потому некомпелируется. Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив //-------------------------------------------------------- 17 -- Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линииДва раза пропущен (исчез при создании ХТМЛ файла?) символ деления. Подлинкованный в тексте файл индикатора нормальный. Да, есть такое. В исходных кодах пока ошибок не выявлено, а текстовые коды почему-то местами порченные. Будем разбраться. |
|
Climber
06.01.2008 15:10
xnsnet писал (а): :) Да уж, немного есть)))P.S.: Извините, если перегнул палку:) |
|
Climber
06.01.2008 15:39
Ещё небольшое змечание есть по книге. В качестве примеров использовать
лучше реальные варианты, в смысле не на кошках тренироваться,
а на деньгах или на том что относится к делу. Например когда
я дошёл до операторов цикла, то пример с овцами немного отвлекает
от сути, ты начинаешь думать как это может использоваться в
наших условиях, а это отвлекает от процесса восприятия.
Мне и так туговато циклы давались (буду ещё не раз к этим разделам возвращаться), а тут ещё и овцы эти. Просто на мой взгляд, если рассмотрен конкретный пример из трейдерства (почти рейдерства:)), ладно, трейдинга, то если читающий встретит пример похожий на какую-либо его идею (которую он пока не знает как реализовать), он будет с огромным интересом рассматривать этот пример и думать как его видоизменить и подстроить для реализации своей идеи (думаю понятно о чём я говорю). У меня такой пример был, меня интересовало каким образом мне открыть ордер на сумму 1/3 от балланса. Вы не представляете какие математические операции были у меня в голове, для того чтоб преобразовать 1/3 в долларах так, чтоб в итоге у меня вышла цифра в лотах (0.1 или 3.5 лотов...). И как же я был рад, когда увидел пример openbuy.mq4, открывающий ордер Buy, стоимостью 35% от суммы свободных средств, с некоторыми заданными значениями стоп-приказов. Я его переглядел вдоль и поперёк, вник в каждую строчку, что, почему, куда. Посмотрел что за стандартные функции в нём используются ( MathFloor, MarketInfo. ....). |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий