АвторСообщение
Anatoliy



Сообщение: 2
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.07.14 21:22. Заголовок: Я новичок.


Пишу пользовательский индикатор на основе пересечение уровни 20 и 80. Если главная линия Stochastic пересекла уровень 80 (сверху - вниз), то выводит стрелка Sell на ценовых графиках, а если главная линия Stochastic пересекла уровень 20 (снизу - верх), то стрелка Buy на ценовых графиках.

#property strict
#property indicator_chart_window
#property indicator_buffers 2
//--- plot Buy
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot Sell
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrRed
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- input parameters

//--- indicator buffers
double BuyBuffer[];
double SellBuffer[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
//---
SetIndexBuffer(0,BuyBuffer);
SetIndexArrow(0,233);
SetIndexStyle(0,DRAW_ARROW);
//---
SetIndexBuffer(1,SellBuffer);
SetIndexArrow(1,234);
SetIndexStyle(1,DRAW_ARROW);
//---
SetIndexEmptyValue(0,80.0);
SetIndexEmptyValue(1,20.0);
//---
return(0);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция пользовательского индикатора итерации |
//+------------------------------------------------------------------+
int start()
{
//---
int i, Counted_bars;

double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); // бар 1
double mainStoc_2 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2); // бар 2

Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1;

for(i=0;i>=0;i--)
{
if (mainStoc_2 > 80.0 && mainStoc_1 < 80.0)
SellBuffer = Low-5*Point;
else
SellBuffer = 0.0;

if (mainStoc_2 < 20.0 && mainStoc_1 > 20.0)
BuyBuffer = High+5*Point;
else
BuyBuffer = 0.0;
}
//---
return(0);
}

И в результатах индикатор вообще не работает.
Как его исправит?



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]


Scriptong





Сообщение: 875
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 25.10.14 19:46. Заголовок: Balbesik пишет: Зад..


Balbesik пишет:

 цитата:
Задача - разгрузить память!


Тогда вновь повторюсь. Решение проблемы существует. Просто нужно двигаться в другом направлении. Нужно думать не о том, как освободить память при тестировании, а написать такой советник, который не будет использовать внешние индикаторы, располагая необходимыми функциями внутри кода. Причем никто не призывает отказаться от использования индикаторов. Пусть будут. Просто по каждому такому индикатору написать аналог для внутреннего использования в коде советника.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 121
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 30.10.14 18:57. Заголовок: "....– а надо ли..


"....– а надо ли...."
Сегодня нет желание, что-то комментировать.
Только картинки.
Это "любимый" МТ в реале, в тесте и в "тесте2".
Учитывая, что эти уголовники (а в любой другой стране их бы давно посадили)
могли не сделать преемственность с 509 билда и я имею проблемы (точнее за мой счет - как они привыкли).
Хотя смешно это писать - у меня нет с ними никаких отношений - терминалы у меня от ДЦ, а не от них
(и когда ко мне "лезут" в комп ДЦ "не при делах" - просто наглый беспредел).
А ДЦ, ну это наглецы с "островов" (они прикрывают"хвостов") считают,
что никто не поедет на острова с ними разбираться.





Спасибо: 0 
Профиль
Scriptong





Сообщение: 896
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 30.10.14 21:40. Заголовок: Ну пока да, без комм..


Ну пока да, без комментариев не понять, какая проблема освещается.
Если речь о расхождениях в номерах баров между онлайн-графиком и графиком визуализации, то у них элементарно разные начальные точки. У онлайн графика бар с индексом 0 открылся в 23:58, а у графика визуализации - в 22:43. Потому и индексы баров разные.
А вот что такое СС_8933 и СС8914 - это тайна за семью печатями.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 122
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 31.10.14 19:29. Заголовок: "...Ну пока д..




"...Ну пока да, без комментариев не понять, какая проблема освещается.
Если речь о расхождениях в номерах баров между онлайн-графиком и графиком визуализации, то у них элементарно разные начальные точки. У онлайн графика бар с индексом 0 открылся в 23:58, а у графика визуализации - в 22:43. Потому и индексы баров разные.
А вот что такое СС_8933 и СС8914 - это тайна за семью печатями..."


Да проблема чуть другая, остальное следствие.
К делу не относится (следствие) – СС_89 это просто я так обозначил номер бара, если по картинке посмотреть, то , где желтые стрелочки, к 31 бару добавить количество баров с соседней картинке мы и получим 33 бар (график один и тот же – это сделана пауза при моделировании в тестере).

Суть проблемы – равно высокие бары –
я использую старый индикатор равно высоких баров (509 билд) и у меня создается впечатление, что с новыми билдами он не согласовывается по prevCalculated . Когда идет реал лимит «прыгает» по очереди 0 и заданная величина -1500 например и i идет по циклу от МАХ к «0» аналогично верхняя картинка - эксперты. Третья картинка сверху это реал выводиться лимит. Последняя это тестер по значениям i на что-то похоже (вопрос номера бара – 14 - опускаем).

Еще раз прикрепил картинку в ней есть доработка (самоделка) – это реал с появлением нового бара, где prevCalculated становится равен «0» вместо значения. Если с каждым появлением нового билда ждешь очередных проблем, это раздражает.

Картинки доработки –


Доработать под современные билды индикатора равно высоких баров не представляется возможным – там вообще «темный лес».
Тут я вообще ничего не понимаю
Как ведет себя твой индикатор не знаю, т.к. у него нет истории и это мне не очень удобно.
Старый индикатор у тебя есть, сейчас сброшу еще раз (не знаю, как на форум прикрепить Экзе- файл) если его возможно доработать, то на твое усмотрение, может быть выложишь на форум (возможно кому-нибудь, как и мне, нужна история), а еще лучше сделать аналог TicksCollector под равно высокие бары (для сервиса - без тиков, но с историей и без «разрывов»(по возможности))


Спасибо: 0 
Профиль
Scriptong





Сообщение: 900
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 31.10.14 20:11. Заголовок: Balbesik пишет: Еще..


Balbesik пишет:

 цитата:
Еще раз прикрепил картинку в ней есть доработка (самоделка) – это реал с появлением нового бара, где prevCalculated становится равен «0» вместо значения.


Для оффлайн графиков это нормально. Ведь история этого графика при своем формировании переписывается заново полностью. Терминал считает, что история полностью подкачана. Потому и выдает 0. Тут не на что грешить.

Balbesik пишет:

 цитата:
не знаю, как на форум прикрепить Экзе- файл


См. тему Вставка файлов и рисунков.

Balbesik пишет:

 цитата:
а еще лучше сделать аналог TicksCollector под равно высокие бары (для сервиса - без тиков, но с историей и без «разрывов»(по возможности))


Без тиков - это что ли строить график по минутной истории? График нестандартного периода таким образом построить можно, а вот равновысокие и эквиобъемные строить проблематично - они будут врать на спорных моментах. Например, когда минутная свеча выше, чем высота равновысокого бара.
Что такое "без разрывов" до сих пор не понял.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 123
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 31.10.14 20:49. Заголовок: «…Для оффлайн график..


«…Для оффлайн графиков это нормально. Ведь история этого графика при своем формировании переписывается заново полностью.
Терминал считает, что история полностью подкачана. Потому и выдает 0. Тут не на что грешить…»

Bars - IndicatorCounted(); - теряется смысл старого, вместо расчета одного бара,
идет вся история по i – что и наблюдаем – «…и i идет по циклу от МАХ к «0»…»

Не понимаю.

Я сбросил на почту.


Спасибо: 0 
Профиль
Balbesik



Сообщение: 124
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 01.11.14 13:45. Заголовок: "...Что такое &#..


"...Что такое "без разрывов" до сих пор не понял.,,"

Кажется разобрался.
Моя проблема (старые билды не работают корректно)
График с реала - без "разрывов"

Тот же график после импорта в тестер.

Нет корректных исходных данных = нет результата.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 125
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 02.11.14 01:53. Заголовок: "...См. тему Вст..


"...См. тему Вставка файлов и рисунков..." -

"Вставка файла
1. Закачать нужный файл на любой файловый сервер. Например, http://gfile.ru/. .." -

"Сервер не найден
Firefox не может найти сервер gfile.ru..." -

других я не знаю.

Предполагаю, что проблема "разрывов", в данном случае для тестера, в скрипте для закачки в тестер.
Он короткий, поэтому выкладываю прямо здесь -


int start(){
int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
for(int i=Bars-1;i>=0;i--){
FileWrite(h,TimeToStr(Time,TIME_DATE),TimeToStr(Time,TIME_MINUTES),Open,High,Low,Close,Volume);
}
FileClose(i);
return(0);
}

Согласно описания uint FileWrite вроде все нормально, почему "глючит" не пойму.
Где я "не догоняю"?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 905
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 02.11.14 15:01. Заголовок: Balbesik пишет: Bar..


Balbesik пишет:

 цитата:
Bars - IndicatorCounted(); - теряется смысл старого, вместо расчета одного бара,
идет вся история по i – что и наблюдаем


Так и есть. При работе с оффлайн графиками приходится использовать другие схемы отслеживания моментов появления нового бара. Но в этом нет ничего страшного, т. к. оффлайн графики, чаще всего, формируются собственными программами, а не терминалом. Потому в оффлайн-графике нет такого события, как "докачка данных". Оффлайн-график обычно формируется на старте полностью, а затем просто обновляется (0-й бар или добавление одного бара).

Balbesik пишет:

 цитата:
"...См. тему Вставка файлов и рисунков..." -

"Вставка файла
1. Закачать нужный файл на любой файловый сервер. Например, http://gfile.ru/. .." -

"Сервер не найден
Firefox не может найти сервер gfile.ru..." -

других я не знаю.


В google по ключевым словам "бесплатный файловый сервер" можно найти много подобных. Я сейчас пользуюсь dropmefiles.com. Там, правда, слишком ограничено время хранения - неделя. Но для текущих задач этого достаточно.

Balbesik пишет:

 цитата:
Предполагаю, что проблема "разрывов", в данном случае для тестера, в скрипте для закачки в тестер.
Он короткий, поэтому выкладываю прямо здесь -


int start(){
int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
for(int i=Bars-1;i>=0;i--){
FileWrite(h,TimeToStr(Time,TIME_DATE),TimeToStr(Time,TIME_MINUTES),Open,High,Low,Close,Volume);
}
FileClose(i);
return(0);
}

Согласно описания uint FileWrite вроде все нормально, почему "глючит" не пойму.
Где я "не догоняю"?



При открытии файлов совместно с флагами FILE_WRITE и FILE_READ лучше использовать флаги: FILE_SHARE_WRITE и FILE_SHARE_READ соответственно.
Также при работе с текстовыми файлами следует явно указывать кодировку. Это флаги FILE_ANSI и FILE_UNICODE.
К сожалению, в документации по MQL есть множество подобных белых пятен. Хотя, ради справедливости отмечу, что и у Microsoft дело обстоит не намного лучше. О многих вещах приходится догадываться, набивая огромные шишки опыта.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 126
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 02.11.14 19:29. Заголовок: Scriptong пишет: &#..


Scriptong пишет:

"...При открытии файлов совместно с флагами FILE_WRITE и FILE_READ лучше использовать флаги: FILE_SHARE_WRITE и FILE_SHARE_READ соответственно.
Также при работе с текстовыми файлами следует явно указывать кодировку. Это флаги FILE_ANSI и FILE_UNICODE.
К сожалению, в документации по MQL есть множество подобных белых пятен. Хотя, ради справедливости отмечу, что и у Microsoft дело обстоит не намного лучше. О многих вещах приходится догадываться, набивая огромные шишки опыта..."

Спасибо, Игорь!

Все попробовал.
Но похоже равновысокие бары невозможно в тестере моделировать.
При загрузке они появляются почти все на графике, но после 1 "прогона" или перезагрузки терминала -
"слетают" и весь график в "разрывах", плюс "разрывы" (бывают) с реала -
в общем полная ерунда с котировками в тестере.
Жаль.
Давным давно писал тебе, что мне надо уходить на Эксель или Матлаб,
но мозгов не хватает, да и время потеряно.


Спасибо: 0 
Профиль
Scriptong





Сообщение: 913
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 03.11.14 19:12. Заголовок: Balbesik пишет: Все..


Balbesik пишет:

 цитата:
Все попробовал.
Но похоже равновысокие бары невозможно в тестере моделировать.
При загрузке они появляются почти все на графике, но после 1 "прогона" или перезагрузки терминала -
"слетают" и весь график в "разрывах", плюс "разрывы" (бывают) с реала -
в общем полная ерунда с котировками в тестере.


Распиши пошагово, как подготавливаешь данные и тестируешь. Я, к примеру, не пытался еще заниматься тестированием на нестандартных таймфреймах в новом терминале. Попробую по твоим шагам и возможно, смогу установить причину. В крайнем случае попробую обосновать, почему невозможно тестирование на нестандартных ТФ. Хоть ясность какая-то будет.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 127
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 03.11.14 23:14. Заголовок: Scriptong пишет: ..


