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

 
KabrGvin:

Подскажите, пли-и-з, как избежать влияние выходных дней, когда баров нет. Допустим номера баров считаем по формулам:

nt i1=(Time[0]-t1)/60/Period();

int i2=(Time[0]-t2)/60/Period();

а количество баров между i1 и i2 равно разнице между ними. То есть: Кол-во баров = i1-i2. Но если i1 и i2 попадают между выходными, то кол-во баров будет высчитано с учётом не существующих баров в субботу и воскресение. Как выйти из такой ситуации?

С уважением, Дмитрий.


Всем спасибо. Сам разобрался.



 

народ! как округлить 2.643789 до целого числа? или киньте ссылку если не трудно,

а то в учебнике и документации не найти, в поиске ничего не найдено,или я не там ищу

 
eddy:

alsu, заполнять полностью это как?:)

и зачем принтовать i?) i равно Bars-counted+2. как оно может быть отрицательным?

              for(i=Bars; i>=0; i--) Rel[i]=pr(Close[i])-pr(Close[i+1]);
     if(teni) for(i=Bars; i>=0; i--) {Rhi[i]=pr(High[i])-pr(Close[i+1]);
                                      Rlo[i]=pr(Low[i])-pr(Close[i+1]);
                                                Rlo[i]=MathMin(Rlo[i],0);
                                                Rhi[i]=MathMax(Rhi[i],0);}

Этот код выполняется на каждом тике, т.е. при приходе каждого тика Всем элементам массивов Rel,... от Bars до нуля присваивается какое-то значение. (Кстати, элемента с номером Bars нет, последний индекс в массиве равен Bars-1 - это надо бы запомнить)

Теперь насчет неотрисовки.

Нам надо выяснить, где ошибка. Я для начала предлагаю посмотреть, какие значения принимает индекс i и какие при этом выдает функция rsi(). Поскольку отладчика в ME нет, остается пользоваться эхом, т.е. Print().

 
gheka:

народ! как округлить 2.643789 до целого числа? или киньте ссылку если не трудно,

а то в учебнике и документации не найти, в поиске ничего не найдено,или я не там ищу

https://docs.mql4.com/ru/math/MathRound

double MathRound( double value)

Функция возвращает значение, округленное до ближайшего целого числа указанного числового значения.

Пример:
double y=MathRound(2.8);
Print("Округление 2.8 до ",y);
y=MathRound(2.4);
Print("Округление -2.4 до ",y);
// Вывод: Округление 2.8 до 3
// Округление -2.4 до -2

 
alsu:

..на каждом тике Всем элементам массивов Rel,... от Bars до нуля присваивается какое-то значение.

Теперь насчет неотрисовки.

Нам надо выяснить, где ошибка. Я для начала предлагаю посмотреть, какие значения принимает индекс i и какие при этом выдает функция rsi(). Поскольку отладчика в ME нет, остается пользоваться эхом, т.е. Print().

"от Bars до нуля" я уже исправил) я постоянно читаю и исправляю чёнить.

теперь насчёт неотрисовки)

может ли Bars-counted+2 быть отрицательным?

 

как сделать чтобы моифицировать все открытые ордера?

у меня почему то модифицирует только один ордер

вот мой код

 tot=OrdersTotal();
if(tot>0)
{ if(OO_11(0)==false) <---- ОО_11() он проверяет есть ли стоп
{ int k=OrdersTotal();
for(int a=0;a<=k;a++)
{ if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_SELL)
{ if(OrderMagicNumber()==0)
{
int tik=OrderTicket();
OrderModify(tik,Ask,Ask+0.01000,0,0,0);
}
}
}
}
}
}
у меня бывают по 10-50 ордеров открытых без магиков, но устанавливает стоп лосс только на один ордер,подскажите че не так?
 
eddy:

"от Bars до нуля" я уже исправил) я постоянно читаю и исправляю чёнить.

теперь насчёт неотрисовки)

может ли Bars-counted+2 быть отрицательным?

сходу - нет, не может. Но проверить все равно быстрее, чем раздумывать. Идеальный вариант - вообще везде принтов наставить и глазеть как программа отрабатывает.
 
gheka:

как сделать чтобы моифицировать все открытые ордера?

у меня почему то модифицирует только один ордер

вот мой код

у меня бывают по 10-50 ордеров открытых без магиков, но устанавливает стоп лосс только на один ордер,подскажите че не так?

1) переменная k повторяет переменную tot

2) a<=k неправильно, правильно a<k

3) Что в журнале по поводу модификации ордеров?

 
alsu:

1) переменная k повторяет переменную tot

2) a<=k неправильно, правильно a<k

3) Что в журнале по поводу модификации ордеров?

в журнале никаких информации нет,только открытие ордеров и больше ничего, так тоже все равно не пашет
 
alsu:

1) переменная k повторяет переменную tot

2) a<=k неправильно, правильно a<k

3) Что в журнале по поводу модификации ордеров?

теперь заработало) спасибо
Причина обращения: