[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 51

 
valenok2003:

там вообще-то так

в принт выдаёт _dif = 0.01, но _Lot = 0;

Возможно задано

int _Lot; //тогда будет обрезать все, что меньше единицы

а надо задать:

double _Lot;


 
forexnew:

Возможно задано

int _Lot; //тогда будет обрезать все, что меньше нуля

а надо задать:

double _Lot;



double _Lot;
double _Lot_BUY = 0;
double _Lot_SELL = 0;
double _Lot_BUYSTOP = 0;
double _Lot_SELLSTOP = 0;
 

вот ещё конструкция

   if(_Lot_BUY > _Lot_SELL+_Lot_SELLSTOP) {
       _dif = _Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP);
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >= 0.01) _Lot = 0.01;
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=  0.1) _Lot =  0.1; 
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=    1) _Lot =    1;   
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=   10) _Lot =   10; 

Print(_dif +" установка2 _Lot = "+_Lot+ "_Lot_BUY = "+_Lot_BUY+ "_Lot_BUYSTOP = "+_Lot_BUYSTOP+ "_Lot_SELL = "+_Lot_SELL+ "_Lot_SELLSTOP = "+_Lot_SELLSTOP);

      _Price = NormalizeDouble((Low [iLowest (Symbol(),TF_Cnt_Bar_for_Lock,MODE_LOW, _Bars_PP_OP_SELLSTOP,0)]- Dist_For_Boot*Point),Digits);
      if(Bid - _Price < Dist_For_Boot*Point) {
         _Bars_PP_OP_SELLSTOP *=2;
         _RESET_Bars_PP_OP_SELLSTOP = false;
      }
      if(set_order_sellstop(_Price, _Lot, _Txt_Lock+Comment_Order)!= -1) _RESET_Bars_PP_OP_SELLSTOP = true;
   }

так не работает, а в следующем примере работает

   if(_Lot_BUY > _Lot_SELL+_Lot_SELLSTOP) {
       _dif = _Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP);
      //if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >= 0.01) 
      _Lot = 0.01;
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=  0.1) _Lot =  0.1; 
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=    1) _Lot =    1;   
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=   10) _Lot =   10; 

Print(_dif +" установка2 _Lot = "+_Lot+ "_Lot_BUY = "+_Lot_BUY+ "_Lot_BUYSTOP = "+_Lot_BUYSTOP+ "_Lot_SELL = "+_Lot_SELL+ "_Lot_SELLSTOP = "+_Lot_SELLSTOP);

      _Price = NormalizeDouble((Low [iLowest (Symbol(),TF_Cnt_Bar_for_Lock,MODE_LOW, _Bars_PP_OP_SELLSTOP,0)]- Dist_For_Boot*Point),Digits);
      if(Bid - _Price < Dist_For_Boot*Point) {
         _Bars_PP_OP_SELLSTOP *=2;
         _RESET_Bars_PP_OP_SELLSTOP = false;
      }
      if(set_order_sellstop(_Price, _Lot, _Txt_Lock+Comment_Order)!= -1) _RESET_Bars_PP_OP_SELLSTOP = true;
   }
 

причём в лог выводит следующее сообщение

0.01000000 установка2 _Lot = 0.00000000_Lot_BUY = 0.03000000_Lot_BUYSTOP = 0.00000000_Lot_SELL = 0.00000000_Lot_SELLSTOP = 0.02000000
17:07:12 Expert_V3 GBPUSD,M1: invalid lots amount for OrderSend function

однако, пока не хватало 3-х SELLSTOP-ов он первые два установил без проблем, а на третьем споткнулся.

то есть почему он не присваивает лоту значение 0.01, хотя перменную _dif вычисляет правильно...

 
Roger:


Это Вы так задумали?

Он будет открывать ордера только начиная со второго. Даже не со второго, а с третьего.

Спасибо
 
Подскажите пожалуйста, можно ли определить время начало торговой сессии (например для москвы это 10-35 и т.д.) или просто завести переменную и в нее записать значение? Это надо для того, что бы не выставлять ордера в начале сессии, а определиться с направлением.
 
first_may:
Подскажите пожалуйста, можно ли определить время начало торговой сессии (например для москвы это 10-35 и т.д.) или просто завести переменную и в нее записать значение? Это надо для того, что бы не выставлять ордера в начале сессии, а определиться с направлением.
Расписание торговых сессий Forex
 

То есть предлагается просто использовать переменную, которая хранит начало сессии. Спасибо.
 
И еще - лучший индикатор сессий, который мне попадался.
P.S.
Нашел его в базе. https://www.mql5.com/ru/code/9313
Файлы:
 
А есть ли пример функции по работе с датами, то есть определить разность между двумя датами, она больше нуля или нет?
Причина обращения: