[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 195

 

Здрасте,

Дайте пожалуйста самый простой пример для открытия ордера (сразу, без всяких if).
В учебнике очень сложные.

 
olis:

Здрасте,

Дайте пожалуйста самый простой пример для открытия ордера (сразу, без всяких if).
В учебнике очень сложные.

OrderSend()

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Основная функция, используемая для открытия позиции или установки отложенного ордера.
Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
Замечания.
При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по финансовому инструменту, отличному от текущего, то для получения последних котировок по этому инструменту необходимо воспользоваться функцией MarketInfo() с параметром MODE_BID или MODE_ASK. Нельзя использовать расчетную либо ненормализованную цену. Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage.

Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS).

При установке отложенного ордера цена открытия не может быть слишком близкой к рынку. Минимальное расстояние отложенной цены от текущей рыночной цены в пунктах также можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае неправильной цены открытия отложенного ордера будет сгенерирована ошибка 130 (ERR_INVALID_STOPS).

На некоторых торговых серверах может быть установлен запрет на применение срока истечения отложенных ордеров. В этом случае при попытке задать ненулевое значение в параметре expiration будет сгенерирована ошибка 147 (ERR_TRADE_EXPIRATION_DENIED).

На некоторых торговых серверах может быть установлен лимит на общее количество открытых и отложенных ордеров. При превышении этого лимита новая позиция открыта не будет (отложенный ордер не будет установлен), и торговый сервер вернет ошибку 148 (ERR_TRADE_TOO_MANY_ORDERS).
Параметры:
symbol - Наименование финансового инструмента, с которым проводится торговая операция.
cmd - Торговая операция. Может быть любым из значений торговых операций.
volume - Количество лотов.
price - Цена открытия.
slippage - Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
stoploss - Цена закрытия позиции при достижении уровня убыточности (0 в случае отсутствия уровня убыточности).
takeprofit - Цена закрытия позиции при достижении уровня прибыльности (0 в случае отсутствия уровня прибыльности).
comment - Текст комментария ордера. Последняя часть комментария может быть изменена торговым сервером.
magic - Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.
expiration - Срок истечения отложенного ордера.
arrow_color - Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике.
 
ULAD:

Не могу сообразить, как высчитать время жизни от момента образования паттерна до 0 бара.

Если Паттерн существует, а жесткой привязки к цене и времени нет.

Паттерн существует же не всегда. Когда-то же он образовался. Вот вам и привязка ко времени его образования и времени текущего бара или к бару его образования и текущему бару. Разницу-то можете найти меж образованием паттерна и текущим временем?
 
olis:

Здрасте,

Дайте пожалуйста самый простой пример для открытия ордера (сразу, без всяких if).
В учебнике очень сложные.


//--------------------------------------------------------------------
// simpleopen.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   return;                                   // Выход из start()
  }
//--------------------------------------------------------------------
 
Roll:


Спасибо, заработало!
 

Пытаюсь разобрать пример из книги С. К., советник rocseparate.mq4 Запускаю тестиование, вывожу график. Внизу есть окно rocseparate, но пустое. Эксперты, подскажите, плиз, как сделать так, чтобы индюк рисовался в главном окне? Код как в книге:

//-------------------------------------------------------------- 5a --
   double L_1=iCustom(NULL,0,"rocseparate",H,P,B,A,1,0);
   double L_5=iCustom(NULL,0,"rocseparate",H,P,B,A,5,0);
//-------------------------------------------------------------- 5b --
   if (L_5<=-Level && L_1>L_5)
     {
      Opn_B=true;                               // Критерий 
 
ScioMe:

Пытаюсь разобрать пример из книги С. К., советник rocseparate.mq4 Запускаю тестиование, вывожу график. Внизу есть окно rocseparate, но пустое. Эксперты, подскажите, плиз, как сделать так, чтобы индюк рисовался в главном окне? Код как в книге:


Учебник:
"...Пользовательский индикатор rocseparate.mq4 скорости изменения цены на текущем, ближайшем большем и следующем большем таймфреймах... является полным аналогом индикатора roc.mq4, но отображается в отдельном окне. Это позволило рассчитать значения линий скоростей для разных таймфреймов не относительно опорной МА, а относительно горизонтальной нулевой линии".

 
Roll:


Учебник:
"...Пользовательский индикатор rocseparate.mq4 скорости изменения цены на текущем, ближайшем большем и следующем большем таймфреймах отображается в отдельном окне ... является полным аналогом индикатора roc.mq4, но отображается в отдельном окне. Это позволило рассчитать значения линий скоростей для разных таймфреймов не относительно опорной МА, а относительно горизонтальной нулевой линии".


Да, совершенно верно: бросаю на график, rocseparate появляется внизу в собственном окошке. Но вот когда после тестирования нажимаю на кнопку "Открыть график", окошко графика пустое. Никак не пойму, в чем дело?
 
Далее нажмите End на клавиатуре (советник shared.mq4) и наблюдаете свой индикатор (окно не пустое).
 

Добрый день, господа.

Все еще нужен ваш совет вот в таком вопросе:

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

И так цикл за циклом. Цикл времени задается от 1 до 60 минут. Подскажите как это описать правильно в коде? Как представленный ниже код сделать цикличным и с возможностью задавать размер цикла от 1 до 60 минут?

Пока у меня цикл из 5 минут выглядит так :

if ((TimeMinute(TimeCurrent()))==time1)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time2)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time3)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time4)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time5)

Price20=koef_10;


Буду благодарен за помощь.

Причина обращения: