[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 227
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемые коллеги-профессионалы, нужна ваша помощь (пли-и-из). В советнике хочу сделать функцию, которая выводит уведомление в вернем углу экрана о текущем тренде на разных таймфреймах и предстоящем развороте. Для этого использую свои функции LinearRegression и Diverg. Однако я никогда не работал с функцией Comment и поэтому не могу понять, где я допустил ошибку. В общем, в результате работы нижеприведенного кода на экран выводится только надпись "Тренд W = Вниз", а хотелось бы чтобы отображалась информация и по всем остальным TF.
void UPDN ()
{
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) < 0) Comment("Тренд H1 = Вверх");
if(Diverg(LR_TFr_1,0,Diver_Per_H1)<0) Comment("...!Разворот на H1 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) < 0) Comment("Тренд H4 = Вверх");
if(Diverg(LR_TFr_2,0,Diver_Per_H4)<0) Comment("...!Разворот на H4 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) < 0) Comment("Тренд D1 = Вверх");
if(Diverg(LR_TFr_3,0,Diver_Per_D1)<0) Comment("...!Разворот на D1 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) < 0) Comment("Тренд W = Вверх");
if(Diverg(LR_TFr_4,0,Diver_Per_W)<0) Comment("...!Разворот на W = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) > 0) Comment("Тренд H1 = Вниз");
if(Diverg(LR_TFr_1,0,Diver_Per_H1)>0) Comment("...!Разворот на H1 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) > 0) Comment("Тренд H4 = Вниз");
if(Diverg(LR_TFr_2,0,Diver_Per_H4)>0) Comment("...!Разворот на H4 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) > 0) Comment("Тренд D1 = Вниз");
if(Diverg(LR_TFr_3,0,Diver_Per_D1)>0) Comment("...!Разворот на D1 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) > 0) Comment("Тренд W = Вниз");
if(Diverg(LR_TFr_4,0,Diver_Per_W)>0) Comment("...!Разворот на W = Вверх");
return(0);
}
Уважаемые коллеги-профессионалы, нужна ваша помощь (пли-и-из). В советнике хочу сделать функцию, которая выводит уведомление в вернем углу экрана о текущем тренде на разных таймфреймах и предстоящем развороте. Для этого использую свои функции LinearRegression и Diverg. Однако я никогда не работал с функцией Comment и поэтому не могу понять, где я допустил ошибку. В общем, в результате работы нижеприведенного кода на экран выводится только надпись "Тренд W = Вниз", а хотелось бы чтобы отображалась информация и по всем остальным TF.
void UPDN ()
{
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) < 0) Comment("Тренд H1 = Вверх");
if(Diverg(LR_TFr_1,0,Diver_Per_H1)<0) Comment("...!Разворот на H1 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) < 0) Comment("Тренд H4 = Вверх");
if(Diverg(LR_TFr_2,0,Diver_Per_H4)<0) Comment("...!Разворот на H4 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) < 0) Comment("Тренд D1 = Вверх");
if(Diverg(LR_TFr_3,0,Diver_Per_D1)<0) Comment("...!Разворот на D1 = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) < 0) Comment("Тренд W = Вверх");
if(Diverg(LR_TFr_4,0,Diver_Per_W)<0) Comment("...!Разворот на W = Вниз");
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) > 0) Comment("Тренд H1 = Вниз");
if(Diverg(LR_TFr_1,0,Diver_Per_H1)>0) Comment("...!Разворот на H1 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) > 0) Comment("Тренд H4 = Вниз");
if(Diverg(LR_TFr_2,0,Diver_Per_H4)>0) Comment("...!Разворот на H4 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) > 0) Comment("Тренд D1 = Вниз");
if(Diverg(LR_TFr_3,0,Diver_Per_D1)>0) Comment("...!Разворот на D1 = Вверх");
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) > 0) Comment("Тренд W = Вниз");
if(Diverg(LR_TFr_4,0,Diver_Per_W)>0) Comment("...!Разворот на W = Вверх");
return(0);
}
Массивы нельзя передавать в функцию Comment(). Массивы должны печататься поэлементно.
Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью необходимо использовать функцию DoubleToStr().
Типы bool, datetime и color будут напечатаны как числа.
Чтобы вывести данные типа datetime в виде строки используйте функцию TimeToStr().
Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n".
См. также функции Alert() и Print().
Спасибо. Я понял. Мне нужно ввести переменные по результатам отработки функций LinearRegression и Diverg по каждому ТФ и потом вывести их одним комментарием, можно в несколько строк.
Спасибо. Я понял. Мне нужно ввести переменные по результатам отработки функций LinearRegression и Diverg по каждому ТФ и потом вывести их одним комментарием, можно в несколько строк.
Только есть ограничения по длине строки. Можно воспользоватся функцией от Александра Пака. Если не найдете, то поищу у себя
Уважаемые господа!
Возник вопрос по передаче массива по ссылке.
Схема алгоритма следующая:
Из одной библиотеки в другую передаём массив по ссылке.
Там его копируем через встроенную функцию:
ArrayCopy.
Далее, переданный по ссылке массив уже используем
в первом модуле.
Но почему-то возникает ошибка, причём не всегда.
Т.е. то происходит копирование, то нет.
В чём причина?
Запись в логах следующая:
21:07:12 openHistory CADCHF,H1:
incompatible 2 arrays ranges for ArrayCopy function (0 and 4)
Это потому что Вы неправильно скопировали мой пример. Посмотрите внимательно где i, а где к.
Код исправил в соответствии с вашим.
При тестировании четыре ордера закрылись в порядке установки на первом тике, пятый - на следующем. Вероятно, здесь что-то ещё не так т.к. тестировал неоднократно.
Код программы и записи из журнала тестера привожу.
С уважением. Shurkin
Зациклить старт надо. Внутри цикла работать. Там всё можно.
это немного не то. когда пропадет связь, в журнале пишет "Ping failed". значит есть ф-ии, но они почему-то не документированы.
а при зацикленном насколько увеличивается нагрузка на проц и память?
Доброго вечера! Прошу прощения, хочу вернуться к нерешоной задаче.
'Buy' - incompatible types D:\TeleTRADE\experts\чистовариант.mq4 (102, 53)
'Sell' - incompatible types D:\TeleTRADE\experts\чистовариант.mq4 (102, 79)
Эта строка не компилируется.