新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1259

 
Yevhenii Levchenko:
我的理解是否正确,在mt5中,应该关注POSITION_TIME_UPDATE 而不是收盘时间?
不,你需要一个收盘交易。
 
Valerius:

止盈以点计算,追踪止盈以入金货币计算。追踪获利(Trailing TakeProfit)是以一个或多个订单的存款货币计算的利润,并将订单的止损放在设置中指定的金额,即在一个计算的距离。

例如,在设置中指定100美元的追踪获利。一旦价格达到100美元的利润并进一步发展,程序就会计算出100美元的距离,如果允许的话,将所有订单的止损放在计算出的现货中。一旦价格回滚至止损点,所有订单将被关闭。原则上,这与追踪止损是一样的,只是它是以贬值货币计算的,并追踪利润。我可能在某处犯了一个错误,但这是原则问题。我希望我已经解释了。

拖后腿--运动。跟踪止损 - 我们根据算法来移动止损。跟踪获利 - 我们根据某种算法在接近该水平时移动该水平。

 
Artyom Trishkin:
不,你需要一个收盘交易。

谢谢你!

这里是马丁的一个函数,检查最后一笔交易的利润。如果无利可图,它将返回交易量。这样做有多正确呢。

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

如果我们想知道整个仓位的利润。

-> 搜索所有的交易并获得最后一笔交易的DEAL_POSITION_ID
-> 搜索并再次使用DEAL_POSITION_ID获得整个仓位的利润?

或者有一个更短的方法?

 
Yevhenii Levchenko:

谢谢你!

这里是马丁的一个函数,检查最后一笔交易的利润。如果无利可图,它将返回交易量。这样做有多正确呢。

如果我们想知道整个仓位的利润。

-> 搜索所有的交易并获得最后一笔交易的DEAL_POSITION_ID
-> 搜索并再次使用DEAL_POSITION_ID获得整个仓位的利润?

或者有一个更短的方法?

从另一个角度来看这个问题。如果我们能在平仓时得到头寸ID,并在知道一切的情况下选择该头寸的订单和交易,那么我们为什么要翻阅历史记录呢?

 
Alexey Viktorov:

从另一个角度来看这个问题。如果你能在平仓时得到头寸ID,并选择已经知道一切的该头寸的订单和交易,为什么还要搜索历史记录呢?

问题是,你必须在开仓前检查这一点 :(

但如果你没有短的,你总是可以走长的路 :)

 
Yevhenii Levchenko:

问题是,必须在开仓交易前检查 :(

但如果没有短的,你总是可以走长的路 :)

只有在OnInit中重新启动专家顾问时,才有必要这样去寻找。而在EA的工作过程中,我们在平仓 的时候会得到必要的数据。但这取决于每个人。有些人喜欢在处理器上加载不必要的行动.........。

 
Alexey Viktorov:

只有在OnInit中重新启动专家顾问时,才应以这种方式寻找。而在专家顾问的工作过程中,在关闭头寸 时获得必要的数据。但所有这些都是大家的事。有些人喜欢在处理器上加载不必要的行动.........。

我有点疑惑,除了在每一个tick上请求平仓的状态,如何追踪平仓的时刻?这当然不是所有的职位都要审问,但在每个勾选请求上都是一样的。

 
Valerius:

止盈以点计算,追踪止盈以入金货币计算。追踪获利(Trailing TakeProfit)是以一个或多个订单的存款货币计算的利润,并将订单的止损放在设置中指定的金额,即在一个计算的距离。

例如,在设置中指定100美元的追踪获利。一旦价格达到100美元的利润并进一步发展,程序就会计算出100美元的距离,如果允许的话,将所有订单的止损放在计算出的现货中。一旦价格回滚至止损点,所有订单将被关闭。原则上,这与追踪止损是一样的,只是它是以贬值货币计算的,并追踪利润。我可能在某处犯了一个错误,但这是原则问题。我希望我已经解释了。

Valeriy Yastremskiy:

拖后腿--运动。跟踪止损 - 我们根据算法来移动止损。跟踪获利 - 我们根据某种算法在接近该水平时移动该水平。

不要踢我,但我不明白。在MetaEditor生成的包含尾随模块的专家顾问的设置中,尾随水平是以点为单位的。例如,我设定"获利追踪水平(单位:点)"=100这个拖曳式止动器将如何工作?如果我说错了,请纠正我。当当前价格达到指定的获利水平前100点的距离时,追踪订单被激活。当价格达到并越过TP时,头寸不会被关闭。拖网只是在100点的距离内开始跟踪价格。如果价格掉头并与头寸相反,头寸将被TP或SL平仓,而SL是由拖网设置的,如果它已经超过TP。对吗?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
不要踢我太多,但我不明白。在MetaEditor中生成的包含尾随模块的专家顾问设置中,尾随水平被准确地指定为点。例如,我设定"获利追踪水平(单位:点)"=100这个拖曳式止动器将如何工作?如果我说错了,请纠正我。当当前价格达到指定的获利水平前100点的距离时,追踪订单被激活。当价格达到并越过TP时,头寸不会被关闭。拖网只是在100点的距离内开始跟踪价格。如果价格反转并与头寸相反,头寸将被TP平仓,如果拖网的移动距离超过TP,则被SL平仓。对吗?

没有代码,就很难不回答。

 
Alexey Viktorov:

只有在OnInit中重新启动专家顾问时,才应以这种方式寻找。而在专家顾问的工作过程中,在关闭头寸 时获得必要的数据。但所有这些都是大家的事。有些人喜欢在处理器上加载不必要的行动.........。

它不是在每一次打勾时都被检查。如果有一个信号,它就开始检查并打开一个交易。这就是全部 :)