Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано
10 минут назад, Lexa000 сказал:

Вот такой Советник

iSmart.mq4 21 \u043a\u0411 · 0 загрузок

очевидно же в блоке Drawdown

 

if(Close[1]>Open[1])
      if(iPointOrderStepLoss>0 && b>0 && (BuyPriceMin-Ask)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_BUY,NormalizeDouble(iStartLots,2),NormalizeDouble(Ask,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

   if(Close[1]<Open[1])
      if(iPointOrderStepLoss>0 && s>0 && (Bid-SelPriceMax)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_SELL,NormalizeDouble(SelLot,2),NormalizeDouble(Bid,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

 

надо вот так

 

if(Close[1]>Open[1])
      if(iPointOrderStepLoss>0 && b>0 && (BuyPriceMin-Ask)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_BUY,NormalizeDouble(BuyLot,2),NormalizeDouble(Ask,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

   if(Close[1]<Open[1])
      if(iPointOrderStepLoss>0 && s>0 && (Bid-SelPriceMax)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_SELL,NormalizeDouble(SelLot,2),NormalizeDouble(Bid,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

 

скорее всего:))

Изменено пользователем dermitay
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано
6 часов назад, dermitay сказал:

очевидно же в блоке Drawdown

 


if(Close[1]>Open[1])
      if(iPointOrderStepLoss>0 && b>0 && (BuyPriceMin-Ask)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_BUY,NormalizeDouble(iStartLots,2),NormalizeDouble(Ask,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

   if(Close[1]<Open[1])
      if(iPointOrderStepLoss>0 && s>0 && (Bid-SelPriceMax)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_SELL,NormalizeDouble(SelLot,2),NormalizeDouble(Bid,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

 

надо вот так

 


if(Close[1]>Open[1])
      if(iPointOrderStepLoss>0 && b>0 && (BuyPriceMin-Ask)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_BUY,NormalizeDouble(BuyLot,2),NormalizeDouble(Ask,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

   if(Close[1]<Open[1])
      if(iPointOrderStepLoss>0 && s>0 && (Bid-SelPriceMax)>iPointOrderStepLoss*Point())
         if(OrderSend(Symbol(),OP_SELL,NormalizeDouble(SelLot,2),NormalizeDouble(Bid,Digits()),iSlippage,0,0,"iSmart",iMagicNumber,0,clrGreen)<0)
            Print("OrderSend error #",GetLastError());

 

скорее всего:))

Да, перепутал. Если использовать AccountBalance к этому советнику, то можно сделать так как я спрашивал?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Я про создание правила, против сетки ордеров 0.10 открытие стартового лота составляло лот 0.02, против сетки 0.20 в продажу составляло стартовый лот 0.03. Вот так

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
18 минут назад, Lexa000 сказал:

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

с точки зрения математики и торговой логики это будет правильнее.
Локирование вообще тупиковое направление- дешевле сразу закрывать убыточный ордер и открывать встречный

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
7 минут назад, usver73 сказал:

с точки зрения математики и торговой логики это будет правильнее.
Локирование вообще тупиковое направление- дешевле сразу закрывать убыточный ордер и открывать встречный

Да, я знаю, это долгий процесс, хотелось бы найти золотую середину

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
14 минут назад, Lexa000 сказал:

Да, я знаю, это долгий процесс, хотелось бы найти золотую середину

нет золотой середины.
Либо сетка без локирования, либо один ордер в рынке

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
15 минут назад, usver73 сказал:

нет золотой середины.
Либо сетка без локирования, либо один ордер в рынке

Сетка без локирование может оказаться убыточной, поэтому и задал такой вопрос

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
10 минут назад, Lexa000 сказал:

Сетка без локирование может оказаться убыточной, поэтому и задал такой вопрос

Точнее, она может привести к сливу.
Можно сетку стопить при определенном уровне убытка. И в этот момент открывать встречный ордер. Тогда это будет осмысленно.
Но это вопрос ММ и в этой ветке оффтоп..

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

https://www.mql5.com/ru/articles/5596

  Нашёл статью. Мне нужно понять как создать такую стратегию в советнике при достижении массива сетки в сумме 0.15 открывать противоположную с 0.02, либо при достижении массива сетки в сумме 0.15 останавливать частично закрывая прибыльным лотом. Что-то подобное  

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Прохожу обучение, есть вопрос: Как запретить открытие ордеров в торговом советнике mql4 определённых валютных пар? Пары буду указывать в F7 через точку с запятой. 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Второй вопрос: как в советнике реализовать привязку лотности к вручную указанному значению в F7? Не к балансу счёта, а именно к цифре, желательно через F7.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Отчаянно всех приветствую! Господа!... и дамы разумеется. В девятом уроке базового курса упоминается некий урок, в котором разбирались массивы. Я прям очень внимательно смотрел все предыдущие восемь, но про массивы там ни слова. Может найдется добрая душа и подскажет где можно найти урок по массивам автора курса. В продвинутых уроках есть видео другого автора, но хотелось бы посмотреть именно Сергея. Спасибо всем не равнодушным к проблеме страждущего знаний, тройных профитов и +100500 к карме!

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
2 часа назад, Александр I сказал:

Спасибо всем не равнодушным к проблеме страждущего знаний, тройных профитов и +100500 к карме!

https://mql.su/mql4/dimensions/

http://mql.su/wp-content/uploads/2017/09/Studmed.ru_kovalev-mql4.pdf страница 230

Буду ждать карму.

Изменено пользователем Rever27
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Всем доброго времени.

Вопрос такой, мне нужно изначально в параметрах советника прописать флаги для торговли, допустим уже идет продажа но она возможно заканчивается и советнику необходимо сразу поставить флаг на покупку, т.к. в продажу уже не успели. Для этого я прописываю в шапке параметры:

 

input bool          trade_flag_buy   = true;
input bool          trade_flag_sell  = false;

 

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

 

 trade_flag_buy   = false;
 trade_flag_sell  = true;

 

Для этого я так понимаю нужно завести еще пару булевых переменных и приравнять их к тем переменным в шапке: 

 

bool flag_buy = trade_flag_buy;
bool flag_sell = trade_flag_sell;

 

И собственно сам вопрос, в каком месте советника это написать, чтобы код работал уже со свежими значениями переменных flag_buy и flag_sell ?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

@diodio Приветствую! Я не пойму зачем столько переменных, если можно обойтись всего одной.

input bool trade_flag = true;

Если есть торговля на продажу или покупку это всего два режима. Эти два режима может вместить всего одна переменная.

  1. покупка

trade_flag = true

  • равнозначно и бессмысленно

trade_flag_buy = true;
trade_flag_sell = false;

  • следовательно равнозначно и бессмысленно

flag_buy = trade_flag_buy;
flag_sell = trade_flag_sell;

 

  1. продажа

trade_flag=false;

  • равнозначно и бессмысленно

trade_flag_buy = false;
trade_flag_sell = true;

  • следовательно равнозначно и бессмысленно

flag_buy = trade_flag_buy;
flag_sell = trade_flag_sell;

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
8 минут назад, MikR0ReR сказал:

Приветствую! Я не пойму зачем столько переменных, если можно обойтись всего одной.

input bool trade_flag = true;

Если есть торговля на продажу или покупку это всего два режима. Эти два режима может вместить всего одна переменная.

Хорошо, спорить не буду, так как ее переключить потом после того как я первый раз введу ее в шапке?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
1 минуту назад, diodio сказал:

Хорошо, спорить не буду, так как ее переключить потом после того как я первый раз введу ее в шапке?

не въезжаю зачем руками делать такие пляски. если условие переключения "режимов" бай и селл можно описательны и формализованы, то можно это все закодить.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Только что, dermitay сказал:

не въезжаю зачем руками делать такие пляски. если условие переключения "режимов" бай и селл можно описательны и формализованы, то можно это все закодить.

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

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Только что, MikR0ReR сказал:

в том месте где ты считаешь что пора там и меняешь значение переменной.

Это у меня вызвало ошибку, значение именно этой переменной что прописана в шапке изначально нельзя менять! Поэтому или надо создавать новую переменную, или прописывать в какое-то событие чтоб код сверху - донизу читался уже со свежим значением переменной. Я просто хочу понять как грамотно это сделать.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

К примеру код:

 

input bool          trade_flag   = true;

........................................................

void OnTick()

{

if(trade_flag   == true)

{

открываем покупку

trade_flag = false;

}

else if(trade_flag   == false)

{

открываем продажу

trade_flag = true;

}

}

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

Как переключить?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток, Господа!

Подскажите, каким образом и вообще возможно ли узнать, что ордер закрыл человек, а не советник?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день!

Кто-нибудь, подскажите пожалуйста, как можно узнать точное время (в формате ч:м:сек) пересечения цены и индикатора, например скользящей средней?

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...