Форум » Консультации по программированию » Я новичок. » Ответить

Я новичок.

Anatoliy: Пишу пользовательский индикатор на основе пересечение уровни 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); } И в результатах индикатор вообще не работает. Как его исправит?

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All

Scriptong: Balbesik пишет: На мой взгляд в индикаторе BearBullBalance при построении отсутствует точка отсчета (база), т.е. построение на каждом баре происходит, как бы в «воздухе» (без привязки к соседям). Привязка производится ко времени открытия бара. Как только открылся новый бар, то происходит обнуление счетчика тиков быков и медведей. Это же очевидно. В новом индикаторе будет точно такая же точка отсчета - время открытия бара. Изменится лишь алгоритм подсчета тиков. К быкам будут относиться тики с ценой bid выше цены открытия, а к медведям - ниже цены открытия. Тики, равные цене открытия свечи, в учет не пойдут.

Balbesik: Scriptong пишет: Привязка производится ко времени открытия бара. Как только открылся новый бар, то происходит обнуление счетчика тиков быков и медведей. Это же очевидно. Это понятно. Не смог объяснить. Scriptong пишет: В новом индикаторе будет точно такая же точка отсчета - время открытия бара. Изменится лишь алгоритм подсчета тиков. К быкам будут относиться тики с ценой bid выше цены открытия, а к медведям - ниже цены открытия. Тики, равные цене открытия свечи, в учет не пойдут. Вот связка, через цену Открытия и получается.

Scriptong: Balbesik пишет: Вот связка, через цену Открытия и получается. Это, как бы, само собой.


Balbesik: Добрый день, Игорь! Scriptong пишет: К быкам будут относиться тики с ценой bid выше цены открытия, а к медведям - ниже цены открытия. Тики, равные цене открытия свечи, в учет не пойдут. Кажется все сделал – оказалось очень просто. Т.к привязка к цене (сравнение по цене) с учетом спреда (разници Бид Аск), переделка в твоем индикаторе, приводила в «реале» к «перерисовки» графика – не мог понять проблему – оказалось всего лишь необходима нормализация. Тебе, Игорь, наверное минут 5 надо было на переделку. Что получилось – посмотрю – нужна история (буду собирать на другом компе – «песня та жа» - ПАМЯТЬ ). Все равно твой вариант интересен и буду ждать. Ну и наверное самое сложное – старинный вопрос – как «скинуть» ПАМЯТЬ. Появилось ли что-либо а этом плане? Насколько я понял, это не проблема компов, а проблема самого терминала имеющего 32 разряда и терминал просто долго не позволяет использовать «тики», оптимизацию советника в «реале» и т.д., кроме этого разработчики МТ5 сами дают ограничения на фондовке до 2000 (или 5000 – не помню, на день только). Соответственно, если на долгосрок, то про тики, оптимизацию и т.д. (без перезагрузки) можно забыть, как обращал внимание Genry "ручками оно надежней" (шутка). Наработок много по тикам, оптимизации советников и т.д., все равно вопрос рано или поздно возникнет. Появляются же в Кодебазе скрипты – – для быстрого удаления индикатора из окна текущего графика – для переинициализации всех индикаторов – для быстрого доступа к свойствам индикатора – для автоматизации процедуры переинициализации индикатора – после перключения таймфрейма или символа скрипт будет запускать повтороно автоматически.... Что-то типа скрипта, что бы «снял» с графика индикатор, советник («скинул» память) и опять поставил туда же сохраняя установки. Скажи, Игорь, что – либо в этом плане.

Scriptong: Смотри сюда.

Balbesik: Во первых женщин с праздником! Во вторых они являются продолжателями рода и против только дурак скажет. Когда они много говорят это только плюс - они детей учат (инстинкт однако). Успеха им и счастья! По работе - Да! Сравнил (у меня без спреда решалась – без проблем, решение на нормировки NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD) * Point, 5), что-то дало (перерисовка исчезла), а это бред, возможно спред на тик быть не должен - это не важно). Игорь, интересно, а у тебя тоже спреда нет (он может быть?, а то как-то у меня "криво" получилось в сравнении) Никогда не считал, что без профи в программировании можно, что-то сделать. Ты задачу решил! P.S. Хотя интересно, что такое «тик» и в этом плане связка с некими значениями, как Бид, Аск, спреды на Тике и нужна ли связка? Прсто Игорь, если биржа отображает экономику, то, с точки зрения любой системы - нельзя делать "жесткий "0"" (система всегда разнесена - иначе невозможно создать корректирующий контур - пойдут автоколебания и "разнос"). Поэтому "попытался включить "спред".

Balbesik:

Scriptong: Balbesik пишет: Сравнил (у меня без спреда решалась – без проблем, решение на нормировки NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD) * Point, 5), что-то дало (перерисовка исчезла), а это бред, возможно спред на тик быть не должен - это не важно). Евгений, в который раз прошу тебя: излагай мысли максимально ясно, не мешай все в кучу. Вот, к примеру, о сравнении каких программ ты сейчас пишешь? Ведь нет ничего сложного в том, чтобы дописать: "по поводу сравнения программ такой-то и такой-то". Balbesik пишет: Хотя интересно, что такое «тик» и в этом плане связка с некими значениями, как Бид, Аск, спреды на Тике и нужна ли связка? Тик - это поступление двусторонней котировки (Bid и Ask). По сравнению с предыдущей она может: 1. Не отличаться от предыдущей ни по цене Bid, ни по цене Ask. Это значит, что изменился объем по заявкам, представляющим текущие цены. В МТ4 мы это установить не можем - нет данных по реальным объемам. 2. Отличаться по цене Bid. Ask - такой же. 3. Отличаться по цене Ask. Bid - такой же. 4. Отличаться по обеим ценам. Если мы сейчас говорим об индикаторе BerBullBalance_OpenZero, то спред учитывать не нужно. Все построения производятся по цене Bid. Хотя никто не мешает немного изменить индикатор, переведя его показания по цене Ask. Но даже в этом случае спред нам не нужен. Ведь если построить свечной график сразу по двум ценам, то получим неприятную для глаз картинку - раздвоение свечей.

Balbesik: Привет, Игорь! Scriptong пишет: ...излагай мысли максимально ясно, не мешай все в кучу... Трудно излагать, когда не умеешь, да еще и когда пытаешься это сделать в праздник. Когда писал, то пытался написать в контексте моего предыдущего сообщения. Сравнивал со своей переделкой (это никому не интересно), считаю ее не корректной. Scriptong пишет: Если мы сейчас говорим об индикаторе BerBullBalance_OpenZero, то спред учитывать не нужно. Тут я немного о другом. Пытался разделить границу не просто Опен, а с учетом спреда – не смог – постоянное изменение последнего у меня ведет к «перерисовки» всего графика в твоем варианте алгоритма, да и, видимо, нет особого смысла (пока точно нет). Все это время смотрел, что получилось в индикаторе BerBullBalance_OpenZero? Мне нравится (правда я чуть переделал – вид, как у РСИ). Окончательно, для себя, выводы сделаю после тестирования (если получится твой архив тиковых данных преобразовать в график равновысоких баров и его «загнать» в тестер). Пока предварительно – появилась значимая дивергенция. Это и следовало ожидать – вот тут я ее приемлю, она логична, т.к. нормированы котировки, а это само по себе дает применение индикатора BerBullBalance_OpenZero логично и он с ценой не связан (все в рамках одного инструмента), есть привязка к единым точкам отсчета (базам) в виде твоего Зиг Зага и относительно этой «базы» сравнение с индикатором – производной от цены, который так же привязан к ЗигЗагу (сделан по ЗигЗагу) и индикатором – волатильности, который так же привязан к ЗигЗагу (сделан по ЗигЗагу), а и сам ЗигЗаг привязан к высоте бара (точнее 2-а ЗигЗага, один по размаху равен высоте бара, а второй «рабочий» связан с первым). В общем «картинка» получилась красивой. Еще раз - спасибо за индикатор!

