Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии??? Голова уже болит, никак не могу придумать )))
Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии??? Голова уже болит, никак не могу придумать )))
if(isTime(Period()*60)){закрытьОткрытыйОрдер(); открытьНовыйОрдер()};bool isTime(int sec){bool res =false;staticdatetime 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);}
Это как я понимаю для бара с таймфреймом Н1, а куда писать код для открытия и закрытия цен, после if (isTime(Period()*60)),а что это значит, расшифруй пожалуйста )))
Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..
А если нет открытых ордеров(он же их закроет после этого бара), и просто открыть новый ордер, то ошибки не будет ???
дело в том что функция 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 тут же и заканчивается..
Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..
Я с чего Вы взяли что я злюсь.
Просто я так объясняю о том что
взяв любой знак неравенства и прогнав
в тестере можно добиться положительного
результата, с неким уровнем, и неважно какой уровень
в предыдущем замечании вы указали на мой недостаток, про неправильные уровни бай и сел.Для этого (как я понял) необходимо поменять местами знаки < >.
Для CCI всётаки надо или нет указывать -100????????????????????????
Возмите и запихните в тестер
и он покажет где результат лучше
где есть минус или где его нет
и какое число будет в итоге 250 или -250
Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии??? Голова уже болит, никак не могу придумать )))
Напишите или подскажите пожалуйста, как сделать так, чтобы ордер открывался с появлением нового бара и закрывался при его закрытии??? Голова уже болит, никак не могу придумать )))
Это как я понимаю для бара с таймфреймом Н1, а куда писать код для открытия и закрытия цен, после if (isTime(Period()*60)),а что это значит, расшифруй пожалуйста )))
неправильно понимаете.. Period()*60 это для любого ТФ - все выражается в секундах, т.е.
на М1 - 60 сек, М5 - 300 сек и т.д. (поскольку Period() на М1 возвращает 1, на М5 - 5..)
ну вот же я образно написал
смысл этого - при появлении нового бара закрыть открытый ордер и открыть новый.. надеюсь сами функции закрытия позиций и
открытия новых сами напишете.. если не можете, то для начала посмотрите учебник https://book.mql4.com/ru/
неправильно понимаете.. Period()*60 это для любого ТФ - все выражается в секундах, т.е.
на М1 - 60 сек, М5 - 300 сек и т.д. (поскольку Period() на М1 возвращает 1, на М5 - 5..)
ну вот же я образно написал
смысл этого - при появлении нового бара закрыть открытый ордер и открыть новый.. надеюсь сами функции закрытия позиций и
открытия новых сами напишете.. если не можете, то для начала посмотрите учебник https://book.mql4.com/ru/
А если нет открытых ордеров(он же их закроет после этого бара), и просто открыть новый ордер, то ошибки не будет ???
Возмите и запихните в тестер
и он покажет где результат лучше
где есть минус или где его нет
и какое число будет в итоге 250 или -250
Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..
А если нет открытых ордеров(он же их закроет после этого бара), и просто открыть новый ордер, то ошибки не будет ???
дело в том что функция OrderClose(), закрывающая ордер первым параметром принимает номер ордера, а номер ордера можно получить только обратившись через OrderSelect() к имеющимся ордерам, таким образом в общем случае закрытие выглядит примерно так..
если OrdersTotal() = 0, т.е. нет открытых ордеров, то цикл for тут же и заканчивается..
Не злись satop. Каждый был начинающим, каждый задавал глупые вопросы. Вспомни школу. Ведь наверняка, были почемучки. Им было интересно, они хотели узнать. разобраться и научиться. Со временем они конечно доставали, но это говорит о том, что те кто злился быстрее всё схватывали и понимали. Но ведь обе методики обучения ИМЕЮТ право на жизнь. Кесарю кесарево......Не обижайся.......Я ведь не отрицаю что я чайник, но мне интересно. Без обид..
Я с чего Вы взяли что я злюсь.
Просто я так объясняю о том что
взяв любой знак неравенства и прогнав
в тестере можно добиться положительного
результата, с неким уровнем, и неважно какой уровень
положительный или отрицательный. И на вопрос
как правильно, с минусом или без, брать уровень,
чётких разграничений к сожалению нет.ИМХО