[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 346

 
извеняюсь
 
Stepan241 >>:

В самом начале скрипта пишешь

#property show_inputs

extern double Lot=0.1

после чего в момент прикрепления скрипта к окну инструмента появится диалоговое окно. там и вводи величину лота

Я понимаю. Но это не то что мне нужно. С данными командами появится диалоговое окно - с общими настройками советников и настройкой текущего скрипта, а я спросил, нет ли такой функции, с помощью которой можно было бы вывести сразу ДО ТОЛЬКО с настройками скрипта.

 
Подскажите как сделать чтобы все открытые ордера закрывались по указанному времени?
 
JackaLrus писал(а) >>

Я понимаю. Но это не то что мне нужно. С данными командами появится диалоговое окно - с общими настройками советников и настройкой текущего скрипта, а я спросил, нет ли такой функции, с помощью которой можно было бы вывести сразу ДО ТОЛЬКО с настройками скрипта.

Тогда только МетаЭдитор.

 
vik-777 >>:
Подскажите как сделать чтобы все открытые ордера закрывались по указанному времени?

if (HourTime[0]=12)_CloseAllOrder

саму функцию _CloseAllOrder смотри на прошлой или позапрошлой странице

 
Stepan241 >>:

if (HourTime[0]=12)_CloseAllOrder

саму функцию _CloseAllOrder смотри на прошлой или позапрошлой странице

спасибо, функция очень удобна

 

Уважаемые знатоки,

подскажите пожалуйста в чем причина такого результата:

суть:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

печатает в журнал "с=3 q=2"

вопрос: как он из трех два получает?

мулька в том, что если вместо 0.3 подставить 0.4 или любую другую дробь решает как положено

к примеру

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

печатает в журнал "с=3 q=2 v=4 w=4"

вопрос: как он из трех два получает?

попробуйте скомпилировать, мож у меня комп считать разучился (глупость какая-то...)

 
mukata >>:

Уважаемые знатоки,

подскажите пожалуйста в чем причина такого результата:

суть:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

печатает в журнал "с=3 q=2"

вопрос: как он из трех два получает?

мулька в том, что если вместо 0.3 подставить 0.4 или любую другую дробь решает как положено

к примеру

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

печатает в журнал "с=3 q=2 v=4 w=4"

вопрос: как он из трех два получает?

попробуйте скомпилировать, мож у меня комп считать разучился (глупость какая-то...)


Это не глупость, обычные ошибки округления при работе с вещественными числами.

в первом случае к примеру с будет равна 2.999999999, при выводе производится округление, т.е. будет 3, а вот при присваивании целочисленному типу происходит отбрасывание дробной части.

 
splxgf >>:

Это не глупость, обычные ошибки округления при работе с вещественными числами.

в первом случае к примеру с будет равна 2.999999999...

непонятно, как может 2.9999 получиться? 0.3/0.1=3 ровно, я же не 1 на 3 делю, и то должно быть0,33333...

а вот при присваивании целочисленному типу происходит отбрасывание дробной части.

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

ответ 100% не правильный.

еще варианты есть?

 
mukata >>:


непонятно, как может 2.9999 получиться? 0.3/0.1=3 ровно, я же не 1 на 3 делю, и то должно быть0,33333...


Это только кажется, что ровно, а машинном представлении последний бит может принять разные значения. Т.е. 2.9999, 3 или 3.00000001


Чтобы избавиться от таких недоразумений в MQL есть функция NormalizeDouble()

Причина обращения: