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

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


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

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

Здравствуйте. Только начал постигать азы программирования на 4-ке. Никак не могу осилить код формулы процентной разницы двух чисел -- процентная разница = | (a — b) / [ (a + b) / 2 ] | * 100 %. Как она будет выглядеть в коде исключающим деление на ноль? Заранее признателен за помощь.

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

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

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

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

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

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

Перейти

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

Перейти

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

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

@zened придётся делать проверку, только надо определиться с конечным результатом при (a+b) = 0, например так:

double res = 0;  // 0 - результат по умолчанию, можно заменить на другой

if ( a+b != 0 ) { res = MathMod( (a-b) / ( (a+b) / 2 ) ) * 100; }

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

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

Приветствую. Ребята подскажите , как в сове индикатор выводить на другой  таймфрейм. Например рабочий М5 , а выводить визуально нужно Стохастик М15. И можно ли в одном окне его вывести вместе с Стохастик  М5 ?

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

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

И можно ли в одном окне его вывести вместе с Стохастик  М5 ?

посмотрите любой MTF- индикатор. На этом же портале в разделе Классические индикаторы  их море...

 

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

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

Комрады, как завершить работу пк если наступило условие, например стоп лосс сработал, и нет нужды больше пк работать, какая функция за это отвечает? а может и просто терминал закрыть, помню гдето что то подобное писалось, но не знаю где уже искать это!

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

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

@vitek01 вот функция от KimIV:

#include <WinUser32.mqh>
void CloseTerminal ( )
{
   Print("Сработала функция CloseTerminal()");
   int hwnd=WindowHandle( Symbol(), Period() );  // возвращает номер окна графика
   int hwnd_parent=0;
   while ( !IsStopped ( ) )
   {
      hwnd=GetParent( hwnd );      // поиск номера самого верхнего родительского окна
      if (hwnd==0) break;          // нашли и вышли
      hwnd_parent=hwnd;
   }
   if (hwnd_parent!=0) PostMessageA ( hwnd_parent, WM_CLOSE, 0, 0 );    // посылаем в родительское окно команду закрыться
}

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

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

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

Подскажите, есть функция трала, но она почему то тралит не только свои ордера, но и ордера открытые вручную

Спойлер

 


void Trailing()
{
     for(int x=OrdersTotal() - 1; x>= 0; x--) 
     {
       if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TrailingStop>0)
       {
          if(OrderType()==OP_BUY)
          {                 
              if(Bid-OrderOpenPrice()>TrailingStop*Point)
              {
                 if(OrderStopLoss()<Bid-TrailingStop*Point)
                 {
                     double sl = NormalizeDouble(Bid - TrailingStop*Point, Digits);
                     OrderModify(OrderTicket(),OrderOpenPrice(), sl,OrderTakeProfit(),0,Green);
                 }
              }
          }
       }
       
          if(OrderType()==OP_SELL)
          {
              if((OrderOpenPrice()-Ask)>TrailingStop*Point)
              {
                 if ((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                 { 
                     sl = NormalizeDouble(Ask+TrailingStop*Point, Digits);
                     OrderModify(OrderTicket(),OrderOpenPrice(), sl,OrderTakeProfit(),0,Red);
                    }
                 }
              }   
          }

}

 

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

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

@Partorius расставьте скобки аккуратнее и увидите, что обработка Селл ордеров вне сортировки, если не получится исправить - пишите

 

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

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

 дублирования Shift в параметрах индикатора.

 

 порой и даже часто в советнике при вызове  iCustom() или встроенного индикатора
 присутствует Shift(сдвиг относительно нижней оси) в параметрах. и он всегда дублируется еще последним параметром. 
 например: iMA(symbol, timeframe, ma_period, ma_shift, ma_method, applied_price, shift); 
  ma_period дублируется shift-ом. причем по наблюдением, лучше использовать брать первый параметр и игнорировать последней - "вроде бы". если дублировать два shifta одной переменной, то какая-то лажа выходит. бывает так что при использования например одного shift считает правильно - рисует нет, и наоборот.
 короче постоянная путаница выходит. есть ли у кого полностью сформулированное правило или алгоритм касаясь этого вопроса? какой из "шифтов" и когда все таки лучше использовать?

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

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

ma_period дублируется shift-ом

ma_period - Период усреднения для вычисления индикатора. - т.е. сколько баров усреднить

 

shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). - т.е. с какого бара выдать значение