Scriptong: Balbesik пишет: если получится твой архив тиковых данных преобразовать в график равновысоких баров и его «загнать» в тестер) М-м, серьезный вопрос, нужно будет как-то подумать насчет тестирования нестандартных ТФ в тестере на основании реальных тиков. Когда-то уже такое делал (нужно смотреть статьи на Admiral'e), но там не было реальных тиков, просто минутные свечи. В будущем проработаем вопрос.

Balbesik: Scriptong пишет: ...насчет тестирования нестандартных ТФ в тестере на основании реальных тиков... Я сейчас жду твой архив за прошедшую неделю. Есть вопрос по преобразовании истории "в лоб" не идет, надо проверить. Историю твою я преобразовал в равновысокие и да "загнать" не удается тиковый, "загнал" скриптом от Синбара, но не тики зато есть объем, чего не было на синбаре. Пока жду историю за эту неделю.

Scriptong: Balbesik пишет: Пока жду историю за эту неделю. Еще вчера добавил - 14.03.2015.

Balbesik: Доброй ночи, Игорь! Я совершенно не понимаю в этих форматах данных и в их формировании (всякие там разделители и прочее). С другой стороны, я понимаю, что совершенно бессмысленно, что-либо делать (как в прочем и в любом вопросе), если нет корректных исходных данных. Что-то я делаю не так? 1. Скрипт ConvertTicksFile - файл- Excel «Как есть» похоже привязан к терминалу – какой-то полтергейст. Файл сформированный на терминале для тестирования «не понимается» другим терминалом хотя и загружается в него. В общем на котором терминале нужен равновысокий график истории на том и делать файл «Как есть» временного графика. 2. Запустить в реале с историей не удается. Похоже, все таки, идет конфликт с барами временного графика. Требуется похоже некое переформатирование. Но так или иначе историю мы получаем, правда не понятно – возможно это некая смесь, т.к. .tks не разделяется и новый не переписывается (user.tks), хотя график похож. Ничего не понятно. 3. В тестере «зашиты» только стандартные Т.Ф. и что-то «мудрить» думаю смысла нет. Все равно проще использовать терминал для тестирования, а следовательно нужен только скрипт, который формирует данные, по аналогии как у Синбара, но только тиковые. Скрипт Синбара у тебя есть, но прикрепляю, чтобы не искать (переделан, по твоей рекомендации, чтобы не было разрывов на графике – работает как надо) – просто на подумать – я сам смутно представляю, как можно, на многих инструментах, реализовать тики – никакой ПАМЯТИ не хватит – лучше подумать (мне кажется более актуально), как память «скидывать». click here http://dropmefiles.com/nQjuV P.S. Зто просто предупреждение.

Scriptong: Balbesik пишет: 1. Скрипт ConvertTicksFile - файл- Excel «Как есть» похоже привязан к терминалу – какой-то полтергейст. Файл сформированный на терминале для тестирования «не понимается» другим терминалом хотя и загружается в него. В общем на котором терминале нужен равновысокий график истории на том и делать файл «Как есть» временного графика. Итоговый файл этого скрипта - просто файл тиков, а терминал использует совершенно другой формат - свечной. Поэтому ничего удивительного в том, что импорт не состоялся, нет. Balbesik пишет: 2. Запустить в реале с историей не удается. Запустить что? Balbesik пишет: Похоже, все таки, идет конфликт с барами временного графика. Требуется похоже некое переформатирование. Но так или иначе историю мы получаем, правда не понятно – возможно это некая смесь, т.к. .tks не разделяется и новый не переписывается (user.tks), хотя график похож. Подключить к терминалу тиковую историю (из файлов tks) можно только одним способом - через TicksCollector. Других способов нет. Подключить тиковую историю к тестеру можно через FXTFileMaker, но пока ограничиваемся стандартными ТФ. Как сделать тестирование на нестандартных ТФ пока думаю.

Balbesik: Все ни так. Scriptong пишет: Поэтому ничего удивительного в том, что импорт не состоялся, нет. Импорт идет - через временной график - график равновысоких строится (TicksCollector )! История по тикам временного графика - строим временной - по нему строим равновысокие. Если "... - просто файл тиков.." получен с другого терминала, у меня график истории равновысоких не строится Scriptong пишет: Запустить что? Есть график истории равновысоких (построенный по архивным данным) - пошли котировки на реале - график с историей равновысоких не работает, TicksCollector - при этом работает. Видимо конфликт с временным начинается, т.к. место записи одно и то же - новые тики равновысоких видимо "не стыкуются" с раннее записанными временными. Scriptong пишет: Как сделать тестирование на нестандартных ТФ пока думаю. Сделать, на отдельном терминале для тестировании, просто "закачку" - на любой ТФ (1мин, 5 мин и т.д.) закачать историю равновысоких. Через FXTFileMaker - неудается, а чере скрипт Синбара - лехко.



полная версия страницы