AlexeyVik
Программист mql4 mql5
А что важней, сделать или чтобы сын научился программированию?И все же... Сын сидит и "сушит мозги" - не может понять в чем ошибка. Пожалуйста!
А что важней, сделать или чтобы сын научился программированию?И все же... Сын сидит и "сушит мозги" - не может понять в чем ошибка. Пожалуйста!
Всем привет, можно вылечить от запаздывания... в здоровом состоянии ему это не свойственно....
Вообще-то там логика ужасная. Зачем выводить эти переменные во внешниеОн далек от Форекса, но хочет понять, что он сделал не так. И, возможно, в дальнейшем пригодится (есть пара идей). Если бы кто-то довел до ума эту сову, была бы очень благодарна.
extern int ticket;
extern int total;
extern int CurTime;
extern int BeginHour = 6;
extern int BeginMinute = 30;
extern int EndHour = 22;
extern string BeginTime = "6:30:00";
extern string EndTime = "22:05:00";
if(Time[0] == StringToTime(BeginTime) && Time[0] <= StringToTime(EndTime))
{
// Здесь работаем открытие ордеров
}
Точно не скажу минут на 5-10 но вроде от ТФ зависит, mq4 нетуна сколько баров запаздывает?
есть mq4 в формате?
mq4 нету
Вроде как подправил. Спасибо! Указал открывание ордера именно на первом тике. Успела только на одном ордере проверить - не частил, открылся только один. С понедельника протестим основательней.Что бы не частило на каждом баре по несколько раз - как только на текущем баре открыли позицию - запомнили время бара и запрещаем любые действия до появления нового бара. Но, поверь, из-за перерисовки нужно делать дополнительные проверки. Вы понаблюдайте за ним на ТФ М1, когда и как он переходит через "0" - в реале возможна кучка ордеров подряд вне зависимости от рабочего ТФ...
Что значит не хочет умножать? Может умножает, но не открывает ордер из-за неправильного размера лота?Помогите разобраться с этим советником, советник простой но меня интересует почему он не хочет умножать лоты доливочных ордеров на дробную переменную, например 1.4, только целые, 2 или 3. Спасибо.
Насколько сын понял, по Вашему коду открывается только один ордер во время начала работы советника. На всякий случай попробовали - за вечер не открылось ни одного ордера, хотя сигналы были (наблюдала на минутках). Но все равно спасибо, из вашего кода он что-то для себя понял и переделал, в понедельник проверим.Вообще-то там логика ужасная. Зачем выводить эти переменные во внешние
Зачем дважды вводить время начала и завершения работы?Код:extern int ticket; extern int total; extern int CurTime;
Достаточно двух последних.Код:extern int BeginHour = 6; extern int BeginMinute = 30; extern int EndHour = 22; extern string BeginTime = "6:30:00"; extern string EndTime = "22:05:00";
Я-бы посоветовал сделать так:
В данном случае день не важен. Он автоматом прицепится сегодняшний.Код:if(Time[0] == StringToTime(BeginTime) && Time[0] <= StringToTime(EndTime)) { // Здесь работаем открытие ордеров }
Дальше пусть сам спрашивает, не надо стесняться.
Я не говорил о корявости, я говорил о логике. Именно логику и правим сообща. Там в мою подсказку закралась ошибка. Я её только сейчас увидел. Надо вместо == поставить >=Насколько сын понял, по Вашему коду открывается только один ордер во время начала работы советника. На всякий случай попробовали - за вечер не открылось ни одного ордера, хотя сигналы были (наблюдала на минутках). Но все равно спасибо, из вашего кода он что-то для себя понял и переделал, в понедельник проверим.
Если за выходные не получится исправить остальное, сам обратится. Спасибо.
А по поводу корявости кода - работает с ним в первый раз и это еще не подчищенный черновой вариант.
if(Time[0] [COLOR=Red][B]>=[/B][/COLOR] StringToTime(BeginTime) && Time[0] <= StringToTime(EndTime))
{
// Здесь работаем открытие ордеров
}
Что значит не хочет умножать? Может умножает, но не открывает ордер из-за неправильного размера лота?
Ну, так на бумажке карандашиком посчитай сколько получится если умножить 0.01 на 1.5 и округлить до 2х знаков в меньшую сторону. Поставь лот 0.1 и проверь.Если коэффициент умножения установить 2, то все последующие открытые ордера соответственно увеличивают объем лота, а если множитель будет например 1.5, лот 0.01, то все далее открытые ордера будут 0.01 не увеличивая лота.
Ну, так на бумажке карандашиком посчитай сколько получится если умножить 0.01 на 1.5 и округлить до 2х знаков в меньшую сторону. Поставь лот 0.1 и проверь.
Поправил.Посмотрите плиз индикаторы...не отображаются, я в коде ни бум-бум![]()
Ну, так на бумажке карандашиком посчитай сколько получится если умножить 0.01 на 1.5 и округлить до 2х знаков в меньшую сторону. Поставь лот 0.1 и проверь.
Помогите разобраться с этим советником, советник простой но меня интересует почему он не хочет умножать лоты доливочных ордеров на дробную переменную, например 1.4, только целые, 2 или 3. Спасибо.
"...в меньшую сторону...", - это по чьим правилам?