文章 "针对初学者以 MQL5 编写“EA 交易”的分步指南" - 页 30

 
timmytrade #:

测试仪 - "不支持填充模式"

在 3 个不同的经纪商上都试过了。问题出在哪里?

尝试将SYMBOL_FILLING_FOK 替换为SYMBOL _ FILLING_IOC

致 Vladimir。

 
你好,Samual,你的文章很棒。使用指标移动平均线 和 ADX 的技术也很棒,因为我在 2010.01.01 -2010.07.01 和 2017.01.01-2017.07.01 用欧元/美国 H2 货币对进行了测试。它很棒。它比使用 Hummer Hanging Man + Stochastics 指标更好。而且比 ThreeEMA 指标更好。谢谢。现在我正在学习您的代码。
 
mirac baver ozturk #:

大家好(尤其是亲爱的作者)

我跟着这篇文章编码。我非常喜欢这篇文章,也从中学到了很多东西。

感谢您撰写了内容如此丰富的文章。

不过,我遇到了一个问题。我的 EA 没有下任何订单。我下载了作者的代码,但它也没有下任何订单。

由于这篇文章已经发表了 13 年,我认为代码现在已经过时了。谁能帮帮我?

我的代码在下面的文件中。谢谢大家。

这段代码已经可以工作了。
 

访问未翻译英文网页,里面下载的是正确的。

从这个页面里面下载:  Step-By-Step Guide to writing an Expert Advisor in MQL5 for Beginners - MQL5 Articles

https://www.mql5.com/en/articles/100

 

亲爱的各位;

从这篇文章的底部,可以下载到 mlq5 的完整代码。

我下载后检查了功能,发现程序的算法不正确。

设置为 EURUSD,M1,100USD 从 2025/01/01 到 2025/01/31

第一个订单是卖出订单,然后有许多买入订单。

概念是应该只有一个订单,但从第 165 行开始出现了这种情况。

检查现在是否已经下单的标志由 2 个标志变量(Buy_opned,Sell_opened)组成。

如果现在已经有卖单,那么在第 216 行(Ordersend)将生成新的买单,即使现在已经有卖单。

第 172 行语句中的 Buy_open 标志不能再次设为开,为什么?因为第一个订单是卖,第二个订单是买。

是的,下一根蜡烛线 216 行(Ordersend)上的买入订单将发生并继续,许多买入订单将发生,直到没有钱为止。

查看图表。



查看订单列表。


谢谢。

Niwath Jeamphue.

 
Niwath Jeamphue #:

亲爱的各位

从这篇文章的底部,您可以下载到 mlq5 的完整代码。

我下载后检查了功能,发现程序的算法不正确。

设置为欧元兑美元、M1、100 美元从 2025/01/01 开始至 2025/01/31

第一个订单是卖出订单,然后有许多买入订单。

概念是应该只有一个订单,但从第 165 行开始出现了这种情况。

现在,检查是否有订单的标志由 2 个标志变量(Buy_opned,Sell_opened)组成。

如果现在已经有卖单,那么在第 216 行(Ordersend)中将生成新的买单,即使现在已经有卖单。

第 172 行语句中的 Buy_open 标志不能再次设为开,为什么?因为第一个订单是卖出,第二个订单是买入。

是的,下一根蜡烛线 216 行 (Ordersend) 上的买单将继续发生,许多买单将发生,直到没有钱为止。

请看这里的图表。



查看订单列表。


谢谢。

Niwath Jeamphue.

除非使用净额结算账户,否则不应使用 PositionSelect(_Symbol)。

在套期保值账户中,您需要使用 PositionGetTicket() 或 PositionSelectByTicket() 正确选择仓位。查看文档。

 
Alain Verleyen #:

除非使用净额结算账户,否则不应使用 PositionSelect(_Symbol)。

在套期保值账户中,您需要使用 PositionGetTicket() 或 PositionSelectByTicket() 正确选择仓位。查看文档。

感谢您的评论。但我只想告诉大家,源代码来自本文的最终完整版。

https://www.mql5.com/zh/articles/download/100/my_first_ea.mq5

请您自己尝试一下,您就会明白我的意思了。

谢谢。

 
Niwath Jeamphue #:

感谢您的评论。但我只想告诉大家,源代码来自本文的最终完整版。

https://www.mql5.com/zh/articles/download/100/my_first_ea.mq5

请你自己试试看,你就会明白我的意思了。

谢谢。

这篇文章来自 2010 年,当时 MT5 上的所有账户都是净额结算账户,包括外汇账户。

对冲账户于 2016 年推出 :https://www.mql5.com/zh/articles/2299

MetaTrader 5 features hedging position accounting system
MetaTrader 5 features hedging position accounting system
  • 2016.03.21
  • www.mql5.com
In order to expand possibilities of retail Forex traders, we have added the second accounting system — hedging. Now, it is possible to have multiple positions per symbol, including oppositely directed ones. This paves the way to implementing trading strategies based on the so-called "locking" — if the price moves against a trader, they can open a position in the opposite direction.
 

Niwath Jeamphue #:

请您亲自尝试一下,您就会明白我的观点。

谢谢。

您好。我理解您的观点。在所附文件中,我修改了智能交易系统的源代码,这样无论您使用什么账户--净额结算账户或对冲账户,都只能开立一个仓位。

弗拉基米尔

附加的文件:
 
MrBrooklin #:

您好。我理解您的观点。在所附文件中,我修改了智能交易系统的源代码,这样无论您使用什么账户--净额结算账户或对冲账户,都只能开立一个仓位。

再见,弗拉基米尔。

对冲账户,MrBrooklin。谢谢。但我更喜欢只接受订单,而不是那么多订单。

我已经改变了算法。

清除 买入和卖出开仓标志

如果 (PositionSelect(_Symbol)==true)

如果 发现是买入头寸,则设置 Buy_opened 标志

否则 如果发现是卖出头寸,则设置卖出开仓标志

Zone1 :尝试根据条件打开买入订单,并设置 Buy_opened 标志

Zone2 :尝试根据条件打开 卖单 ,并 !flag Sell_opened

到新算法,现在运行正常。

如果 (PositionsTotal() > 0) 返回

清除 买入和卖出开仓 标志

如果 发现是买入头寸,则设置 Buy_opened 标志

否则, 如果发现是卖出头寸,则设置 Sell_opened

Zone1 :尝试根据条件打开买入订单,并设置 Buy_opened 标志

Zone2 :尝试根据条件打开 卖单 ,并 !flag Sell_opened