[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 323

 
Diubakin:
所以...如果这不是一个秘密,那是怎么做到的?
有一个办法,但不要告诉任何人。这是个可怕的秘密。
在谷歌上搜索一下--在非标准TF上交易 site:mql4.com 和类似 "在equi(独立)图表上的顾问,等等 "的变体。
或者等到顺子受不了的时候,会亲自向你解释 :))
 
Diubakin:
所以...如何做到这一点?

这不是什么秘密。有很多关于它的文章。用什么工具来创造这个故事并不重要。关键是要更新图表,以便专家顾问在上面工作。

这可以通过WinAPI来完成。这里已经描述过很多次了。我已经写了一个图书馆。我把它贴在这里

它包含控制图表自主更新的功能。它不需要任何脚本或专家。但这并不适合所有人。还有一些功能可供大家使用,以从专家顾问、脚本或指标中更新图表。使用它们比较困难。因为你必须考虑出你的哪些方案会更新图表。例子在测试脚本中。

 

亲爱的程序员们。

您能告诉我们如何配置当前条形图上显示的移动平均水平 的数值吗?

我指的不是移动平均线本身的值,而是它的水平值(向上和向下的偏差,在МА菜单的 "水平 "标签中设置)。

这些值将跟随MA水平并自行变化。

该图是可能的变体之一。

提前感谢。



 
Diubakin:


我已经明白了其中的奥秘)。我阅读了这些文章,翻阅了论坛,并通过搜索查看。我找不到关于如何在策略测试器中使用非标准图表的描述, 我没有找到一个例子,我应该怎么做才能使专家顾问在这样的图表上实时工作

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在英语论坛上提出的。)

 
从与经纪人的通信中可以看出--"使用图表是为了对市场有一个概念。他不能责怪.....,因为这些更新是所有使用MT4平台的经纪商默认设置的。我们所说的MT4功能是什么?在什么情况下,目前显示在图表和市场概览中的价格不能同时是市场和可执行的?请帮助我理解这句话的实质。我在序言中提到了OrderSend函数 的链接,并引用了MTS用于开仓交易的代码:

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();;在打钩之前,是否有助于减少重新报价,哪怕是一点点?
 
Shniperson:
RefreshRates();在票据之前,是否有助于减少重新报价?


这取决于情况。如果你连续有两个订单,在设置第二个订单之前调用RefreshRates()是有意义的。你看,你向服务器发送了一个订单,打开了一个订单。在服务器作出反应时,会有一定的时间。在这段时间内,报价可能会发生变化,所以一旦服务器做出反应,我们需要调用 RefreshRates(),更新终端的数据。现在我们可以下达命令,开启下一个订单。如果我们只是检查信号并立即下单,就没有理由调用RefreshRates()。原因是启动函数是在一个新的tick的到来时被调用的,我们可能忽略了EA检查信号之前的时间。

这张票跟它有什么关系?该票据是服务器上的订单号...

 
我的意思是ticket=OrderSend(......)
 
Shniperson:
嗯,我的意思是ticket=OrderSend(......)

他们告诉你什么了?