Mt4结束支持。 - 页 25 1...181920212223242526272829303132...47 新评论 Nikolai Semko 2017.09.10 20:27 #241 Artyom Trishkin:你只需要写一个用户询问的函数。"M5上有一个新的酒吧 吗?"并得到一个是/否的答案。比如说。这里是你的函数IsNewBar(),我们将随着任务的进一步扩展而进一步发展和扭曲/旋转它。在我看来,这并不是一个证明OOP有用性的好例子。 例如,这里是一个只使用一个函数的变体。int OnInit() { return(INIT_SUCCEEDED); } void OnTick() { IsNewBar(0,false); // режим сбора информации if(IsNewBar()) Print("Пришел новый бар текущего ТФ"); // режим считывания информации if(IsNewBar(PERIOD_H4)) Print("Пришел новый бар H4"); // режим считывания информации if(IsNewBar(PERIOD_D1)) Print("Пришел новый бар D1"); // режим считывания информации } bool IsNewBar(ENUM_TIMEFRAMES tf=PERIOD_CURRENT,bool out=true) { static const ENUM_TIMEFRAMES TF[22]= { PERIOD_CURRENT,PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,PERIOD_M20,PERIOD_M30, PERIOD_H1,PERIOD_H2,PERIOD_H3,PERIOD_H4,PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1,PERIOD_W1,PERIOD_MN1 }; static bool newbar[22]; static bool FirstTime=true; static int acb[22]; // array of current bars if(FirstTime) { for(int i=0;i<22;i++) acb[i]=Bars(Symbol(),TF[i]); FirstTime=false; return(false); } int curtf=0; while(TF[curtf]!=tf) curtf++; if(out) return (newbar[curtf]); for(int i=0;i<22;i++) { int CurBars=Bars(Symbol(),TF[i]); if(acb[i]<CurBars) { acb[i]=CurBars; newbar[i]=true; } else newbar[i]=false; } return(false); }你当然可以把它从OnTick 中移除,然后插入OnTimer 中。 Artyom Trishkin 2017.09.10 20:32 #242 Реter Konow:关于这个问题,我认为你错了。请向服务台查询。让他们来回答这个问题:无论报价的到来,平台上是否会形成新的柱状物,还是不会。如果没有,那么在发生新的酒吧时,请检查上面是否有一句话。如果是这样,新的酒吧已经形成。我们可以这样做。你不需要改变太多。 哦,妈妈咪呀...只要读了这些信息就可以了。我非常惊讶你不知道,当他们告诉你这件事的时候,你也有疑虑。对于这种幼稚的问题,我甚至不会去看服务台的方向,他们会嘲笑你。然后自己问他们--在你的个人资料中,你有一个Servicedesk的链接。 Artyom Trishkin 2017.09.10 20:36 #243 Nikolai Semko: 在我看来,这并不是一个证明OOP有用性的好例子。 例如,这里有一个只使用一个函数的变体。当然,你可以把它从OnTick 中移除,然后插入OnTimer 中。没有看逻辑,好吧,让我们假设假设它工作正常。 而由任何随机的字符?想象一下,程序使用的是市场概览窗口中的符号列表,用户可以随时改变符号集。 Andrey Kisselyov 2017.09.10 20:45 #244 我个人没有看到@Nikolai Semko的 OOP代码。 恭敬地说。 Vitaly Muzichenko 2017.09.10 20:50 #245 Artyom的问题有点滞后,但问题是这样的:用程序化的方式来写,这样才能正常工作void OnTick() { if(IsNewBar("AUDCAD",PERIOD_H1)) { // задача №1 } if(IsNewBar("GBPJPY",PERIOD_M15)) { // задача №2 } if(IsNewBar("EURUSD",PERIOD_H4)) { // задача №3 } } // Функция "Новый бар" bool IsNewBar(....) { здесь код, который нужно написать } Vasiliy Pushkaryov 2017.09.10 20:55 #246 Реter Konow:是的,在一个定时器上。出现一个没有引号的新栏。我们感兴趣的正是酒吧出现的 事件,而我们可以在Optisk()中固定报价。在任何情况下都会出现一个酒吧。这里 我们有对酒吧的解释。Time[i]栏的打开时间通常与tick的到达时间不一样。任何时间框架的条形图的开盘时间总是时间框架的倍数。在一个时间框架内出现的任何第一个刻度线 都是形成一个条形 的;如果在该时间框架内没有刻度线进入,在该时间框架内也不会形成条形。 Artyom Trishkin 2017.09.10 20:55 #247 Vitaly Muzichenko:Artyom没有真正涵盖这个问题,但问题是这样的:用程序化的方式来写,这样才能正确地工作我想逐步增加任务,使人们能够快速、方便、简单地执行任务。稍后展示如何使用OOP轻松完成。但OOP的主要拒绝者自己却背离了问题的解决:) Vitaly Muzichenko 2017.09.10 21:04 #248 Artyom Trishkin:我想逐步增加任务,使人们能够快速、方便、简单地执行任务。然后展示用OOP做这件事是多么容易。但OOP的主要拒绝者自己却拒绝了任务的解决方案:)是的,我自己并没有真正说明,我转述一下。Artem还没有打开一个小问题,问题是:用程序化的风格来写,它 能正确地 工作。也许他将会回来证明这是很容易和简单的。 Artyom Trishkin 2017.09.10 21:21 #249 Vitaly Muzichenko:我自己并没有真正说出来,所以我重新表述一下。Artyom并没有真正涵盖这个问题,问题是这样的:用程序化的风格来写,这样才能 正确地 工作也许他将回来证明,这非常容易和简单。我有一个目标,就是让他的程序化风格的代码最终在这样一个循环中工作。 ENUM_TIMEFRAMES array_timeframes[]= { PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,PERIOD_M30, PERIOD_H1,PERIOD_H2,PERIOD_H3,PERIOD_H4,PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1,PERIOD_W1,PERIOD_MN1 }; int total=SymbolsTotal(true), total_tf=ArraySize(array_timeframes); for(int i=0; i<total; i++){ string symbol_name=SymbolName(i,true); for(int j=0; j<total_tf; j++){ if(IsNewBar(symbol_name,array_timeframes[j])){ Print("Новый бар на ",symbol_name," ",EnumToString(array_timeframes[j])); } } } Реter Konow 2017.09.10 21:41 #250 Artyom Trishkin:我的目标是,最终的结果是他的程序化风格的代码能在这样一个循环中工作。符号循环,当报价到达时检查新的条形图 是否打开,等等,可以很容易地被添加到我的解决方案中。而OOP与此有什么关系?你选择了一个错误的例子。闲暇时想想别的事情。 1...181920212223242526272829303132...47 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你只需要写一个用户询问的函数。"M5上有一个新的酒吧 吗?"并得到一个是/否的答案。
比如说。
这里是你的函数IsNewBar(),我们将随着任务的进一步扩展而进一步发展和扭曲/旋转它。
在我看来,这并不是一个证明OOP有用性的好例子。
例如,这里是一个只使用一个函数的变体。
你当然可以把它从OnTick 中移除,然后插入OnTimer 中。
关于这个问题,我认为你错了。请向服务台查询。让他们来回答这个问题:无论报价的到来,平台上是否会形成新的柱状物,还是不会。如果没有,那么在发生新的酒吧时,请检查上面是否有一句话。如果是这样,新的酒吧已经形成。我们可以这样做。你不需要改变太多。
在我看来,这并不是一个证明OOP有用性的好例子。
例如,这里有一个只使用一个函数的变体。
当然,你可以把它从OnTick 中移除,然后插入OnTimer 中。
没有看逻辑,好吧,让我们假设假设它工作正常。
而由任何随机的字符?
想象一下,程序使用的是市场概览窗口中的符号列表,用户可以随时改变符号集。
恭敬地说。
Artyom的问题有点滞后,但问题是这样的:用程序化的方式来写,这样才能正常工作
是的,在一个定时器上。出现一个没有引号的新栏。我们感兴趣的正是酒吧出现的 事件,而我们可以在Optisk()中固定报价。
在任何情况下都会出现一个酒吧。
这里 我们有对酒吧的解释。
Time[i]栏的打开时间通常与tick的到达时间不一样。任何时间框架的条形图的开盘时间总是时间框架的倍数。在一个时间框架内出现的任何第一个刻度线 都是形成一个条形 的;如果在该时间框架内没有刻度线进入,在该时间框架内也不会形成条形。
Artyom没有真正涵盖这个问题,但问题是这样的:用程序化的方式来写,这样才能正确地工作
我想逐步增加任务,使人们能够快速、方便、简单地执行任务。稍后展示如何使用OOP轻松完成。
但OOP的主要拒绝者自己却背离了问题的解决:)
我想逐步增加任务,使人们能够快速、方便、简单地执行任务。然后展示用OOP做这件事是多么容易。
但OOP的主要拒绝者自己却拒绝了任务的解决方案:)
是的,我自己并没有真正说明,我转述一下。
Artem还没有打开一个小问题,问题是:用程序化的风格来写,它 能正确地 工作。
也许他将会回来证明这是很容易和简单的。
我自己并没有真正说出来,所以我重新表述一下。
Artyom并没有真正涵盖这个问题,问题是这样的:用程序化的风格来写,这样才能 正确地 工作
也许他将回来证明,这非常容易和简单。
我有一个目标,就是让他的程序化风格的代码最终在这样一个循环中工作。
我的目标是,最终的结果是他的程序化风格的代码能在这样一个循环中工作。
符号循环,当报价到达时检查新的条形图 是否打开,等等,可以很容易地被添加到我的解决方案中。而OOP与此有什么关系?
你选择了一个错误的例子。闲暇时想想别的事情。