#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)intOnInit()
{int Perem=0;
//макрос должен вызвать функцию из класса и сделать следующее/ в моём примере будет простая функция
Perem=Vosmas(Mas,0,0,0,3);
Print("Vosmas: ",Perem);//результат 3return(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]);}// оставшиеся аргументы будут висеть в холостую
#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) 5int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)intOnInit()
{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);//во всех случаях результат 5return(INIT_SUCCEEDED);}
你好,我想知道是否有一个正常的脚本来加载和同步MT5的报价历史。ex5,一切都很好,扫描器工作,给出信号,一切都很好,但昨天午餐后,由于断电,扫描器就不再看到历史记录,因此,根据策略寻找进入点并给出信号,我以为问题出在扫描器上,但我有几个版本,所有的信号都停止发出了,包括我和我的朋友,我清空了终端,没有用,把它和所有的信息都删除了,重新安装,当我开始用脚本加载历史,我打开专家标签,看到加载历史时只有错误,我写信给经纪人支持,他们回答说最近在MT%,可能已经更新了,算法在脚本中被混淆了,他发出了这样一个加载历史。我为大量的信件道歉,我只是试图详细解释情况,经纪人支持拒绝帮助,他们说这不是我们的问题,而metaquotes,你不能写信给他们,他们没有反馈,所以我决定在这里问该怎么做,是否有其他脚本的报价历史,我必须承认我尝试使用每月TF下载报价,没有用,提前感谢。
我不打算说什么,但这是唯一一家在履行我的一个订单时,历史数据出现问题的公司--它是开了又关。
我一直在寻找原因,直到我告诉客户在其他经纪公司的报价上进行测试。而那里的一切结果都是好的。
如果你曾试图在每月的时间框架内加载报价,那是没有用的。
伙计们帮助解决这个问题https://www.mql5.com/ru/forum/160683/page934#comment_12795598
你没有一个完整的例子,贴出可重复的代码,即一个完整的类模板和一个代码例子,在这个例子中你使用这个模板创建一个对象,到目前为止只有 "telepaths on holiday" .... 我怀疑代码根本无法编译,你的模板中有许多争议点,我可能看不到其中的逻辑。
我不打算说什么,但这是唯一一家在履行我的一个订单时,历史数据出现问题的公司--它是开了又关。
我一直在寻找原因,直到我告诉客户用其他经纪商的报价来测试它。而那里的一切结果都是好的。
原因是禁止在这个资源上讨论经纪人,我们就不谈这个了。
这就是问题所在,他们在半年多的时间里没有出现过问题。我试图使用它,因为某些原因,我们的使用一个makdi bargraph,这似乎是问题,至少当他们想为QuickBooks订购,答案是否定的,在审查TOR后,所有的休息在内置的诱导平台,只是IMb有时在休眠和美国给工作
你没有一个完整的例子,请贴出可复制的代码,即一个完整的类模板和一个代码例子,你在其中使用这个模板创建一个对象,到目前为止只有 "度假的心灵感应"....,我怀疑代码根本无法编译,你的模板中有许多值得怀疑的地方,也许我没有看到其中的逻辑。
它应该像这样工作。
一般来说,我想达到这种效果,但在班级方面没有经验。代码编译后可以使用
它应该像这样工作。
不幸的是,我不理解这段代码的逻辑,我甚至无法想象为什么你要通过宏替换来声明语言关键词。
而且根据逻辑,我怀疑你是否能通过这种方式获得对多维数组 的访问,我认为你的例子只是没有编译出一个模板,因此你没有得到一个编译时错误。
我帮不上什么忙,也许别人能搞清楚你的例子
不幸的是,我不明白这段代码的逻辑,我甚至无法想象为什么你要用宏替换来声明语言关键词。
而且根据逻辑,我怀疑你是否能通过这种方式获得对多维数组 的访问,我认为你的例子只是没有编译出一个模板,因此你没有得到一个编译时错误。
我帮不上什么忙,也许别人能搞清楚你的例子。
代码可以编译,但还没有完成,关键是要得到这样的结果
return(mas[y1]);
我需要从类中调用一个函数并获得这个值。
代码可以编译,但还没有完成。
再次强调:你没有得到一个编译错误 并不意味着你的模板类被包含了 - CData类的对象在哪里?- 我看到一个模板声明,变量在哪里?- 对象?
如果你 "非常需要 "解决这个问题,那就编写完全可重复的代码--完全没有.....,由你决定,而且我不明白使用宏替换的逻辑。
也许这就是 "要点",我很少使用宏,至少如果我使用一个宏,我明白它最终会做什么,在你的例子中,它对我来说是个谜。
再次强调:你没有得到一个编译错误 并不意味着你的模板类被包含了--CData类的对象在哪里?- 我看到了一个模板声明,但这样一个变量在哪里?- 对象?
如果你 "非常需要 "解决这个问题,那就编写完全可重复的代码--完全没有.....,由你决定,而且我不明白使用宏替换的逻辑。
也许这就是问题的关键,我很少使用宏,至少如果我使用宏,我明白它最终会做什么,在你的例子中,它对我来说是一个谜。
宏的任务是从类中调用一个函数,并将值传递给函数,由于宏可以接受任何维度的数组,我正试图做出这样的方案。当然有很多宝石,但我需要从类中调用函数,我不知道如何调用类的简单函数(在我的例子中,方法Total没有描述)不是用Help写的,有复杂的例子可以转移。
这里有一个例子,一个宏需要一个任意维度的数组,开发者削减了这些功能,正常地处理复杂的元素,这很糟糕。
你可以不用模板,但有模板会更好。