Здравствуйте. Только начал постигать азы программирования на 4-ке. Никак не могу осилить код формулы процентной разницы двух чисел -- процентная разница = | (a — b) / [ (a + b) / 2 ] | * 100 %. Как она будет выглядеть в коде исключающим деление на ноль? Заранее признателен за помощь.
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
Приветствую. Ребята подскажите , как в сове индикатор выводить на другой таймфрейм. Например рабочий М5 , а выводить визуально нужно Стохастик М15. И можно ли в одном окне его вывести вместе с Стохастик М5 ?
4 часа назад, batmanuyga сказал:И можно ли в одном окне его вывести вместе с Стохастик М5 ?
посмотрите любой MTF- индикатор. На этом же портале в разделе Классические индикаторы их море...
Комрады, как завершить работу пк если наступило условие, например стоп лосс сработал, и нет нужды больше пк работать, какая функция за это отвечает? а может и просто терминал закрыть, помню гдето что то подобное писалось, но не знаю где уже искать это!
@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 ); // посылаем в родительское окно команду закрыться }
Выключить комп тоже возможно, но если закроете терем выполнить код будет некому...
Изменено 29 августа, 2019 пользователем 0ll
Подскажите, есть функция трала, но она почему то тралит не только свои ордера, но и ордера открытые вручную
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); } } } } }
Изменено 30 августа, 2019 пользователем 0ll
@Partorius расставьте скобки аккуратнее и увидите, что обработка Селл ордеров вне сортировки, если не получится исправить - пишите
дублирования Shift в параметрах индикатора.
порой и даже часто в советнике при вызове iCustom() или встроенного индикатора
присутствует Shift(сдвиг относительно нижней оси) в параметрах. и он всегда дублируется еще последним параметром.
например: iMA(symbol, timeframe, ma_period, ma_shift, ma_method, applied_price, shift);
ma_period дублируется shift-ом. причем по наблюдением, лучше использовать брать первый параметр и игнорировать последней - "вроде бы". если дублировать два shifta одной переменной, то какая-то лажа выходит. бывает так что при использования например одного shift считает правильно - рисует нет, и наоборот.
короче постоянная путаница выходит. есть ли у кого полностью сформулированное правило или алгоритм касаясь этого вопроса? какой из "шифтов" и когда все таки лучше использовать?
1 час назад, Ar4i сказал:ma_period дублируется shift-ом
ma_period - Период усреднения для вычисления индикатора. - т.е. сколько баров усреднить
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). - т.е. с какого бара выдать значение
Даже не знаю как ещё справку расшифровать - вроде понятно расписано... Короче это сильно разные параметры.
Изменено 6 сентября, 2019 пользователем MikR0ReR
Помогите в написании индикатора, который автоматически рисует уровни, равные ATR/2 за определённый период в днях: например 21 день, 30, 100 и т.д. ATR настраивается. Линии рисуются в обе стороны вверх и вниз от цены закрытия прошедшего дня. Линии рисуются от начала текущего дня и только в текущем дне. При наступлении следующего дня, уровни прошлого дня удаляются. Стили линий настраиваются.
В 06.09.2019 в 20:25, 0ll сказал:ma_period - Период усреднения для вычисления индикатора. - т.е. сколько баров усреднить
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). - т.е. с какого бара выдать значение
Даже не знаю как ещё справку расшифровать - вроде понятно расписано... Короче это сильно разные параметры.
всем спасибо за ответы, ясно. с МАшкой лохонулся не хватило уважения к простым инструментам. ну а как все таки быть с iCustom()?
1 минуту назад, Ar4i сказал:ну а как все таки быть с iCustom()?
А что с ним?
В 06.09.2019 в 20:31, MikR0ReR сказал:
А... ma_period и shift, ща нарисую
![]()
спасибки за рисунки! они всегда приятны.
а что такое все таки ma_shift. я вижу сдвиг вверх вниз в поинтах от ma_shift =0; с каким то ускорением.
какая все таки формула расчета у этого параметра? в общих чертах можно?
Изменено 9 сентября, 2019 пользователем Ar4i
17 минут назад, MikR0ReR сказал:А что с ним?
в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара, где угодно. а справка по iCustom() предписывает шифт в конце. можно его конечно не писать в iCustom() - а сбоев не будет?
Изменено 9 сентября, 2019 пользователем Ar4i
18 минут назад, Ar4i сказал:ma_shift
- сдвиг данных (графика) по горизонтали (шкала времени)
18 минут назад, Ar4i сказал:вверх вниз
- я не наблюдаю ни какого сдвига по вертикали, только по горизонтали
18 минут назад, Ar4i сказал:поинтах
- не понял о чем речь (ну это не важно если я ответил на твой вопрос)
18 минут назад, Ar4i сказал:ускорением
- не понял о чем речь (ну это не важно если я ответил на твой вопрос)
19 минут назад, Ar4i сказал:формула расчета
- а... м... а... ту саму формулу не скажу, она защита в программу с закрытым исходным кодом. суть ее такова, взять массив и сместить его в право, лево на х баров. что и продемонстрировал на скрине.
18 минут назад, Ar4i сказал:в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара где угодно. а справка по iCustom() приписывает шифт в конце. можно его не писать в iCustom() - а сбоев не будет?
ту я запутался, несколько раз прочитал, так и не понял о чем ты.
В 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] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
12 часов назад, Ar4i сказал:в пользовательском индикаторе может быть забит параметр Шифта-именно того который относителен последнего бара, где угодно. а справка по iCustom() предписывает шифт в конце. можно его конечно не писать в iCustom() - а сбоев не будет?
ясно спасибо. а в iCustom()?
В 10.09.2019 в 12:06, Ar4i сказал:ясно спасибо. а в iCustom()?
(Курс молодого бойца)не могу получить не приходит письмо для скачивания-как быть??
17 минут назад, Александр 1939 сказал:не приходит письмо для скачивания-как быть??
временная почта поможет
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем