Для ТР1 - bool TP1, для TP2 - bool TP2, и т.д. ...
Изначально их значения false.
Перед очередным закрытием делаете проверку:
if (!TP1) {код частичного закрытия первой части, после успешного закрытия пишете TP1=true}
if (!TP2) {код частичного закрытия второй части, после успешного закрытия пишете TP2=true}
... и так для всех частей...
таким образом флаги будут сигнализировать об единожды уже проведённом закрытии каждой части...
Спасибо! Переделал код... TP0==false обявил в начале программы .
Проблема осталась.Подробнее: 1-ю часть закрывает и тут же начинает закрывать 2-ю :-(..., причем для второй ошибка 131, понятно - размер лота другой ) Но еще нюанс в том, что для 1-й части ""Alert ("Закрыт ",Lot," Lot Buy ",Ticket);"" в журнале не пишет, т.е. не доходит до поверки Ans==true. Почему???? Ниже кусок кода...
Спасибо заранее!
while(true) // Цикл закрытия орд. { if (TP0==false && (Cls_B0==true ||Cls_S0==true))
{ LotC=MathRound(Lot/4/Step)*Step; Alert("Lot-",Lot,"Попытка закрыть-",LotC," Lot Buy ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных Ans=OrderClose(Ticket,LotC,Bid,5); // TicketЗакрытие Buy 1/3 лотов? if (Ans==true) // Получилось :) { TP0=true; Alert ("Закрыт ",Lot," Lot Buy ",Ticket); break; // Выход из цикла закр } if (Fun_Error(GetLastError())==1) // Обработка ошибок continue; // Повторная попытка return; // Выход из start() }
Помогите, пожалуйста. Индикатор рисует значения по бычьей скрытой дивергенции, и НИ В Какую не рисует медвежью скрытую.... Пишет, что ошибка 4002 - Индекс массива - вне диапазона.
Я вроде бы все поисправляла... Промучалась целый вечер... И обидно - код простейший... Но бычью рисует стрелками, а медвежью - никак... ПОМОГИТЕ! В чем ошибка?????????????????????
Алена,
Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().
P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода
Snaf: Вопрос по MT5. Как определить. что тестер завершил работу? Кроме как визуально :)
При завершении работы выполняется функция deinit(). Следовательно, если мы туда попали, значит работа эксперта завершается. Для определения, ведется ли работа в тестере, используйте функцию IsTesting().
Пардон, заметил, что вопрос по MT5.
Там все аналогично, только OnDeinit() и MQL5InfoInteger(MQL5_TESTING).
Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().
P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода
вопрос програмистам: как сделать число после запятой целым?:)
например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)
exnern double n=1,12
n-=MathFloor(n); // 0.12 = 0.1200000..01 или 0.11999999..99int n2=MathRound(n*1000); // 0.12 > 120 или 119while(true) // пока в конце 0 или 9if(n2%10<1) // n2==хз*10+0
n2/=10; else// убираем 0if(n2%10==9) // n2==хз*10+9
{n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)elseif(n2%10>0) break;
вот так я решил. один минус - не получится получить число, если оно кончается на 0 или 9. но мне и не понадобится, я ввожу период расчёта (4,8,12,16,24,36,48 и т.д.)
Подскажите пожалуйста как правильно записать, что произошла смена цвета индикатора VininI LRMA color.mq4 https://www.mql5.com/ru/code/8200
если использовать double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift). Никак не могу сообразить. Написал iCustom(NULL,0,"VininI_LRMA_color",55,0,1) и не знаю что дальше с этим делать))
Значения линий находятся в буферах индикатора 1 (зеленая) и 2 (красная). Когда на графике рисуется зеленая линия, то переменная up на баре 1 имеет значение этой линии, а переменная dn=EMPTY_VALUE и наоборот. EMPTY_VALUE - это пустое значение буфера, его численное значение равно 2147483647. Далее можно использовать эти значения по своему усмотрению.
посмотрите здесь: https://docs.mql4.com/ru/basis/operations/math
Так тоже можно.
разве b будет равно не одному?
проверил. одному
Создайте флаги, например.
Для ТР1 - bool TP1, для TP2 - bool TP2, и т.д. ...
Изначально их значения false.
Перед очередным закрытием делаете проверку:
if (!TP1) {код частичного закрытия первой части, после успешного закрытия пишете TP1=true}
if (!TP2) {код частичного закрытия второй части, после успешного закрытия пишете TP2=true}
... и так для всех частей...
таким образом флаги будут сигнализировать об единожды уже проведённом закрытии каждой части...
Спасибо! Переделал код... TP0==false обявил в начале программы .
Проблема осталась.Подробнее: 1-ю часть закрывает и тут же начинает закрывать 2-ю :-(..., причем для второй ошибка 131, понятно - размер лота другой ) Но еще нюанс в том, что для 1-й части ""Alert ("Закрыт ",Lot," Lot Buy ",Ticket);"" в журнале не пишет, т.е. не доходит до поверки Ans==true. Почему???? Ниже кусок кода...
Спасибо заранее!
while(true) // Цикл закрытия орд.
{
if (TP0==false && (Cls_B0==true ||Cls_S0==true))
{
LotC=MathRound(Lot/4/Step)*Step;
Alert("Lot-",Lot,"Попытка закрыть-",LotC," Lot Buy ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных
Ans=OrderClose(Ticket,LotC,Bid,5); // TicketЗакрытие Buy 1/3 лотов?
if (Ans==true) // Получилось :)
{
TP0=true;
Alert ("Закрыт ",Lot," Lot Buy ",Ticket);
break; // Выход из цикла закр
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start()
}
Уважаемые программисты!
Помогите, пожалуйста. Индикатор рисует значения по бычьей скрытой дивергенции, и НИ В Какую не рисует медвежью скрытую.... Пишет, что ошибка 4002 - Индекс массива - вне диапазона.
Я вроде бы все поисправляла... Промучалась целый вечер... И обидно - код простейший... Но бычью рисует стрелками, а медвежью - никак... ПОМОГИТЕ! В чем ошибка?????????????????????
Алена,
Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().
P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода
Вопрос по MT5. Как определить. что тестер завершил работу? Кроме как визуально :)
При завершении работы выполняется функция deinit(). Следовательно, если мы туда попали, значит работа эксперта завершается. Для определения, ведется ли работа в тестере, используйте функцию IsTesting().
Пардон, заметил, что вопрос по MT5.
Там все аналогично, только OnDeinit() и MQL5InfoInteger(MQL5_TESTING).
Алена,
Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().
P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода
Спасибо большое за ответ, буду разбираться!
Подскажите пожалуйста как правильно записать, что произошла смена цвета индикатора VininI LRMA color.mq4 https://www.mql5.com/ru/code/8200
если использовать double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift). Никак не могу сообразить. Написал iCustom(NULL,0,"VininI_LRMA_color",55,0,1) и не знаю что дальше с этим делать))
Значения линий находятся в буферах индикатора 1 (зеленая) и 2 (красная). Когда на графике рисуется зеленая линия, то переменная up на баре 1 имеет значение этой линии, а переменная dn=EMPTY_VALUE и наоборот. EMPTY_VALUE - это пустое значение буфера, его численное значение равно 2147483647.
Далее можно использовать эти значения по своему усмотрению.
Можно создать советник который закрыл бы все ордера при срабатывания take-profit-a у последнего открытова ордера?