[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 105

 
abolk:
посмотрите здесь: https://docs.mql4.com/ru/basis/operations/math
я всё смотрел. как решить то задачу мою?
 
Zhunko:
Так тоже можно.

разве b будет равно не одному?

проверил. одному

 
artmedia70:
Создайте флаги, например.

Для ТР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()
}

 
Sinichka:

Уважаемые программисты!

Помогите, пожалуйста. Индикатор рисует значения по бычьей скрытой дивергенции, и НИ В Какую не рисует медвежью скрытую.... Пишет, что ошибка 4002 - Индекс массива - вне диапазона.

Я вроде бы все поисправляла... Промучалась целый вечер... И обидно - код простейший... Но бычью рисует стрелками, а медвежью - никак... ПОМОГИТЕ! В чем ошибка?????????????????????


Алена,

Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().

P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода

 
Snaf:
Вопрос по MT5. Как определить. что тестер завершил работу? Кроме как визуально :)

При завершении работы выполняется функция deinit(). Следовательно, если мы туда попали, значит работа эксперта завершается. Для определения, ведется ли работа в тестере, используйте функцию IsTesting().


Пардон, заметил, что вопрос по MT5.

Там все аналогично, только OnDeinit() и MQL5InfoInteger(MQL5_TESTING).

 
alsu:

Алена,

Вам необходимо распределить память под массивы vpadcci[], v[], hh[], ss[]. Они объявлены динамическими, но их размер нигде не задан. Размер динамического массива задается функцией ArrayResize().

P.S. и пользуйтесь, пожалуйста, кнопкой SRC для вставки кода


Спасибо большое за ответ, буду разбираться!
 
eddy:

вопрос програмистам: как сделать число после запятой целым?:)

например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)

exnern double n=1,12
n-=MathFloor(n);          // 0.12 = 0.1200000..01 или 0.11999999..99
int n2=MathRound(n*1000); // 0.12 > 120 или 119
while(true)               // пока в конце 0 или 9
 if(n2%10<1)              // n2==хз*10+0
    n2/=10; else          // убираем 0
 if(n2%10==9)             // n2==хз*10+9
   {n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)
 else if(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.
Далее можно использовать эти значения по своему усмотрению.

double up=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,1,1); 
double dn=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,2,1); 
 
Poseidon:
Можно создать советник который закрыл бы все ордера при срабатывания take-profit-a у последнего открытова ордера?
Я просто новичек и не знаю как это сделать. Кому не трудно, можете делать это для меня?