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

 
alk:

Подскажите, пожалуйста, что не так в коде. Робот должен закрыть ордер на продажу, если его нет, то купить. Возникает ошибка 4105, которую я пытаюсь обработать, но результата нет. Может, есть другие способы обработки?


Замените

for(cnt=OrdersTotal();cnt>=0;cnt--)

на

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
 
Доброго времени суток! Уважаемые специалисты, прошу вашей помощи... Требуется: на основе индикатора i-Regr (прилагается) написать программный блок, который способен с периодичностью 1 раз в минуту определять ширину канала в пунктах и выводить это число на график. Заранее благодарен!
Файлы:
i-regr_1.mq4  5 kb
 
magogy:
Доброго времени суток! Уважаемые специалисты, прошу вашей помощи... Требуется: на основе индикатора i-Regr (прилагается) написать программный блок, который способен с периодичностью 1 раз в минуту определять ширину канала в пунктах и выводить это число на график. Заранее благодарен!

думаю что с этим заданием лучше обратиться в сервис
 
magogy:
Доброго времени суток! Уважаемые специалисты, прошу вашей помощи... Требуется: на основе индикатора i-Regr (прилагается) написать программный блок, который способен с периодичностью 1 раз в минуту определять ширину канала в пунктах и выводить это число на график. Заранее благодарен!
 datetime Time_=0; // объявить вверху, в глобальных переменных

 if(Time[0]!=Time_){Alert(NormalizeDouble(sqh[0]-sql[0],4));Time_=Time[0];} //добавить внижней части кода, перед return-ом
 
KONDOR:

Спасибо Вам большое за подсказку!

Есть некоторые нюансы. Выводится информация в виде 0.0026, что соответствует 26 пунктам. Я изменил нижнюю строку и теперь она имеет такой вид:

if(Time[0]!=Time_){Alert(NormalizeDouble(sqh[0]*10000-sql[0]*10000,4));Time_=Time[0];}

выводимые данные теперь отображаются так - 25.6809

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

С уважением magogy

 
magogy:

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

С уважением magogy

вместо 4, поставить 0, т.е. точность выводимого значения - ноль знаков после запятой
Alert(NormalizeDouble(sqh[0]*10000-sql[0]*10000,4))
 
KONDOR:


хех... как же это всё просто и очевидно профессионалу и как всё страшно и непонятно для нуба...

огромное спасибо за помощь!

 

Подскажите, пожалуйста, что не так. В скрипте объявляю импортируемую и вызываю функцию:

#import "PendingDlg.dll"
int  ShowPendingDlg(int& nbar,int& sltp);

...

int    nbar=3,sltp=10;
//--- покажем диалог
if(!ShowPendingDlg(nbar,sltp)) return(1);

В DLL-ке пробовал (на C++) и по ссылке значение получать, и по указателю. Если по ссылке, то не отрабатывается, в случае по указателю получаю указатели с нулевым значением. Код в DLL:

__declspec(dllexport) int __stdcall ShowPendingDlg(int *nbar,int *sltp) { ... }

Спасибо.

 
apm:

Подскажите, пожалуйста, что не так. В скрипте объявляю импортируемую и вызываю функцию:

В DLL-ке пробовал (на C++) и по ссылке значение получать, и по указателю. Если по ссылке, то не отрабатывается, в случае по указателю получаю указатели с нулевым значением. Код в DLL:

Спасибо.

MQL4 по ссылке и указателю работает только с массивами и строками (тоже массивы).
 
Zhunko:
MQL4 по ссылке и указателю работает только с массивами и строками (тоже массивы).
Спасибо! Теперь все понял, добрых вам выходных добрый человек)
Причина обращения: