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

mangold

Активный участник
Давай попробую, но он не все индикаторы от мт4 принимает. Может у меня такой уже готовый есть
 

vladradon

Программист
Всем привет! У меня вопрос на засыпку: на демо счете Альпари функция подсчета профита по истории выдает при выборке ордеров по меджику или по комменту все правильно, но если на девственном счете убрать выборку и включить все ордера, то почему-то приплюсовывается изначальный депозит (с выборкой 100 реальный профит (к примеру), без выборки - баланс+профит, т.е. 5100, где 5000 - изначальный баланс). Получается, что подсчитать профит с учетом ручных ордеров (без меджика и т.п.) невозможно?
Или я очередной раз туплю...:D:
 
Последнее редактирование:

PavlovTrade

Местный житель
Всем привет! У меня вопрос на засыпку...
Смотря как считаете. По умолчанию на счете нулевой баланс. Депозит технически считается как ордер, без меджика. У него тип 6 (OrderType()). Т.е. отфильтровывая ордера 6го типа можно все подсчитать.
 

vladradon

Программист
Т.е. отфильтровывая ордера 6го типа можно все подсчитать.

Смотря как считаете. По умолчанию на счете нулевой баланс. Депозит технически считается как ордер, без меджика. У него тип 6 (OrderType()). Т.е. отфильтровывая ордера 6го типа можно все подсчитать.
Спасибо за инфу - в тестере работает вроде - не знал про 6-й.)))
 

mobidik

-----
А есть еще какие-нибудь типы ордеров, которые нужно учитывать в прогах, чтобы не попасть в просак?

Все зависит от того, какие поставлены цели. О типе ордеров = 6 справка молчит, у каждого брокера тут свои заморочки, нужно смотреть комент данных ордеров, как вариант, может быть: пополнение счета, вывод средств, бонус, рибейт. Можно узнать откуда/куда был сделан ввод/вывод средств: киви, яндекс, вм и т.д.
 

vladradon

Программист
Все зависит от того, какие поставлены цели. О типе ордеров = 6 справка молчит, у каждого брокера тут свои заморочки, нужно смотреть комент данных ордеров, как вариант, может быть: пополнение счета, вывод средств, бонус, рибейт. Можно узнать откуда/куда был сделан ввод/вывод средств: киви, яндекс, вм и т.д.
Так и вопрос встал не для каких-то серьезных расчетов, а для вывода инфы по полученной прибыли на счете, но после того, как я ввел в сове возможность управления чужими (ручными или ордерами от других сов, - у которых нет меджиков или комментов, или эти параметры другие) ордерами. Ордера в рынке - не проблема, а в истории мне нужно только суммарный профит подсчитать, что в итоге получается можно сделать не исключением какого-то типа ордеров, а подсчетом только профита определенных типов ордеров. Что в итоге тоже проще сделать в проверке исключением типа этого:
PHP:
void ProfitAll()
  {
   profitsumm=0;
   for(int i=0; i<OrdersHistoryTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()!<0) && OrderType()!>1)
      if((!UseCustom && StringSubstr(OrderComment(),0,StringLen(Name))==Name)||UseCustom)
         profitsumm+=OrderProfit()+OrderSwap()+OrderCommission();
     }
  }
 
Последнее редактирование:

vladradon

Программист
Мне раньше и в голову не приходило использовать ! вместе с <>...
Прикольно
Тёзка, восклицательный знак - это отрицание следующей команды или инструкции. Вот тупо проверка на правильность ввода времени работы сова (Timing):
if(!(StartHour<0 || StartHour>23 || StartMinute<0 || StartMinute>59 || EndHour<0 || EndHour>23 || EndMinute<0 || EndMinute>59) &&
(StartHour>0 || StartHour>0 || StartMinute>0 || StartMinute>0 || EndHour>0 || EndHour>0 || EndMinute>0 || EndMinute>0))
st=DoubleToStr(StartHour,0)+":"+DoubleToStr(StartMinute,0)+" - "+DoubleToStr(EndHour,0)+":"+DoubleToStr(EndMinute,0);
Но, конечно, с учётом входных параметров:
extern int StartHour=0;
extern int StartMinute=0;
extern int EndHour=0;
extern int EndMinute=0;
 
Последнее редактирование:

mobidik

-----
Так и вопрос встал не для каких-то серьезных расчетов, а для вывода инфы

Есть индюк "cm History Info", в сети есть несколько модификаций, посмотри в качестве примера, там есть вывод инфы для ордеров типа "6". Прикрепляю один из его вариантов:
 

Вложения

  • cm History Info v12.mq4
    18,3 КБ · Просмотры: 16

vladradon

Программист
Есть индюк "cm History Info", в сети есть несколько модификаций, посмотри в качестве примера, там есть вывод инфы для ордеров типа "6". Прикрепляю один из его вариантов:
Спасибо, конечно, но весь смысл в том. чтобы избавиться от зависимости от брокера! Поэтому последний вариант (методом исключения включением только определенных типов) считаю оптимальным. Ты, кстати, выйди в скайп - есть тема...
 

vladradon

Программист
Я про то, что вместо !< мне в голову приходит обычно >=
Да пребудет тебе в голову только безвосклицательные и правильнорасчётные мысли! Ты же в курсе, в чём сила, брат?
 
Последнее редактирование:

eevviill2

Местный знаток
Почему метаКроты сделали так?
(EURGBP,начало торгов в 00-00 понедельник)

iTime(Symbol(),PERIOD_W1,0)
возвращает 00-00 восресенья????????????????
 

PavlovTrade

Местный житель
Почему метаКроты сделали так?
(EURGBP,начало торгов в 00-00 понедельник)

iTime(Symbol(),PERIOD_W1,0)
возвращает 00-00 восресенья????????????????
Потому что неделя начинается с воскресенья в коде. (за бугром во многих странах официально). В этом есть смысл так как торги точно не будут идти до воскресенья, а вот открыться у некоторых брокеров например в 22:00 или 23:00 в воскресенья очень даже могу.

дни недели (DayOfWeek() и TimeDayOfWeek()):
0 - воскресенье
1 - понедельник
...
6 - суббота
 
Верх