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

От xbms, 13 апреля, 2013 в Уголок Программиста

#5676

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

#5677

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

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

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

#5678

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

#5679
4 часа назад, batmanuyga сказал:

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

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

 

#5680

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

#5681

@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

#5682

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

Спойлер

 


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

#5683

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

 

#5684

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

 

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

#5685
1 час назад, Ar4i сказал:

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

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

 

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

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

#5686

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

 

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

Изменено 6 сентября, 2019 пользователем MikR0ReR

#5687

2037232510_.thumb.jpg.6430fc68d30bdaa91526eabda85816cc.jpg

 

Так что это разные вещи.

Изменено 6 сентября, 2019 пользователем MikR0ReR

#5688

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

#5689

@slava23 посмотрите Daily Open line v MTF ADR levels здесь

#5690
В 06.09.2019 в 20:25, 0ll сказал:

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

 

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

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

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

#5691
1 минуту назад, Ar4i сказал:

ну а как все таки быть с iCustom()?

А что с ним?

#5692
В 06.09.2019 в 20:31, MikR0ReR сказал:

 

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

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

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

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

Изменено 9 сентября, 2019 пользователем Ar4i

#5693
17 минут назад, MikR0ReR сказал:

А что с ним?

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

Изменено 9 сентября, 2019 пользователем Ar4i

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

ma_shift

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

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

вверх вниз

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

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

поинтах

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

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

ускорением

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

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

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

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

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

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

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

#5695
В 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]  Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

#5696

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

#5697
12 часов назад, Ar4i сказал:

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

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

#5698

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

#5699
В 10.09.2019 в 12:06, Ar4i сказал:

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

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

 

 

#5700
17 минут назад, Александр 1939 сказал:

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

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

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

Перейти к списку тем
Форум · 2.0.20260627.0025