mobidik
-----
Может Вам стоит прогрузить в тестере котировки по нужным ТФ?Помощи не будет? Никто не знает?
Как по мне, визуально, все совпадает...
Может Вам стоит прогрузить в тестере котировки по нужным ТФ?Помощи не будет? Никто не знает?
Простите, пожалуйста, увидев Ваш скриншот, понял, что допустил грубую оплошность. Не сказал, что скрипт выполняется сначала на D1, и затем нужно вручную переключить на Н1. Именно так должен работать и советник. А он только строит линии на D1, но не переключается на другой таймфрейм.Как по мне, визуально, все совпадает...
Не сказал, что скрипт выполняется сначала на D1, и затем нужно вручную переключить на Н1. Именно так должен работать и советник. А он только строит линии на D1, но не переключается на другой таймфрейм.
Вопрос: как программно переключить таймфрейм с D1 на другой таймфрейм?
// получаю данные буферов индикатора, которые могут быть
// как положительные так и отрицательные!
double Buffer0 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,0,0);
double Buffer1 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,2,0);
// теперь требуется определить разницу между данными буферов
// искомый порог этой разницы к примеру 0.8 или -0.8
double diff = 0.0;
if ( diff == 0.0 ) diff += _GBRUSD_DUBLES_Buffer0; else diff -= _GBRUSD_DUBLES_Buffer0;
if ( diff == 0.0 ) diff += _GBRUSD_DUBLES_Buffer1; else diff -= _GBRUSD_DUBLES_Buffer1;
// с этим можно справиться вот этой функцией
if(MathAbs(diff) >= 0.8) { ... }
if(MathAbs(diff) <= 0.8) { ... }
// но теперь требуется определить большее или меньшее число
// если числа обоих буферов положительные, определить какое число больше возможно
// но когда одно число положительное, а второе отрицательное или оба отрицательные, я не знаю как это сделать =(
// потому что элементарное <> == не работает в mql4 !!!
// я вообще не уверен что mql4 знает об отрицательных значениях =)
Для серверов мт5 есть антискальперские плагины, в которых можно любого пользователя терминала мт5 ограничить в чём то! И самый известный Аль...и использует такое по.
Всё просто. Математика обычная как и с целыми числами. Нужно учитывать погрешности хранения и вычисления чисел с плавающей точной. 1, 2 единицы в 15 знаке после запятой.как сравнивать отрицательные и положительные числа типа double? Как вообще проводить математические операции с отрицательными и положительными числами???
mql4 очень примитивный для понимания язык, и он точно лучше калькулятора.Привет дорогие форумчане.
Есть у меня парочка вопросов о mql4.
Даже в примитивном калькуляторе можно выполнить то что нужно трейдеру, а в mql4 это "танцы с бубном" и не всегда с положительным результатом! Почему в яп есть куча
double Buffer0 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,0,0);
double Buffer1 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,2,0);
double mM1=Buffer0;
double mM2=Buffer1;
if((mM2 < 0 && mM1 > 0) || ((mM2 > 0) < (mM1 > 0)) || ((mM2 < 0) < (mM1 < 0)))
{
Start_Buy = 1;
}
else
Start_Buy = 0;
А что в буферах находится на момент сравнения, это чтобы не ванговать, а просто с 0.0 сравнивать?Спасибо за ответ, но ... .
Почему тогда не работает вот этот код -
Код:double Buffer0 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,0,0); double Buffer1 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,2,0); double mM1=Buffer0; double mM2=Buffer1; if((mM2 < 0 && mM1 > 0) || ((mM2 > 0) < (mM1 > 0)) || ((mM2 < 0) < (mM1 < 0))) { Start_Buy = 1; } else Start_Buy = 0;
?
Ведь в нём сравнение только с 0.0.
(boolean < boolean) || (boolean < boolean) ???((mM2 > 0) < (mM1 > 0)) || ((mM2 < 0) < (mM1 < 0))
if((mM2 < 0 && mM1 > 0) || ((mM2 > 0) < (mM1 > 0)) || ((mM2 < 0) < (mM1 < 0)))
0.0 может только казаться нулём, на самом деле он от -0.000000000000002 до 0.000000000000002.Ведь в нём сравнение только с 0.0.
А зачем тогда сравнение с 0 вообще???// но теперь требуется определить большее или меньшее число // если числа обоих буферов положительные, определить какое число больше возможно // но когда одно число положительное, а второе отрицательное или оба отрицательные, я не знаю как это сделать =(
потому что код не верный.Спасибо за ответ, но ... .
Почему тогда не работает вот этот код -
Код:double Buffer0 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,0,0); double Buffer1 = iCustom(NULL,0,"_GBPUSD_DUBLES",0.8,2,0); double mM1=Buffer0; double mM2=Buffer1; if((mM2 < 0 && mM1 > 0) || ((mM2 > 0) < (mM1 > 0)) || ((mM2 < 0) < (mM1 < 0))) { Start_Buy = 1; } else Start_Buy = 0;
?
Ведь в нём сравнение только с 0.0.
Может, потому что история не подгружена? У меня такое было при запуске мультивалютного советника. Лечилось тем, что сначала подгружалась история по нужным инструментам, а потом уже включалась логика в работу.У кого ещё есть проблемы с iBars()
?
Если брать с другого символа то не правильное число выдаёт.
Она подгрузилась и я не выключал VPS.Может, потому что история не подгружена? У меня такое было при запуске мультивалютного советника. Лечилось тем, что сначала подгружалась история по нужным инструментам, а потом уже включалась логика в работу.
Этщ для аффтора вопроса (dreamorder), чтобы понял(а) с чем работает, ну и как следствие почему не работает.Логику желательно упрощать
mM2 mM1 result
- - 1
- + 1
+ - 0
+ + 1
result = (mM2 > 0 && mM1 < 0) ? 0 : 1;
double diff = MathAbs(buf0)-MathAbs(buf1);// теперь требуется определить разницу между данными буферов
// искомый порог этой разницы к примеру 0.8 или -0.8
double diff = 0.0;
if ( diff == 0.0 ) diff += _GBRUSD_DUBLES_Buffer0; else diff -= _GBRUSD_DUBLES_Buffer0;
if ( diff == 0.0 ) diff += _GBRUSD_DUBLES_Buffer1; else diff -= _GBRUSD_DUBLES_Buffer1;
// с этим можно справиться вот этой функцией
О, мини-Перельман, а ведь в Метаквоте дошколята программят, и сотни тысяч пользователей не заметили такой косяк. Или в консерватории что-то подкрутить?// но теперь требуется определить большее или меньшее число
// если числа обоих буферов положительные, определить какое число больше возможно
// но когда одно число положительное, а второе отрицательное или оба отрицательные, я не знаю как это сделать =(
// потому что элементарное <> == не работает в mql4 !!!
// я вообще не уверен что mql4 знает об отрицательных значениях =)
Спроси ещё, что такое теорема Пуанкаре, и какое отношение к ней имеет Гриша Перельман.double diff = MathAbs(buf0)-MathAbs(buf1);
О, мини-Перельман, а ведь в Метаквоте дошколята программят, и сотни тысяч пользователей не заметили такой косяк. Или в консерватории что-то подкрутить?
// но теперь требуется определить большее или меньшее число
// если числа обоих буферов положительные, определить какое число больше возможно
if (MathAbs(buf0) > MathAbs(buf1)) {
if (MathAbs(buf0)>0.8)
} else {
if (MathAbs(buf1)>0.8)
}