Опубликован первый учебник по MQL4 - страница 3

 
coaster писал (а):
"МА с некоторым периодом усреднения, построенная на некотором таймфрейме, отображается на ближайшем большем таймфрейме с помощью МА с периодом усреднения во столько раз меньшим, во сколько раз больше таймфрейм. Например, если в окне финансового инструмента М30 отражена МА с периодом усреднения 400, то она так же (с тем же рисунком и абсолютными значениями) будет отражаться в окне H1 с периодом усреднения 200, в окне H4 с периодом усреднения 50 и т.д."
Вот что утверждал автор. И я с этим несогласен, потому что знаю о чём говорю.


В принципе, Ваша позиция понятна.

Вместе с тем, фраза, выдернутая из контекста, не должна служить поводом для жёстких утверждений. Там ведь ниже написано прямо (и я уже дважды указл на это), что погрешность есть, и написано чем она вызвана.

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

Ну вот сечас ещё раз перечитал. Пожалуй, нужно вместо "(с тем же рисунком и абсолютными значениями)" написать "(с тем же рисунком и близкими абсолютными значениями)". Спасибо за участие.

А разницы действительно почти нет. На глаз, так и вовсе не определить (это МА 200 и 400 соотв.):

Можно даже сыграть в игру: найди хоть одно отличие.

 
По последнему замечанию внесено указанное изменение в текст.
 
Хочется скачать учебник или лучше документацию в CHM формате.
 
Сергей, в ветке 'кривой стоп'разгорелся небольшой спор по поводу функции OrderSend. Прочитав главу "Открытие и установка ордеров", сам 
пришел в замешательство от предложенного способа установки стопа и профита. С одной стороны указано, что в 
скрипте устанавливаются значения от цены закрытия, но позвольте - мы же открываем позицию! Поэтому правильнее 
будет устанавливать их от цены открытия. А цена открытия позиции Buy пока еще - Ask. Предлагаю все же подправить 
указанный пример, указав установку уровней профита и стопа от цены открытия, а не закрытия. Потому что пример в 
данной редакции людей будет только путать.
И еще одно. Что это за уровень стопа в 15.5 пунктов? Если банальная опечатка, то желательно ее тоже исправить.
Она присутствует и в скрипте, и в описании его непосредственно в статье.
 
Scriptong:
И еще одно. Что это за уровень стопа в 15.5 пунктов? Если банальная опечатка, то желательно ее тоже исправить.
Она присутствует и в скрипте, и в описании его непосредственно в статье.

Спасибо за найденную опечатку. В учебнике она исправлена, скрипт будет также поправлен.
 
Scriptong:
Сергей, в ветке 'кривой стоп'разгорелся небольшой спор по поводу функции OrderSend. Прочитав главу "Открытие и установка ордеров", сам
пришел в замешательство от предложенного способа установки стопа и профита. С одной стороны указано, что в
скрипте устанавливаются значения от цены закрытия, но позвольте - мы же открываем позицию! Поэтому правильнее
будет устанавливать их от цены открытия. А цена открытия позиции Buy пока еще - Ask. Предлагаю все же подправить
указанный пример, указав установку уровней профита и стопа от цены открытия, а не закрытия. Потому что пример в
данной редакции людей будет только путать.
И еще одно. Что это за уровень стопа в 15.5 пунктов? Если банальная опечатка, то желательно ее тоже исправить.
Она присутствует и в скрипте, и в описании его непосредственно в статье.


Насколько я понимаю, у Вас есть опыт программирования. Поэтому Вам - конспективно.

Базой, точкой отсчёта для расчёта значений SL и ТР, является цена закрытия ордера.
Представьте себе: MODE_STOPLEVEL = 2, MODE_SPREAD = 5.
Юзер хочет поставить ограничения по SL и ТР "впритык" при открытии. И ставит их от цены открытия. Какая судьба ждёт такой торговый приказ?

Дело не в том, что нам кажется правильным или неправильным. Дело в том, что существуют правила, которые приняты к исполнению и в клиентском терминале и на сервере.

Можно, конечно, иметь своё собственное мнение по вопросу "а что я бы сделал на месте разработчиков на этапе разработки правил?".
Но мы не разработчики, а пользователи уже готового программного продукта. Поэтому, чтобы правильно писать программы, необходимо знать и учитывать ранее созданные правила. Можно этого и не делать, если нас не интересует результат:).

15.5 пунктов - это опечатка (я тоже заметил и уже написал об этом в теме 'кривой стоп'), сегодня поправим.

 
Не понимаю.

Давайте конкретный пример.

Bid = 1.4800, Ask = 1.4802.

Нам необходимо войти в позу Buy с параметрами TP=SL=100 пунктов.
Я всегда считаю таким образом:
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,16384);  
То есть при открытии позы получу Open = 1.4802, StopLoss = 1.4702, TakeProfit = 1.4902. То есть везде по 100 пунктов. Да, конечно, для достижения профита цене придется пройти 102 пункта, а для достижения стопа 98. Но ведь нас интересуют именно значение прибыли и убытка, а не пролет цены!


В примере из учебника получим:
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point);
Open = 1.4802, StopLoss = 1.4700, TakeProfit = 1.4800. То есть трейдер получит не выставленные 100 пунктов прибыли или убытка,
 а указанные выше 98 прибыли и 102 убытка. В чем здесь логика?

Насчет же уровня стопов внутри спрэда - так ведь в советниках нужно проверять правильность выставленных пользователем стопа и профита.
Тут я могу представить ситуацию более часто встречаемую: StopLevel = 10, Spread = 2. И как в данной ситуации будет впритык к спрэду ставиться стоп? Получим просто ошибку 130. Тут выход один - ставить проверки.
 
Проверка несложная ведь:

     if(StopLoss < MarketInfo(Symbol(), MODE_STOPLEVEL)+1)
       double SL = 0;
      else
       SL = Ask - StopLoss*Point;  
     if(TakeProfit < MarketInfo(Symbol(), MODE_STOPLEVEL)+1)
       double TP = 0;
      else
       TP = Ask + TakeProfit*Point;
Это для входа Buy
 

Да нет никакого "внутри спреда".

Есть ограничения, связанные с парметром MODE_STOPLEVEL. Предельно допустимое положение отдельно взятого стоп-приказа, например, StopLoss, расчитывается от своей базовой правильной цены. При этом совершенно неважно какой спред.

SL и ТР - это такие характеристики ордера, которые имеют отношение только к закрытию ордера, а к открытию никак не относятся. Поэтому базовой ценой для расчёта SL и ТР и является цена закрытия ордера. А цена открытия ордера к этому расчёту никак не относится.

Возьмём для примера открытие рыночного ордера Buy. Предположим, что ордер уже открыт, причём без стоп-приказов. Какой ценой он будет закрываться? Ответ очевиден - соответствующей правильной ценой закрытия, принятой для закрытия рыночных ордеров. Для ордера Buy это цена Bid. При этом способ закрытия - вручную, программно (путём формирования программой соотв. торгового приказа) или при достижении заявленной цены одного из стоп-приказов (будь то SL или ТР) - значения не имеет.

На какую минимальную дистанцию в пунктах может быть установлен любой из стоп-приказов? Ответ очевиден: самая близкая цена ограничена параметром MODE_STOPLEVEL, откладываемым от цены закрытия ордера. Для ордера Buy это цена Bid.

При этом, с точки зрения корректности торгового приказа, не имеет никакого значения на каком этапе устанавливается стоп-приказ - на этапе, когда ордер уже давно открыт, или на этапе открытия ордера. Просто потому, что SL и ТР - это нечто такое, что имеет отношение к закрытию.

-------

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

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

 
Вроде и земляки, а говорим о разных вещах...

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

Хотя может вы имеете в виду, что вам интересен сам проход цены, а не полученные в результате значения прибыли или убытка?
В этом случае все верно. Но рядовых пользователей такой подход будет сбивать с толку. Ведь если ему нужно получить прибыль 
или убыток в фиксированное  число пунктов, то с использованием примера учебника он получит убыток+спрэд, а прибыль уменьшенную на тот же спрэд.