granit77: Когда я говорил о тайне, то имел в виду великую тайну поиска. Она заключается в том. что надо ПРОЧИТАТЬ материалы, на которые он покажет. Ссылки уже боюсь давать, привожу готовый текст.
nickbilac 03.09.2007
...为了让专家在独立的时间表上工作,你需要添加。
在开始的时候。
int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); //incoming tick for EAs
所以...如果这不是一个秘密,那是怎么做到的?
在谷歌上搜索一下--在非标准TF上交易 site:mql4.com 和类似 "在equi(独立)图表上的顾问,等等 "的变体。
或者等到顺子受不了的时候,会亲自向你解释 :))
所以...如何做到这一点?
这不是什么秘密。有很多关于它的文章。用什么工具来创造这个故事并不重要。关键是要更新图表,以便专家顾问在上面工作。
这可以通过WinAPI来完成。这里已经描述过很多次了。我已经写了一个图书馆。我把它贴在这里。
它包含控制图表自主更新的功能。它不需要任何脚本或专家。但这并不适合所有人。还有一些功能可供大家使用,以从专家顾问、脚本或指标中更新图表。使用它们比较困难。因为你必须考虑出你的哪些方案会更新图表。例子在测试脚本中。
亲爱的程序员们。
您能告诉我们如何配置当前条形图上显示的移动平均水平 的数值吗?
我指的不是移动平均线本身的值,而是它的水平值(向上和向下的偏差,在МА菜单的 "水平 "标签中设置)。
这些值将跟随MA水平并自行变化。
该图是可能的变体之一。
提前感谢。
我已经明白了其中的奥秘)。我阅读了这些文章,翻阅了论坛,并通过搜索查看。我找不到关于如何在策略测试器中使用非标准图表的描述,但 我没有找到一个例子,我应该怎么做才能使专家顾问在这样的图表上实时工作。
WinAPI对我来说是一片黑暗的森林。是否有办法在mql4的构建器或其专家顾问里面做一些事情,或者把构建器和专家顾问结合起来?
我不知道将来如何将其作为专家顾问使用。
nickbilac 03.09.2007.
...为了使专家顾问在自主图表上工作,你需要添加。
在开始的时候。
int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); //incoming tick for EAs
在第一个PostMessageA之后
PostMessageA(hwnd,MT4InternalMsg,2,1); //对EA来说,即将到来的tick。
以及WinUser32.mqh中user32.dll的函数描述。
int RegisterWindowMessageA(string lpString)。
(这个解决方案是由Slava在英语论坛上提出的。)
RefreshRates();
ticket=OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),0,NormalizeDouble(Ask+15*Point,Digits),0, "test,8,0, red);
我非常希望得到开发者的意见。
granit77:
Когда я говорил о тайне, то имел в виду великую тайну поиска. Она заключается в том. что надо ПРОЧИТАТЬ материалы, на которые он покажет. Ссылки уже боюсь давать, привожу готовый текст.
nickbilac 03.09.2007
...为了让专家在独立的时间表上工作,你需要添加。
在开始的时候。
int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); //incoming tick for EAs
在第一个PostMessageA之后
PostMessageA(hwnd,MT4InternalMsg,2,1); //对EA来说,即将到来的tick。
并在WinUser32.mqh中的函数描述user32.dll中添加。
int RegisterWindowMessageA(string lpString)。
RefreshRates();在票据之前,是否有助于减少重新报价?
这取决于情况。如果你连续有两个订单,在设置第二个订单之前调用RefreshRates()是有意义的。你看,你向服务器发送了一个订单,打开了一个订单。在服务器作出反应时,会有一定的时间。在这段时间内,报价可能会发生变化,所以一旦服务器做出反应,我们需要调用 RefreshRates(),更新终端的数据。现在我们可以下达命令,开启下一个订单。如果我们只是检查信号并立即下单,就没有理由调用RefreshRates()。原因是启动函数是在一个新的tick的到来时被调用的,我们可能忽略了EA检查信号之前的时间。
这张票跟它有什么关系?该票据是服务器上的订单号...
嗯,我的意思是ticket=OrderSend(......)
他们告诉你什么了?