Scriptong пишет:

 цитата:
... Хоть ясность какая-то будет....



Добрый вечер, Игорь!

Это индикатор равновысоких баров уже переделан (прошу не смеяться) под новые билды –
индикатор
http://dropmefiles.com/5V6Vf

С ним проблем нет, хотя, т.к. я с этими форматами вообще ничего не понимаю,
он может пригодиться (возможно, если запись в нем – хотя врятли).
Нормально работает – без вопросов (даже лучше, на мой взгляд, с т.з. «разрывов» чем ЭКЗ-ник 509 билда).

Устанавливаю индикатор на 1 минуту – открыть автономно (81) – получаем график.
Графики рисуются корректно (вопросов никаких).

Теперь в окне есть корректный график и на него «бросаем» скрипт (просто – Исполнить на графике) –
скрипт описан выше постом – в МКЛ4 в папке Файл получаем файл графика (csv).

В терминале для тестирования (он отключен от интернета, ВСЯ история удалена – чистый) –
Сервис – архив котировок (выбираем 1 минуту, да любой ТФ) – импорт – этот файл - ОК.
Загрузили!

А вот тут начинаются проблемы.

Если сразу, терминал не закрываем, просто поменять ТФ 1 мин. – 5 мин – 1 мин. то увидим ПОЧТИ корректный график и
если на бары поставить вертикальные линии между двумя минутами (а линии по другому и не встанут),
то можно увидеть участки МЕЖДУ этими линиями на которых находятся бары.

Если теперь перезагрузить терминал или включить моделирование (старт) эти бары «вырежуться» и
более их не будет – сплошные «разрывы».

Т.к. внешний вид графика меня не интересует,
а интересуют номера баров и цены попытался «перепривязать» минутки, как-то так –


Но вообще ничего не работает, а эти форматы записи или чтения для меня «караул».

Вопрос скрипта!



Спасибо: 0 
Профиль
Balbesik



Сообщение: 128
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 04.11.14 15:28. Заголовок: Scriptong пишет: Хо..


Scriptong пишет:

 цитата:
Хоть ясность какая-то будет



Добрый день, Игорь!

Сделал в дополнение в виде картинок и Эксель.

«…а интересуют номера баров и цены попытался «перепривязать» минутки, как-то так…»
Брал старый скрипт и переделанный - «перепривязанный» к барам, а так же 625 билд.
Сделал файлы.

Старый скрипт –




Переделанный –




А это 625 балд старый и переделланный –




Выводы не делаю, т.к. тут «туплю» и просто – что вижу – по объёму расхождение.
Переделанный скрипт на 625 билде строит на тестере графики БЕЗ ВОПРОСОВ!

Может это, что-то даст.

Т.к. постоянно меняют билды, сменили правила написания алгоритма,
я ничего не понимаю.

Могу утверждать одно – на 625 все нормально.



Спасибо: 0 
Профиль
Balbesik



Сообщение: 129
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 05.11.14 19:28. Заголовок: Игорь! Просто вариан..




Спасибо: 0 
Профиль
Scriptong





Сообщение: 924
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 06.11.14 21:29. Заголовок: Balbesik пишет: Эт..


Balbesik пишет:

 цитата:

Это индикатор равновысоких баров уже переделан (прошу не смеяться) под новые билды –
индикатор
http://dropmefiles.com/5V6Vf


Файл почему-то удален с сервера. Хотя неделя то еще не прошла, чтобы последовало автоматическое удаление.

Balbesik пишет:

 цитата:
Теперь в окне есть корректный график и на него «бросаем» скрипт (просто – Исполнить на графике) –
скрипт описан выше постом – в МКЛ4 в папке Файл получаем файл графика (csv).


Все-таки непонятно, что за скрипт. Хотя ясно, что таким образом ты переписываешь данные с нестандартного графика в csv-файл для последующего импорта через Архив котировок.

Balbesik пишет:

 цитата:
Если сразу, терминал не закрываем, просто поменять ТФ 1 мин. – 5 мин – 1 мин. то увидим ПОЧТИ корректный график и


Ты писал, что вся история в терминале удалена. После этого была закачана минутная история. Каким образом будет сформирован график М5, если терминал отключен от интернета? На мой взгляд, здесь и кроется ошибка.


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет