Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 935

 
Доброго времени суток,хотел узнать есть ли нормальный скрипт для  загрузки и синхронизации истории котировок для МТ5,до недавнего времени пользовался  shistoryexport.ex5 и всё было нормально,сканер работал,выдавал сигналы,всё работало чётко,но вчера после обеда как обрубило,сканер просто перестал видеть историю и соответственно искать точки входа по стратегии и давать сигналы,думал дело в сканере,но  у нас несколько версий его и на всех перестал выдавать сигналы,и у меня и у товарища,очистил терминал,бесполезно,удалил его со всей инфой,переустановил и когда начал с помощью скрипта грузить историю,открыл вкладку эксперты и увидел,что там одни ошибки при загрузке истории,написал в поддержку брокеру,ответили,что недавно в МТ% что то обновляли разрабы и возможно сбился алгоритм скрипта вот такое он выдаёт при загрузке истории,извиняюсь за много букв,просто попытался подробно объяснить ситуацию,поддержка брокера помогать отказалась,мол это не мы,а метаквоты,к тем не напишешь,у них нет обратной связи,вот решил тут спросить,что делать и есть ли другие скрипты для истории котировок,да сразу скажу,пытался и с помощью месячного ТФ загрузить котировки,бесполезно,заранее спасибо
 
82Dmitry82:
Доброго времени суток,хотел узнать есть ли нормальный скрипт для  загрузки и синхронизации истории котировок для МТ5,до недавнего времени пользовался  shistoryexport.ex5 и всё было нормально,сканер работал,выдавал сигналы,всё работало чётко,но вчера после обеда как обрубило,сканер просто перестал видеть историю и соответственно искать точки входа по стратегии и давать сигналы,думал дело в сканере,но  у нас несколько версий его и на всех перестал выдавать сигналы,и у меня и у товарища,очистил терминал,бесполезно,удалил его со всей инфой,переустановил и когда начал с помощью скрипта грузить историю,открыл вкладку эксперты и увидел,что там одни ошибки при загрузке истории,написал в поддержку брокеру,ответили,что недавно в МТ% что то обновляли разрабы и возможно сбился алгоритм скрипта вот такое он выдаёт при загрузке истории,извиняюсь за много букв,просто попытался подробно объяснить ситуацию,поддержка брокера помогать отказалась,мол это не мы,а метаквоты,к тем не напишешь,у них нет обратной связи,вот решил тут спросить,что делать и есть ли другие скрипты для истории котировок,да сразу скажу,пытался и с помощью месячного ТФ загрузить котировки,бесполезно,заранее спасибо

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

Промучился с поиском причин пока не сказал заказчику протестировать на котировках других брокеров. И там оказалось всё нормально.

По причине ого, что обсуждать брокеров на данном ресурсе запрещено, давайте на том и остановимся.

 
Ребята помогите с этим вопросом https://www.mql5.com/ru/forum/160683/page934#comment_12795598
 
Seric29:
Ребята помогите с этим вопросом https://www.mql5.com/ru/forum/160683/page934#comment_12795598

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

 
Artyom Trishkin:

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

Промучился с поиском причин пока не сказал заказчику протестировать на котировках других брокеров. И там оказалось всё нормально.

По причине ого, что обсуждать брокеров на данном ресурсе запрещено, давайте на том и остановимся.

Так в том то и дело,что уже больше полугода у них и  не было проблем,контору то поменять не проблема,да только в других,на мт5 нет америки,а это очень нужная опция,а на квике и транзаке не напишешь сканер,уже пытались из-за какой то причины,наш использует макди гистограмму,вроде в ней проблема,по крайней мере когда хотели заказать для квика ответ был отрицательным после просмотра ТЗ,всё упиралось в встроенные индюки платформы,просто ммвб порой в спячке и америка даёт заработать

 
Igor Makanu:

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

Это должно работать так.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#define templ(T)          template<typename T>// задача данного макроса определять int bool double и т.д

//Далее пишем макрос который будет принимать массив и возвращать
//результат с помощью вызова перегружаемой функции которая будет вызываться из класса, но в моём примере вписана простая функция,
// я 3 дня посидел и выяснил что макрос может принимать массивы любой размеренности  в принципе об этом написано в справке что макрос может принимать эл. любого типа
#define Vosmas(a,b,c,d,e) /*return*/(Fun(a,b,c,d,e))//a- массив, 
                                                    //b- номер строки если нужен
                                                    //c,d- номера измерений если нужны и массив многомерный

int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)

int OnInit()
{int Perem=0;
//макрос должен вызвать функцию из класса и сделать следующее/ в моём примере будет простая функция
 Perem=Vosmas(Mas,0,0,0,3);
 Print("Vosmas: ",Perem);//результат 3
return(INIT_SUCCEEDED);}

templ(T)class CData{
public:CData(){};~CData(){};
       //перегружаемая функция Total() с наращиваемым количеством аргументов, не знаю будет ли оно наращивать аргументы вроде записывается но когда дойдёт до расчётов увидим
       //хотелось бы с этим разобраться 
       //а также делать такую перегрузку 
       T Total(T &mas[]    ,int y1=0 ...){return(mas[y1]);}  //y2 весит в холостую  
       T Total(T &mas[][]  ,int y1=0 ...){return(mas[y1][y2]);}
       T Total(T &mas[][][],int y1=0 ...){return(mas[y1][y2][y3]);}};
       
         
templ(T) T Fun(T &a[],int b,int c,int d,int e){a[b]=e; return (a[b]);}// оставшиеся аргументы будут висеть в холостую

В общем хочу добиться такого эффекта, но в области классов нет опыта. Код компилируется и работает

 
Seric29:

Это должно работать так.

к сожалению я не понимаю логику этого кода, мне даже трудно представить зачем макроподстановкой объявлять ключевые слова языка,

ну и по логике, я сомневаюсь, что Вы получите доступ к многомерному массиву таким способом, по моему Ваш пример просто не скомпилировал шаблон и соответственно Вы не получили ошибку при компиляции,

в общем я не помогу, может кто еще разберется в Вашем примере

 
Igor Makanu:

к сожалению я не понимаю логику этого кода, мне даже трудно представить зачем макроподстановкой объявлять ключевые слова языка,

ну и по логике, я сомневаюсь, что Вы получите доступ к многомерному массиву таким способом, по моему Ваш пример просто не скомпилировал шаблон и соответственно Вы не получили ошибку при компиляции,

в общем я не помогу, может кто еще разберется в Вашем примере

Код компилируется но он не доделан, суть в том чтобы получить вот этот результат

return(mas[y1]);

мне нужно вызвать функция из класса и получить это значение.

 
Seric29:

Код компилируется но он не доделан

еще раз: то что Вы не получили ошибку компиляции, не значит, что Ваш шаблонный класс был включен - где объект класса CData ? - вижу объявление шаблона, а где такая переменная? - обьект?

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

#define templ(T)          template<typename T>

возможно в ней вся "соль", я редко пользуюсь макроподстановками, по крайней мере если я использую макрос, то я понимаю, что он в итоге даст, в Вашем примере для меня это загадка

 
Igor Makanu:

еще раз: то что Вы не получили ошибку компиляции, не значит, что Ваш шаблонный класс был включен - где объект класса CData ? - вижу объявление шаблона, а где такая переменная? - обьект?

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

возможно в ней вся "соль", я редко пользуюсь макроподстановками, по крайней мере если я использую макрос, то я понимаю, что он в итоге даст, в Вашем примере для меня это загадка

Задача макроса вызвать функцию из класса и передать значение в эту функцию а т.к. макрос может брать массив любой размеренности то я и пытаюсь составить такую схему. Конечно куча камней но мне нужно вызвать функцию из класса а я не знаю как вызвать простую функцию из класса(в моём случае у метода Total нет описания) об этом не написано в справке там описаны сложные примеры связанные с перепередачей.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#define templ(T)          template<typename T>// задача данного макроса определять int bool double и т.д

#define Vosmas(a,b,c,d,e)  5

int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)

int OnInit()
{int Perem=0;
Perem=Vosmas(Mas,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas2,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas3,0,0,0,0);
Print("Vosmas: ",Perem);//во всех случаях результат 5
return(INIT_SUCCEEDED);}

Вот пример макрос берёт массив любой размеренности, плохо что разработчики урезали эти возможности нормальную работу со сложными элементами

Можно и без шаблона но лучше конечно с шаблоном.

Причина обращения: