Нашел такую проблему: У меня советник основан на графических объектах, а именно на трендовых линиях. В реальной торговле все прекрасно торгует, но при тестировании советник не совершает ни одной сделки. Чуть подумав решил вывести информацию о графических объектах при помощи Print(ObjectsTotal(0,0,OBJ_TREND)); и при тестировании в журнале мне показало "0", тобишь тестер объектов не видит, а значит и тестирование своего советника не представляется возможным. Написал в сервисдеск о этой проблеме мне ответили там:
В данный момент тестерному агенту не передаётся никакой информации о графических объектах, которые должны быть на графике. Мы этот момент исправим, но немного погодя. Пока отложим. Передавайте информацию об объектах через файл данных. Вы и тестировать можете с файлом и на чемпионат можете файл отдать....
На вопрос, не покажите ли как это делать на примере, мне дали всего вот эту ссылку https://www.mql5.com/ru/docs/files , но я ума не приложу как же это можно сделать. Кто-нибудь сталкивался с этим? Как же все-таки это можно сделать?
Хорошо бы вкратце суть вкладывать в само заглавие (это так, вопрос читабельности форума в целом).
А по вашему вопросу проблема в том что вы строите граф-объекты а потом запрашиваете его значения, в этом главная ошибка.
Вы тратите ресурсы на создание объекта, а потом спрашиваете у объекта то что недавно ему дали.
У меня на четвёрке был похожий советник, и для экономии ресурсов я завёл переменные для хранения данных по которым создаются граф-объекты,
таким образом торговля ведётся не по объектам а по его данным (те переменным которые хранят координаты) что даёт возможность отключать
визуализацию (те построение граф-объектов) без потери работоспособности при этом значительно экономя ресурсы.
В реалтайме эта экономия не видна но при оптимизации экономия до 400%. Просто работа с графикой довольно медлительна, отсюда экономия.
В пятёрке вообще можно создавать объекты учёта (те объеденять перевенные в объекты),
так что такая реализация ещё проще будет выглядеть чем в четвёрке.
Допустим я имею канал и он меняется в зависимости от ситуации на рынке, при подходе цены к нижней границе покупаю к верхней продаю. Чтоб узнать цену на текущем баре границы канала я использую:
LinPod= ObjectGetValueByTime(0,"Поддержка",Time[0]);
ну и потом условие:
MqlTick Last_Tick; if (Last_Tick.bid==LinPod) { покупаю }
Это все вкраце..., вот эта цена:
LinPod= ObjectGetValueByTime(0,"Поддержка",Time[0]);
не берется, т.к тестер не чертит мой канал...хотя в реальной торговле, нормально торгует.
Urain А примером можешь помочь, как это обойти?

- www.mql5.com
Допустим я имею канал и он меняется в зависимости от ситуации на рынке, при подходе цены к нижней границе покупаю к верхней продаю. Чтоб узнать цену на текущем баре границы канала я использую:
...Имею канал это значит что он был построен, построен по каким то входным данным, вот от этих входных данных канала и нужно плясать.
Приведи куски кода где создаются объекты.
Имею канал это значит что он был построен, построен по каким то входным данным, вот от этих входных данных канала и нужно плясать.
Приведи куски кода где создаются объекты.
int q=0; int i=0; for(;i<Kol;i++) { if(Ext[i]!=0) { q++; if(q==2) { ExtA=Ext[i]; TimeA=Time[i]; I1=i; } if(q==3) { ExtB=Ext[i]; TimeB=Time[i]; I2=i; } if(q==4) { ExtC=Ext[i]; TimeC=Time[i]; I3=i; Time0_pam=Time[0]; } } }
.......
if(ExtA<ExtB && ExtC!=ExtA) { Type=1; ObjectCreate(0,"Поддержка",OBJ_TREND,0,TimeC,ExtC,TimeA,ExtA); ObjectSetInteger(0,"Поддержка",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Поддержка",OBJPROP_COLOR,ColorLine); double Prom=ObjectGetValueByTime(0,"Поддержка",TimeB); double Sum=ExtB-Prom; double ddd1=ExtA+Sum; double proc1=Sum/100*10; double proc21=Sum/100*50; double proc3=Sum/100*(LineTP+100); ObjectCreate(0,"Линия TP",OBJ_TREND,0,TimeC,ExtC+proc3,TimeA,ExtA+proc3); ObjectSetInteger(0,"Линия TP",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Линия TP",OBJPROP_COLOR,ColorLineTP); ObjectSetInteger(0,"Линия TP",OBJPROP_STYLE,2); ObjectCreate(0,"Поддержка -10%",OBJ_TREND,0,TimeC,ExtC-proc1,TimeA,ExtA-proc1); ObjectSetInteger(0,"Поддержка -10%",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Поддержка -10%",OBJPROP_COLOR,ColorLine); ObjectSetInteger(0,"Поддержка -10%",OBJPROP_STYLE,2); ObjectCreate(0,"Поддержка +10%",OBJ_TREND,0,TimeC,ExtC+proc1,TimeA,ExtA+proc1); ObjectSetInteger(0,"Поддержка +10%",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Поддержка +10%",OBJPROP_COLOR,ColorLine); ObjectSetInteger(0,"Поддержка +10%",OBJPROP_STYLE,2); ObjectCreate(0,"Центральная линия +50%",OBJ_TREND,0,TimeC,ExtC+proc21,TimeA,ExtA+proc21); ObjectSetInteger(0,"Центральная линия +50%",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Центральная линия +50%",OBJPROP_COLOR,ColorLine); ObjectSetInteger(0,"Центральная линия +50%",OBJPROP_STYLE,1); if(ExtC>ExtA) { double RazAC1=ExtC-ExtA; ObjectCreate(0,"Сопративление",OBJ_TREND,0,TimeB,ExtB,TimeA,ddd1); ObjectSetInteger(0,"Сопративление",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Сопративление",OBJPROP_COLOR,ColorLine); ObjectCreate(0,"Сопративление +10%",OBJ_TREND,0,TimeB,ExtB-proc1,TimeA,ddd1-proc1); ObjectSetInteger(0,"Сопративление +10%",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Сопративление +10%",OBJPROP_COLOR,ColorLine); ObjectSetInteger(0,"Сопративление +10%",OBJPROP_STYLE,2); ObjectCreate(0,"Сопративление -10%",OBJ_TREND,0,TimeB,ExtB+proc1,TimeA,ddd1+proc1); ObjectSetInteger(0,"Сопративление -10%",OBJPROP_RAY_RIGHT,1); ObjectSetInteger(0,"Сопративление -10%",OBJPROP_COLOR,ColorLine); ObjectSetInteger(0,"Сопративление -10%",OBJPROP_STYLE,2);
Это яZigZag считал
Ну тут ничего особо сложного ...
Создай класс где будешь создавать объекты. Тк у тебя только тренд линии то там нужно только два метода вычисляющих координаты.
Метод по цене возвращающий время и по времени возвражающий цену. Всё это считается по уравнению прямой.
Ещё в классе опиши метод для того чтоб присвоить входные данные внутренним переменным, из которых потом буду выполнятся все вычисления.
У тебя получится что при создании объекта ты передаёшь ему входные данные.
Затем при необходимости можешь получить данные о том какая будет цена в пол шестого :о)
можно добавить в класс постороение реального граф-объекта при условии.
Таким образом если будет выполненно условие то можно ещё и увидеть это всё на графике.
Но главное что таким образом сам граф-объект будет просто надстройка от которой ничего не зависит.

- www.mql5.com
Нашел такую проблему: У меня советник основан на графических объектах, а именно на трендовых линиях. В реальной торговле все прекрасно торгует, но при тестировании советник не совершает ни одной сделки. Чуть подумав решил вывести информацию о графических объектах при помощи Print(ObjectsTotal(0,0,OBJ_TREND)); и при тестировании в журнале мне показало "0", тобишь тестер объектов не видит, а значит и тестирование своего советника не представляется возможным. Написал в сервисдеск о этой проблеме мне ответили там:
В данный момент тестерному агенту не передаётся никакой информации о графических объектах, которые должны быть на графике. Мы этот момент исправим, но немного погодя. Пока отложим. Передавайте информацию об объектах через файл данных. Вы и тестировать можете с файлом и на чемпионат можете файл отдать....
На вопрос, не покажите ли как это делать на примере, мне дали всего вот эту ссылку https://www.mql5.com/ru/docs/files , но я ума не приложу как же это можно сделать. Кто-нибудь сталкивался с этим? Как же все-таки это можно сделать?
вам написали сложно, все гораздо проще.
Вы не можете изменять трендовые линии во время тестирования, и вы об том знаете, следовательно они у вас создаются советником.
Если советник их полностью создает и модифицирует, то ему не нужно вообще обращаться ни к ним ни к файлу, все у вас внутри советника и так уже есть.
вам написали сложно, все гораздо проще.
Вы не можете изменять трендовые линии во время тестирования, и вы об том знаете, следовательно они у вас создаются советником.
Если советник их полностью создает и модифицирует, то ему не нужно вообще обращаться ни к ним ни к файлу, все у вас внутри советника и так уже есть.
Есть но при тестировании эти линии не видятся тестером, говорят что потом этим займуться...про файлы я тоже не понял зачем все это надо...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нашел такую проблему: У меня советник основан на графических объектах, а именно на трендовых линиях. В реальной торговле все прекрасно торгует, но при тестировании советник не совершает ни одной сделки. Чуть подумав решил вывести информацию о графических объектах при помощи Print(ObjectsTotal(0,0,OBJ_TREND)); и при тестировании в журнале мне показало "0", тобишь тестер объектов не видит, а значит и тестирование своего советника не представляется возможным. Написал в сервисдеск о этой проблеме мне ответили там:
В данный момент тестерному агенту не передаётся никакой информации о графических объектах, которые должны быть на графике. Мы этот момент исправим, но немного погодя. Пока отложим. Передавайте информацию об объектах через файл данных. Вы и тестировать можете с файлом и на чемпионат можете файл отдать....
На вопрос, не покажите ли как это делать на примере, мне дали всего вот эту ссылку https://www.mql5.com/ru/docs/files , но я ума не приложу как же это можно сделать. Кто-нибудь сталкивался с этим? Как же все-таки это можно сделать?