Пишу советник, нужно значение индюка с двух ТФ, через iCustom инфа
не видергивается (там один буфер, и чертит три линии), поэтому
беру координаты линий через график, так что интересует нет ли
функции смены таймфрейма графика.
Или, кто может, расскажите как достать инфу с прикрепленного
индюка, хотя первый вариант предпочтительней.
Нестандартный метод получения данных с наброшенного в режиме визуального тестирования индикатора есть.
Можно добавить в индикатор постановку графических объектов с нужными параметрами, а в советнике искать эти
объекты и снимать с них параметры. Но это будет работать только в режиме визуального тестирования и в демо/реале.
ИМХО, проще поковыряться с индикатором и iCustom.
Пишу советник, нужно значение индюка с двух ТФ, через iCustom инфа
не видергивается (там один буфер, и чертит три линии), поэтому
беру координаты линий через график, так что интересует нет ли
функции смены таймфрейма графика.
Или, кто может, расскажите как достать инфу с прикрепленного
индюка, хотя первый вариант предпочтительней.
Нестандартный метод получения данных с наброшенного в режиме визуального тестирования индикатора есть.
Можно добавить в индикатор постановку графических объектов с нужными параметрами, а в советнике искать эти
объекты и снимать с них параметры. Но это будет работать только в режиме визуального тестирования и в демо/реале.
ИМХО, проще поковыряться с индикатором и iCustom.
Проще все расчеты перенести в советник по любым наперед заданным тайм-фреймам. В данном случае другого варианта нет. Хотя варианты есть конечно, но лучше их не использовать.
Проще все расчеты перенести в советник по любым наперед заданным
тайм-фреймам. В данном случае другого варианта нет. Хотя
варианты есть конечно, но лучше их не использовать.
То есть нельзя просто на графике переключить таймфрейм? Неужели нет способа?
Если так, то подскажите как в индикаторе выделить в отдельные буферы координаты линий на нужном баре.
Проще все расчеты перенести в советник по любым наперед заданным
тайм-фреймам. В данном случае другого варианта нет. Хотя
варианты есть конечно, но лучше их не использовать.
То есть нельзя просто на графике переключить таймфрейм? Неужели нет способа?
Если так, то подскажите как в индикаторе выделить в отдельные буферы координаты линий на нужном баре.
Средствами MQL переключить нельзя ( но на форуме это неоднократно обсцждалось, реализации есть). Но это уже будет не тестирование.
Для работы достаточно знать имена объектов, что бы их найти и получить характеристики.
Для тестирования способ не подходит - заглядывание в будущее.
Самы простой способ, расчет в советнике. Просто перенести его из индикатора в советник.
Средствами MQL переключить нельзя ( но на форуме это неоднократно
обсцждалось, реализации есть). Но это уже будет не тестирование.
Для работы достаточно знать имена объектов, что бы их найти и
получить характеристики.
Для тестирования способ не подходит - заглядывание в будущее.
Самы простой способ, расчет в советнике. Просто перенести его
из индикатора в советник.
Что ж буду пробовать, спасибо.
#property copyright "justMAX" extern double lot=1; int ticket=-1; int start() { if(ticket==-1) { if(iCustom(NULL,0,"_#PatSim_black1",0,1)==High[1]) ticket=OrderSend(NULL,OP_SELL,lot,Bid,5*Point,0,0,0,777,0,Red); if(iCustom(NULL,0,"_#PatSim_black1",0,1)==Low[1]) ticket=OrderSend(NULL,OP_BUY,lot,Ask,5*Point,0,0,0,777,0,Green); } if(ticket>=0) if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderType()==OP_BUY) if(iCustom(NULL,0,"_#PatSim_black",0,1)==High[1]) if(OrderClose(ticket,OrderLots(),Bid,10,Green)) ticket=-1; if(OrderType()==OP_SELL) if(iCustom(NULL,0,"_#PatSim_black",0,1)==Low[1]) if(OrderClose(ticket,OrderLots(),Ask,10,Red)) ticket=-1; } return(0); }
Это малая, но основная часть моего первого советника, на тестировании в встроенном тестере не открываются сделки, хотя должны - индюк дает сигналы.Прошу сказать в чем ошибка, опыта в этой среде нет, хотя знаю С++.
Спасибо
В чем дело?
#property copyright "justMAX" extern double lot=1; int ticket; int start() { if(Low[1]==117.18) ticket=OrderSend(NULL,OP_BUY,lot,Ask,5*Point,0,0,0,777,0,Green); if(High[1]==119.83) OrderClose(ticket,lot,Bid,10,Green); return(0); }
В чем дело?
и здесь, на форуме. Поэтому, прежде, чем задавать вопросы, следует вывести через Print и (или) Comment промежуточные
данные, например, Low[1], High[1], ticket, iCustom и пр. Обязательна обработка ошибок с выводом и анализом кода ошибки.
Кроме того, при прямых сравнениях double возможны накладки, лучше использовать обходные пути.
Обсуждения таких и подобных проблем и куски требуемых кодов щедро разбросаны по форуму - пользуйтесь поиском и хелпом.
После этого 90% вопросов снимется.
На оставшиеся 10% местные профи охотно Вам ответят - всегда приятно помочь человеку, который и сам упорно копает.
if(iCustom(NULL,0,"_#PatSim_black1",0,1)==High[1]) ticket=OrderSend(NULL,OP_SELL,lot,Bid,5*Point,0,0,0,777,0,Red); if(iCustom(NULL,0,"_#PatSim_black1",0,1)==Low[1]) ticket=OrderSend(NULL,OP_BUY,lot,Ask,5*Point,0,0,0,777,0,Green);
Выделил, то что мне не понравилось. Читайте также что пишет в логах.
Сократил код для малого куска времени, на котором тестирую, где есть вершины 117.18 и 119.83, и все равно количество сделок 0.
В чем дело?
if(Low[1]==117.18) if(High[1]==119.83)
Поищи что пишут люди о сравнении действительных чисел.
Это есть тут же на форуме.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Или, кто может, расскажите как достать инфу с прикрепленного индюка, хотя первый вариант предпочтительней.
Заранее СПАСИБО.