Даже не знаю как ещё справку расшифровать - вроде понятно расписано... Короче это сильно разные параметры.

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

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

Это разные шифты.ghbv.thumb.png.b0a2f2348a99d67463a2201b20880062.png

 

А... ma_period и shift, ща нарисую :)

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

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

Помогите в написании индикатора, который автоматически рисует уровни, равные ATR/2 за определённый период в днях: например 21 день, 30, 100 и т.д. ATR настраивается. Линии рисуются в обе стороны вверх и вниз от цены закрытия прошедшего дня. Линии рисуются от начала текущего дня и только в текущем дне. При наступлении следующего дня, уровни прошлого дня удаляются. Стили линий настраиваются.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 06.09.2019 в 20:25, 0ll сказал:

ma_period - Период усреднения для вычисления индикатора. - т.е. сколько баров усреднить

 

shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). - т.е. с какого бара выдать значение

Даже не знаю как ещё справку расшифровать - вроде понятно расписано... Короче это сильно разные параметры.

всем спасибо за ответы, ясно. с МАшкой  лохонулся не хватило уважения к простым инструментам. ну а как все таки быть с iCustom()?

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 06.09.2019 в 20:31, MikR0ReR сказал:

 

А... ma_period и shift, ща нарисую :)

спасибки за рисунки! они всегда приятны.

а что такое все таки ma_shift. я вижу сдвиг вверх вниз в поинтах от ma_shift =0; с каким то ускорением.

какая все таки формула расчета у этого параметра? в общих чертах можно?

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

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

А что с ним?

в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара, где угодно. а справка по iCustom() предписывает шифт в конце. можно его конечно не писать в  iCustom() - а сбоев не будет?

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

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

ma_shift

- сдвиг данных (графика) по горизонтали (шкала времени)

18 минут назад, Ar4i сказал:

вверх вниз

- я не наблюдаю ни какого сдвига по вертикали, только по горизонтали

18 минут назад, Ar4i сказал:

поинтах

- не понял о чем речь (ну это не важно если я ответил на твой вопрос)

18 минут назад, Ar4i сказал:

ускорением

- не понял о чем речь (ну это не важно если я ответил на твой вопрос)

19 минут назад, Ar4i сказал:

формула расчета

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

18 минут назад, Ar4i сказал:

в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара где угодно. а справка по iCustom() приписывает шифт в конце. можно его не писать в  iCustom() - а сбоев не будет?

ту я запутался, несколько раз прочитал, так и не понял о чем ты.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 06.09.2019 в 20:25, 0ll сказал:

ma_period дублируется shift-ом

 извиняюсь за опечатку: MA_SHIFT  дублируется SHIFT-ом  (а не ma_period дублируется shift-ом.  всех и себя запутал)).

iMA(symbol, timeframe, ma_period, MA_SHIFT, ma_method, applied_price, SHIFT); 

из справки:

ma_shift   [in]  Сдвиг индикатора относительно ценового графика.

shift         [in]  Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

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

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

@Ar4i ma_shift   сдвигает график машки вверх/вниз относительно ЦЕНЫ, в параметре shift  Вы указываете с какого бара хотите получать данные: например с 0-бара не хотите (они там не сформировались), а хотите с 1-бара - вот и пишите shift = 1. Все параметры разные, никакого дублирования нет!

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

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

в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара, где угодно. а справка по iCustom() предписывает шифт в конце. можно его конечно не писать в  iCustom() - а сбоев не будет?

ясно спасибо. а в iCustom()?

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

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

@Ar4i Вы в терминале на графике индюк смотрели? Терминал для того чтобы Вам показать линии индюка использует shift - вот и Вы используйте чтоб получить те же значения. а будут сбои или нет - никто не скажет.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 10.09.2019 в 12:06, Ar4i сказал:

ясно спасибо. а в iCustom()?

(Курс молодого бойца)не могу получить не приходит письмо для скачивания-как быть??

 

 

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

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

не приходит письмо для скачивания-как быть??

временная почта поможет

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

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

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

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

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

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

Войти

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

Войти

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


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

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