初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1250

 
Youri Lazurenko:

谢谢你。在mql5中没有建造这样的迷宫。你不是直奔目标,而是要走一些弯路,穿过很多死胡同和障碍。 为了一种语言而语言。

在MQL4中,你也可以为一个位置设置一个magik。

在这里,你已经决定使用SB的一个贸易对象。这意味着在其创建和初始化过程中,你需要设置其参数。然后你就把它用于交易功能。可能有很多这样的对象,你将为每个对象设置不同的参数。然后 - 适用于必要的对象,以管理那些为每个特定对象设置的、在不同时刻根据TS需要的符号和魔法标志的交易订单

就这么简单。

 
你好,Artyom Trishkin!2020.09.14_01:14 gmt+3.我采用了标准的移动平均线EA,并改变了开启交易和关闭交易的两个条件。我在策略测试器中 看到,专家顾问只满足了开仓和平仓的第二个条件。 第一个条件被忽略了。专家顾问是很简单的,但复杂的EA是如何写出复杂的EA,使一切都顺利进行的?如何使开仓和平仓交易的至少两个条件发挥作用?而且可能会有更多的开仓交易条件。你知道这些问题的答案吗?请告知。我附上一个专家顾问的文件。01:26 GMT+3。
附加的文件:
 
Artyom Trishkin:

在MQL4中,你也可以为一个位置设置一个magik。

在这里,你已经决定使用SB的一个贸易对象。这意味着,当你创建和初始化它时,你需要设置它的参数。然后你就把它用于交易功能。可能有许多这样的对象,你将为每个对象设置不同的参数。然后 - 适用于必要的对象,以管理那些为每个特定对象设置的、在不同时刻根据TS需要的符号和魔法标志的交易订单

就这么简单。

你好。谢谢你的答复。我将提出我的观点。在MQL4中打开一个订单时,我们指定它的参数,包括一个magik。 在#include <Trade\OrderInfo.mqh>中,除了magik之外的所有东西都被指定。例如 - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC, const datetime expiration=0, const string comment="")。在我看来,这不是一种修复,我们应该通过引入另一个魔术师参数来修复它。或者,#include <Trade/ HistoryOrderInfo.mqh>包含除了订单获取的利润(盈利/亏损)之外的所有内容这是关于订单的重要信息,而它却不见了。我们需要找到最后一个关闭订单的利润。这些信息将显示在Comment()中。我们将看到。当没有未结订单(头寸)时,注释显示最后一个订单的利润。 一旦订单(头寸)被打开,我们在注释中得到0,直到订单被关闭。也就是说,订单仍在市场上,但同时在历史上,它同时停留在两个假体中。但这是无稽之谈。这就是为什么我说,语言只是为了语言而语言。在我看来,有很多不完整的细节。

 
Youri Lazurenko:


你在混淆概念(特别是 "顺序")。在市场上可以有一个REMOTE ORDER或POSITION。你可以在帮助中阅读更多内容:一般原则

CTrade类是自给自足的,它没有任何缺陷,只是你不愿意看到实现代码。当发送交易指令时(用于打开或修改POSITION),交易类实例会发送一个神奇的数字--你只需要在创建对象时立即初始化它。


这是一个习惯问题。

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

你好。谢谢你的答复。我将发表我的意见。在MQL4中打开一个订单时,我们指定它的参数,包括一个magik。 在#include <Trade\OrderInfo.mqh>中,除了magik之外的所有东西都被指定。例如 - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC, const datetime expiration=0, const string comment="")。在我看来,这不是一种修复,我们应该通过引入另一个魔术师参数来修复它。或者,#include <Trade/ HistoryOrderInfo.mqh>包含除了订单获取的利润(盈利/亏损)之外的所有内容这是关于订单的重要信息,而它却不见了。我们需要找到最后一个关闭订单的利润。这些信息将显示在Comment()中。我们将看到。当没有未结订单(头寸)时,注释显示最后一个订单的利润。 一旦订单(头寸)被打开,我们在注释中得到0,直到订单被关闭。也就是说,订单仍在市场上,但同时在历史上,它同时停留在两个假体中。但这是无稽之谈。这就是为什么我说,语言只是为了语言而语言。在我看来,有很多未完成的细节

尤里,这不是大量的未完成的细节,而是大量的误解。

如果在OnInit()中表示一次 就够了,为什么在每次开仓时都要写一个魔术师。

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

这就是全部!!!。然后以同样的方式检查一个订单、交易或位置的魔力,以确定 "朋友或敌人"。问题出在你的思想上。

一个订单可能没有利润!一个头寸在当前时间有利润。而一个头寸有一个平仓 交易,或部分头寸,但那是在交易历史中。订单只是一个在市场上进行交易的命令。

让我尝试用kolkhoznyy来解释。你来到市场,决定买一个泡菜。

Warrant: 给我一公斤...

交易:你给我钱,你拿鱼...。

位置:你的包里有杏子...

从卖家的角度来看。

位置:你把炖好的鱼放在柜台上...

订单:你收到的订单是称一公斤的鱼......

交易:交出杏子,把钱放在袋子里......

 
Youri Lazurenko:

