[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 12

 
вот оно
Файлы:
 
igrok2008 >>:

в предыдущем замечании вы указали на мой недостаток, про неправильные уровни бай и сел.Для этого (как я понял) необходимо поменять местами знаки < >.

Для CCI всётаки надо или нет указывать -100????????????????????????

Возмите и запихните в тестер

и он покажет где результат лучше

где есть минус или где его нет

и какое число будет в итоге 250 или -250

 

Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии???   Голова уже болит, никак не могу придумать )))

 
vadim2304 >>:

Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии??? Голова уже болит, никак не могу придумать )))

if (isTime(Period()*60)) {закрытьОткрытыйОрдер(); открытьНовыйОрдер()};


bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0;
   if (TimeCurrent() >= time){
      min = MathFloor(sec / 60);
      if (min==0) min = 1.0;         
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/min) + 1) * min * 60;
      res = true;
   } 
   return(res);
}
 
keekkenen >>:

Это как я понимаю для бара с таймфреймом Н1, а куда писать код для открытия и закрытия цен, после  if (isTime(Period()*60)),а что это значит, расшифруй пожалуйста )))

 

неправильно понимаете.. Period()*60 это для любого ТФ - все выражается в секундах, т.е.

на М1 - 60 сек, М5 - 300 сек и т.д. (поскольку Period() на М1 возвращает 1, на М5 - 5..)

ну вот же я образно написал

if (isTime(Period()*60)) {закрытьОткрытыйОрдер(); открытьНовыйОрдер()};

смысл этого - при появлении нового бара закрыть открытый ордер и открыть новый.. надеюсь сами функции закрытия позиций и

открытия новых сами напишете.. если не можете, то для начала посмотрите учебник https://book.mql4.com/ru/

 
keekkenen >>:

неправильно понимаете.. Period()*60 это для любого ТФ - все выражается в секундах, т.е.

на М1 - 60 сек, М5 - 300 сек и т.д. (поскольку Period() на М1 возвращает 1, на М5 - 5..)

ну вот же я образно написал

смысл этого - при появлении нового бара закрыть открытый ордер и открыть новый.. надеюсь сами функции закрытия позиций и

открытия новых сами напишете.. если не можете, то для начала посмотрите учебник https://book.mql4.com/ru/


А если нет открытых ордеров(он же их закроет после этого бара), и просто открыть новый ордер, то ошибки не будет ???

 
satop >>:

Возмите и запихните в тестер

и он покажет где результат лучше

где есть минус или где его нет

и какое число будет в итоге 250 или -250

Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..

 
vadim2304 >>:

А если нет открытых ордеров(он же их закроет после этого бара), и просто открыть новый ордер, то ошибки не будет ???

дело в том что функция OrderClose(), закрывающая ордер первым параметром принимает номер ордера, а номер ордера можно получить только обратившись через OrderSelect() к имеющимся ордерам, таким образом в общем случае закрытие выглядит примерно так..

bool res = false;
int slippage = 3;

for (int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) &&
         OrderSymbol()==Symbol()){

      while (IsTradeContextBusy() || !IsTradeAllowed())
         {Comment("Торговый поток занят ...");Sleep(2000);}               
      res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,CLR_NONE);
      if (res){  
         res = true; Comment("Ордер закрыт !");              
      }else{
         Comment("Ошибка - ", msg);
      }
   }
}
  


если OrdersTotal() = 0, т.е. нет открытых ордеров, то цикл for тут же и заканчивается..

 
igrok2008 >>:

Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..

Я с чего Вы взяли что я злюсь.

Просто я так объясняю о том что

взяв любой знак неравенства и прогнав

в тестере можно добиться положительного

результата, с неким уровнем, и неважно какой уровень

положительный или отрицательный. И на вопрос

как правильно, с минусом или без, брать уровень,

чётких разграничений к сожалению нет.ИМХО

Причина обращения: