新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1199 1...119211931194119511961197119811991200120112021203120412051206...1953 新评论 Tretyakov Rostyslav 2020.07.03 09:07 #11981 你能告诉我如何从Program.mqh请求数据吗?有以下代码//--- Определение точек double stS=0,opS=0,stB=0,opB=0; if(ObjectsTotal(0,0,OBJ_TREND)>0) { stS=NormalizeDouble(ObjectGet("OrderS",OBJPROP_PRICE1)+5*Point,Digits-1); opS=NormalizeDouble(ObjectGet("OrderS",OBJPROP_PRICE2)-5*Point,Digits-1); stB=NormalizeDouble(ObjectGet("OrderB",OBJPROP_PRICE1)-5*Point,Digits-1); opB=NormalizeDouble(ObjectGet("OrderB",OBJPROP_PRICE2)+5*Point,Digits-1); } 如何向EA申请点数据? Mihail Matkovskij 2020.07.03 11:18 #11982 MakarFX:你能告诉我如何从Program.mqh请求数据吗?有这样的代码 如何向EA申请点数据? 从任何图表中获得一个对象,你所需要的只是一个对象名称和一个图表标识符。 #property script_show_inputs //--- input parameters input long chartID = 0; input string name = "OrderS"; input int subwin = 0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double stS = 0, opS = 0, stB = 0, opB = 0; if(ObjectsTotal(chartID, subwin, OBJ_TREND) > 0) { stS = NormalizeDouble(ObjectGetDouble(chartID, name, OBJPROP_PRICE1) * Point, Digits); opS = NormalizeDouble(ObjectGetDouble(chartID, name, OBJPROP_PRICE2) * Point, Digits); stB = NormalizeDouble(ObjectGetDouble(chartID, name, OBJPROP_PRICE1) * Point, Digits); opB = NormalizeDouble(ObjectGetDouble(chartID, name, OBJPROP_PRICE2) * Point, Digits); Print("stS: ", stS, "; opS: ", opS, "; stB: ", stB, "; opB: ", opB, "."); } } 因此,你可以从MQL4的任何程序中获得任何对象的数据。 Документация по MQL5: Операции с графиками / ChartID www.mql5.com Операции с графиками / ChartID - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Tretyakov Rostyslav 2020.07.03 11:31 #11983 Mihail Matkovskij:从任何图表中获得一个对象,你所需要的只是一个对象名称和一个图表标识符。因此,你可以从MQL4的任何程序中获得任何对象的数据。 你误解了我的意思... 上述代码在文件Program.mqh中 =>OnTimerEvent 点的数值会定期更新,专家顾问需要接收这些数值。 因此,问题是:如何从Program.mqh请求数据? void CProgram::OnTimerEvent(void) { CWndEvents::OnTimerEvent(); //--- Индикатор выполнения static int count1=0; //--- Пауза между обновлением элементов static int count2=0; if(count2<200) { count2+=TIMER_STEP_MSC; return; } //--- Обнулить счётчик count2=0; //--- Определение точек double stS=0,opS=0,stB=0,opB=0; if(ObjectsTotal(0,0,OBJ_TREND)>0) { stS=NormalizeDouble(ObjectGet("OrderS",OBJPROP_PRICE1)+5*Point,Digits-1); opS=NormalizeDouble(ObjectGet("OrderS",OBJPROP_PRICE2)-5*Point,Digits-1); stB=NormalizeDouble(ObjectGet("OrderB",OBJPROP_PRICE1)-5*Point,Digits-1); opB=NormalizeDouble(ObjectGet("OrderB",OBJPROP_PRICE2)+5*Point,Digits-1); } } Mihail Matkovskij 2020.07.03 11:37 #11984 MakarFX:你误解了我...上述代码在文件Program.mqh中 =>OnTimerEvent。点的数值会定期更新,专家顾问需要接收这些数值。因此,我的问题是:我怎样才能从Program.mqh请求数据? 没有人阻止你申报变量。 double stS = 0, opS = 0, stB = 0, opB = 0; 在CProgram类的公共区域中声明变量,并从Expert Advisor中访问它们,没有任何问题。 MakarFX: 你误解了我的意思... 当然,我没有马上理解,因为对问题的描述必须更加完整。理想情况下,最好能添加源代码。 Tretyakov Rostyslav 2020.07.03 11:43 #11985 Mihail Matkovskij:Program.mqh 文件是否与EA连接?如果是,没有人阻止你声明变量。在CProgram类的全局范围内,可以毫无问题地从Expert Advisor中访问它们。 Program.mqh 文件已连接... 现在我将尝试全局地声明变量 Mihail Matkovskij 2020.07.03 11:46 #11986 MakarFX:Program.mqh 文件已连接...现在试着用gobally来声明这些变量 编辑:https://www.mql5.com/ru/forum/160683/page1199#comment_17172497,因为你最初让我感到困惑...... Tretyakov Rostyslav 2020.07.03 11:53 #11987 Mihail Matkovskij:没有人阻止你申报变量。在CProgram类的公共区域,从Expert Advisor中访问它们没有问题。 不起作用 //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick(void) { if (program.stS<0)::Print("ERROR"); } Mihail Matkovskij 2020.07.03 12:02 #11988 MakarFX:不起作用你需要源代码或CProgram 类的代码。否则,它将无法工作...我的意思是让它像这样。class CProgram : ... { ... public: double stS, opS, stB, opB; ... 三人组是我不知道的,你的班级:) Tretyakov Rostyslav 2020.07.03 12:20 #11989 Mihail Matkovskij:需要源代码或CProgram 类的代码。否则,它将无法完成工作...我的意思是让它像这样。 三个点,这就是我对你的班级不了解的地方 :) 谢谢你!!!。它起作用了。 我在不知不觉中把 public: double stS=0, opS=0, stB=0, opB=0; 我去掉了零,它就成功了。 非常感谢你。 Mihail Matkovskij 2020.07.03 12:37 #11990 MakarFX:谢谢你!!!。这一切都成功了。我在不知不觉中把我去掉了零,它就成功了。非常感谢你。 还有一件事。最好是进行初始化。 CProgram::CProgram(): stS(0), opS(0), stB(0), opB(0) { ... } 否则,如果在OnTick()中进行读取,专家顾问可能会在定时器的tick之前收到 变量中的随机 数据。 1...119211931194119511961197119811991200120112021203120412051206...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我如何从Program.mqh请求数据吗?
有以下代码
如何向EA申请点数据?你能告诉我如何从Program.mqh请求数据吗?
有这样的代码
如何向EA申请点数据?从任何图表中获得一个对象,你所需要的只是一个对象名称和一个图表标识符。
因此,你可以从MQL4的任何程序中获得任何对象的数据。
从任何图表中获得一个对象,你所需要的只是一个对象名称和一个图表标识符。
因此,你可以从MQL4的任何程序中获得任何对象的数据。
你误解了我的意思...
上述代码在文件Program.mqh中 =>OnTimerEvent
点的数值会定期更新,专家顾问需要接收这些数值。
因此,问题是:如何从Program.mqh请求数据?
你误解了我...
上述代码在文件Program.mqh中 =>OnTimerEvent。
点的数值会定期更新,专家顾问需要接收这些数值。
因此,我的问题是:我怎样才能从Program.mqh请求数据?
没有人阻止你申报变量。
在CProgram类的公共区域中声明变量,并从Expert Advisor中访问它们,没有任何问题。
你误解了我的意思...
当然,我没有马上理解,因为对问题的描述必须更加完整。理想情况下,最好能添加源代码。
Program.mqh 文件是否与EA连接?
如果是,没有人阻止你声明变量。
在CProgram类的全局范围内,可以毫无问题地从Expert Advisor中访问它们。
Program.mqh 文件已连接...
现在我将尝试全局地声明变量
Program.mqh 文件已连接...
现在试着用gobally来声明这些变量
编辑:https://www.mql5.com/ru/forum/160683/page1199#comment_17172497,因为你最初让我感到困惑......
没有人阻止你申报变量。
在CProgram类的公共区域,从Expert Advisor中访问它们没有问题。
不起作用
不起作用
你需要源代码或CProgram 类的代码。否则,它将无法工作...
我的意思是让它像这样。
三人组是我不知道的,你的班级:)需要源代码或CProgram 类的代码。否则,它将无法完成工作...
我的意思是让它像这样。
三个点,这就是我对你的班级不了解的地方 :)谢谢你!!!。它起作用了。
我在不知不觉中把
我去掉了零,它就成功了。
非常感谢你。
谢谢你!!!。这一切都成功了。
我在不知不觉中把
我去掉了零,它就成功了。
非常感谢你。
还有一件事。最好是进行初始化。
否则,如果在OnTick()中进行读取,专家顾问可能会在定时器的tick之前收到 变量中的随机 数据。