你好。谢谢你的答复。我将发表我的意见。在MQL4中打开一个订单时,我们指定它的参数,包括magik。 在#include <Trade\OrderInfo.mqh>中,除了magik外,其他都被指定。例如 - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC, const datetime expiration=0, const string comment="")。在我看来,这不是一种修复,我们应该通过引入另一个魔术师参数来修复它。或者,#include <Trade/ HistoryOrderInfo.mqh>包含除了订单获取的利润(盈利/亏损)之外的所有内容这是关于订单的重要信息,而它却不见了。我们需要找到最后一个关闭订单的利润。这些信息将显示在Comment()中。我们将看到。当没有未结订单(头寸)时,注释显示最后一个订单的利润。 一旦订单(头寸)被打开,我们在注释中得到0,直到订单被关闭。也就是说,订单仍在市场上,但同时在历史上,它同时停留在两个假体中。但这是无稽之谈。这就是为什么我说,语言只是为了语言而语言。在我看来,有很多未完成的细节。

你以程序的方式思考问题,但试图使用OOP-对象。他们被以不同的方式对待。比如说。

一个对象被创建。一个魔术师是为它准备的。
第二个对象被创建。第二个魔术师被设定。
第三个对象被创建。第三个魔术师被赋予了它。

现在你在一个EA中拥有三个策略的交易对象。
你应该使用第一个交易对象来开仓或为第一个TS下挂单。
为了开立头寸或为第二个TS设置挂单,你应参考第二个交易对象。
要为第三个TS开仓或下挂单,你必须参考第三个交易对象。

订单没有利润参数。原因很简单--订单就是订单(挂单是指当价格达到一定水平时,向经纪人发出的执行某种行动的订单,即在达到指定标准的某个时间后执行交易的订单)。一个交易(订单)可以导致一个交易(它已经有DEAL_PROFIT利润参数),这将导致创建一个头寸或其变化或关闭(该头寸也有利润参数,但只有一个当前--浮动的POSITION_PROFIT)。

然后是市场订单(market order),当你发送交易订单时,它总是出现在交易之前--这是你的交易订单。而且在现有的订单列表中可以看到它。也就是说,任何开仓都会产生一个链条:订单-->交易-->仓位。对未结头寸的任何行动都会产生一个链条:头寸-->订单-->交易-->无头寸,或更小的头寸,或更大的头寸(净值),或头寸反转(净值)。

研究参考资料

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
你好!在MT5的 "移动平均线"指标的代码中,是否可以做出非标准的周期?例如,不是为1支蜡烛,而是为0.5支?我明白,平台仍有价格数据,指标将对它们进行分割和取整...
 

谢谢大家。特别是阿列克谢-维克多罗夫--清晰而具体。我已经重新处理并检查了它。 现在我们有了关于最后一单利润的信息,EA也使用了它。这太曲折了,存在着不必要的和多余的混乱。有当前的订单(挂起,从事/市场/)和已经进入历史的订单,但都是相同的订单。我没有蠼螋,我有蠼螋--转让过程是短暂的,绝对不相干。 事实证明,在卖方的订单被称量的同时,买方的订单算是已经消失了。即在这期间出现了混乱和迷惑。越简单越好。

但还是要感谢大家,祝大家好运。

 
Youri Lazurenko:

谢谢大家。特别是阿列克谢-维克多罗夫--清晰而具体。我已经重新处理并检查了它。 现在我们有了关于最后一笔订单利润的信息,EA也使用了它。这太曲折了,存在着不必要的和多余的混乱。有当前的订单(挂起,从事/市场/)和已经进入历史的订单,但都是相同的订单。我没有蠼螋,我有蠼螋--转让过程是短暂的,绝对不相干。 事实证明,在卖方的订单被称量的同时,买方的订单算是已经消失了。即在这期间出现了混乱和迷惑。越简单越好。

但还是要感谢你们,我祝你们好运。

这不是终端开发者的怪癖。将整个产业链装入4中的一个 "订单 "概念是一个怪癖。现在一切都与实际发生的情况相一致。

而将存根从货架上转移到袋子里的时间就是交易订单的执行时间。因此,拥有绝对的当前事件的所有数据,你可以轻松控制订单的执行速度。而且不仅如此。你现在有广泛的可能性在任何一个服务器上实施任何统计,以及它们能多好地执行你的订单。

 
Artyom Trishkin:

这不是终端开发者的怪癖。把整个链条装进四合院的一个 "订单 "概念中,是一个怪癖。它现在与实际发生的情况相一致。

而将存根从货架上转移到袋子里的时间就是交易订单的执行时间。因此,拥有绝对的当前事件的所有数据,你可以轻松控制订单的执行速度。而且不仅如此。现在,你有很多机会在任何一个服务器上实施任何统计,以及它们能多好地满足你的要求。

没有不敬的意思,纯粹是为了配合讨论。我已经交易我的EA很长时间了(我不是在卖它们),用不同的经纪商,我对事件的绝对数据 不感兴趣。我感兴趣的是最终结果--根据EA的要求执行的订单质量。如果订单只开一次(比喻),我根本不会与这个经纪人合作。如果在一家经纪公司,开盘时间比另一家快半秒,这对我来说并不重要(以及报价的差异)。

在mql4中写一个EA 有多容易,在mql5中又有多麻烦? 为什么会有关于mql5的问题?我听说过关于MT5测试器的良好报告,我不得不熟悉mql5来尝试它。我已经试过了,但不满意。下载报价很方便,速度更快,但MT4的信息量更大。例如,我不仅想知道订单在什么价格被关闭,还想知道他们的利润(损失)。前向优化非常耗费处理器,以至于计算机关闭。我曾尝试过一次(当然这不是证明)在同一个经纪商处运行同一个专家顾问。结果是不同的;MT5更好--更多的利润,明显减少缩水,这让人感到压力。也许这是我太老了,但现在我的批评多于积极性。 我还不打算在mt5上交易,但对编写一个好的专家顾问的兴趣仍然存在。只是为了兴趣。

我祝你好运。