来自一个 "傻瓜 "的问题 - 页 138

 
joo:
如果不是一个脚本,那么所有的逻辑都应该在/从OnChartEvent()中执行/调用?

你可以在任何地方做,也有一个定时器。

如果你需要循环逻辑,你可以把它放在一个定时器里。

如果逻辑是事件驱动的,那么在chartevent。

 
sergeev:

你可以在任何地方做,也有一个定时器。

如果你想要循环逻辑,你可以把它放在一个定时器里。

如果逻辑是事件驱动的,那么在chartevent。

这就是逻辑。

1.程序的开始(在chartevent上抛出)。

2.从对话框(文件列表)中获取文件名。

3.我们 按文件名打开文件,接收和处理数据。

4.退出了该程序。

这就是它的全部内容。这种情况如何组织,请至少示意一下。

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
joo:

这样的逻辑。

1.启动程序(在图表上抛出)。

OnInit. 扫描磁盘,找到文件,创建带有列表的窗口(控制)。

2.从对话框(文件列表)中得到文件名。

OnChartEvent.处理鼠标点击;我们知道列表中的哪一行被点击了,分别知道文件。

3.按文件名打开了文件,得到了数据,进行了处理。

OnChartEvent.过程中鼠标点击 "Go "按钮。从列表中接收一个文件的名称。更进一步的是纯粹是你对这个文件的数据处理。

4.退出程序。

ExpertRemove()

 
sergeev:
...

好了,现在事情弄清楚了,谢谢。

但是,只是为了试试,我做了一个专家顾问。即使图表上什么都没有发生,它也会打印出来--它不应该这样。

#include <Controls\ControlsDialog.mqh>
CControlsDialog ExtDialog;

int OnInit()
{
//--- create application dialog
  if(!ExtDialog.Create(0,"Controls",0,20,20,360,324))
    return(-1);
//--- run application
  ExtDialog.Run();
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy dialog
  ExtDialog.Destroy();
}
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
{
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  Print("dsfsdfsdfsdf");
}
//+------------------------------------------------------------------+
 
Yedelkin:

好吧,任何类方法 都只是普通的代码。试着在这里解析这个代码。

谢谢你!得到了它的工作。
 
joo:

好了,现在事情弄清楚了,谢谢。

但是,只是为了试试,我做了一个专家。即使图表上什么都没有发生,它也会打印出来--它不应该这样。

不,它打印是因为你在图表上移动鼠标。

 
sergeev:

不,有一个打印正在进行,因为你在图表上移动鼠标。

的确,我犯了罪--我把鼠标移到了图表上,所以才会打印出来。
 

下午好。

出于好奇心的问题。下面是代码。

class cl2;

class cl1
{
public:
        int q;
        void fn2(cl2 &t){t.i = 87;}
};


class cl2
{
public:
        int i;
        void fn(cl1 &w){w.q = 9;}
};

该想法如下。

  • 有两个等级(1号和2号)。
  • 1号班在2号班打探情况
  • 2号班在1号班打探情况。

它在MQL中编译没有错误,但在VS中却不能编译(它说我不能使用未定义的类)。为什么?

 
220Volt:

它在MQL中编译没有错误,但在VS中却不能编译(说你不能使用未定义的类)。为什么?

Patamushta mql5更好!

;)

 
MetaDriver:

因为mql5更好!

;)

是的,也许我应该给一个加号 ))