Ваши вопросы по языку MQL4

Andy200577

Новичок форума
День добрый всем!
Подскажите пожалуйста, как можно передать в код MQL4 общую сумму прибыли или убытка по всем открытым ордерам, которую терминал в списке ордеров всегда показывает жирным шрифтом в самом низу справа? Есть ли специальная функция для этого или нужно отдельную процедуру писать?
Спасибо.
 

Andy200577

Новичок форума
День добрый всем!
Подскажите пожалуйста, как можно передать в код MQL4 общую сумму прибыли или убытка по всем открытым ордерам, которую терминал в списке ордеров всегда показывает жирным шрифтом в самом низу справа? Есть ли специальная функция для этого или нужно отдельную процедуру писать?
Спасибо.

Извиняюсь, сам нашёл ответ, всё оказалось элементарно:
AccountEquity() - AccountBalance()
 

eevviill

Заблокирован
iTime[],iOpen[]...
Являются ли эти переменные предопределёнными?
 

Andy200577

Новичок форума
iTime[],iOpen[]...
Являются ли эти переменные предопределёнными?

Все предопределённые переменные, насколько я понимаю, вот в этом списке- _http://docs.mql4.com/ru/predefined/variables
 
Последнее редактирование модератором:

Andy200577

Новичок форума
Пункты разные у разных пар бывают. Есть ли смысл?

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

ansol

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

1 пункт на разных парах стОит по-разному - см. MarketInfo(Symbol(), MODE_TICKVALUE)
Так что придется либо суммировать сделки по парам(OrderProfit()) в цикле, либо пункты в валюту депозита переводить/
Имхо, логичнее прибыль считать, а не пункты - ну это от вашей стратегии зависит, конечно.
 

moisei

Прохожий
Подскажите плиииз!

Здравствуйте.Подскажите пожалуйста как можно установить на индикаторе отправку на почту или на ID. Спасибо
 

perajok

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

ansol

Местный знаток
Пытаюсь "обрезать" лишние тики при тестировании:
PHP:
int start()
  {
// Для теста
         if(IsTesting() || IsOptimization()) 
            {
             int spread = Point*MarketInfo(Symbol(), MODE_SPREAD)/2;
               if(Volume[0] == 1) { Rhigh = Bid + spread; Rlow = Bid - spread; }
                  if(Bid >= Rlow && Bid <= Rhigh) return(0);
                     if(Rhigh < Bid) Rhigh = Bid + spread;
                     if(Rlow > Bid) Rlow = Bid - spread;
             }
...код совы...
return(0);
}
Rhigh и Rlow объявлены "до того как".
Т.е. болтание цены внутри уже пройденного диапазона не должно обрабатываться.
Например, спред в тесте ставим 10, тогда цена внутри ±5 тиков просто завершает обработку по return(0)
Эффекта не вижу, очень долго тестирует, может ошибка вкралась где-то у меня?
 
Последнее редактирование:

_SERG_

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


Читать алерты можно через глобальные переменные, если другие индикаторы или советники, эти переменные обновляют при работе. Но есть одна проблемка, считывать эти переменные индикатор или советник будет, при поступлении только котировки на тот график на котором установлен советник(индикатор).
Иными словами советник придётся зацикливать.

В общем решаемый вопрос. :D

А вот про "регулярные выражения" я чегото не понял.
 

eevviill

Заблокирован
Пытаюсь "обрезать" лишние тики при тестировании:
PHP:
int start()
  {
// Для теста
         if(IsTesting() || IsOptimization()) 
            {
             int spread = Point*MarketInfo(Symbol(), MODE_SPREAD)/2;
               if(Volume[0] == 1) { Rhigh = Bid + spread; Rlow = Bid - spread; }
                  if(Bid >= Rlow && Bid <= Rhigh) return(0);
                     if(Rhigh < Bid) Rhigh = Bid + spread;
                     if(Rlow > Bid) Rlow = Bid - spread;
             }
...код совы...
return(0);
}
Rhigh и Rlow объявлены "до того как".
Т.е. болтание цены внутри уже пройденного диапазона не должно обрабатываться.
Например, спред в тесте ставим 10, тогда цена внутри ±5 тиков просто завершает обработку по return(0)
Эффекта не вижу, очень долго тестирует, может ошибка вкралась где-то у меня?
PHP:
{ Rhigh = Bid + spread; Rlow = Bid - spread; }
                  if(Bid >= Rlow && Bid <= Rhigh) return(0);
допустим бид==4, спред 2
rh=4+2=6
rl=4-2=2
если(4>=2 && 4<=6) return

Вот тебе и ретурнает.
 

ansol

Местный знаток
PHP:
{ Rhigh = Bid + spread; Rlow = Bid - spread; }
                  if(Bid >= Rlow && Bid <= Rhigh) return(0);
допустим бид==4, спред 2
rh=4+2=6
rl=4-2=2
если(4>=2 && 4<=6) return

Вот тебе и ретурнает.

Не понял, пардон.
EURUSD Bid=1.30040
Spread я ставлю в тесте 10, половинка от него = 5
имеем rh=1.30045 и rh=1.30035
пока Bid за эти пределы не выползет на текущей свече, то должно пропускать тик по return
Или как? У меня-то похоже не пропускает, а обрабатывает все тики.

Может как-то по другому ускорить обработку? Оптимизация очень долго идет, даже если по часу 1 проход, то всего 24 комбинации в сутки проверяются.
 

eevviill

Заблокирован
Не понял, пардон.
EURUSD Bid=1.30040
Spread я ставлю в тесте 10, половинка от него = 5
имеем rh=1.30045 и rh=1.30035
пока Bid за эти пределы не выползет на текущей свече, то должно пропускать тик по return
Или как? У меня-то похоже не пропускает, а обрабатывает все тики.

Может как-то по другому ускорить обработку? Оптимизация очень долго идет, даже если по часу 1 проход, то всего 24 комбинации в сутки проверяются.
Может в этих строках проблема(я не уверен)?
PHP:
if(Rhigh < Bid) Rhigh = Bid + spread; 
                     if(Rlow > Bid) Rlow = Bid - spread;
 

ansol

Местный знаток
Может в этих строках проблема(я не уверен)?
PHP:
if(Rhigh < Bid) Rhigh = Bid + spread; 
                     if(Rlow > Bid) Rlow = Bid - spread;

В смысле? Фигурными скобками обточить? Счас попробую.
Так-то смысл в том, чтобы "полоса возврата" расширялась до размера всей свечи, т.е. изменение цены внутри свечи сову не интересует. Если цена такая на этой свече уже была, то ее повторно обрабатывать не надо.
На реале-то пофиг, а на тесте как-то надо ускорить процесс, вот я и выдумываю.
Там вот еще:
PHP:
if(Volume[0] == 1) { Rhigh = Bid + spread; Rlow = Bid - spread; }
Я правильно понимаю, что в тесте все тики обрабатываются всегда, т.е. Volume[0] == 1 - это первый тик текущей свечи?
 
Верх