伟大而可怕的MT4永远(或如何制定过渡策略) - 页 18

 
PapaYozh:
没有。
结果不能保证。

如果有足够的便士,就可以保证

 
fxsaber:

我需要在MT5上写一个脚本,在一个空账户上开100个头寸。


在MT4上是这样解决的。


谁有关于MT5的解决方案?

部分业绩是可能的吗?
 
SanAlex:

如果有足够的便士,就可以保证。

你没有核算部分业绩,当你核算时,你将不得不核算重复计算。

 
Alexey Viktorov:
部分执行是否可能?

让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了头寸表中的十字,关闭了一个/几个头寸。但是,在脚本执行结束时,仍然应该有正好100个位置。


MT4版本 简单得令人难以置信。这就是为什么我在这个主题中写道。

 
fxsaber:

谁有关于MT5的解决方案?

没有同步器,就没有办法。

在这个过程中可能会有基本的重新报价 或失去连接,100个订单不一定会产生100个交易。

 
Andrey Khatimlianskii:

没有同步器,就没有办法。

在这个过程中可能会有基本的重新报价 或失去沟通,100个订单不一定会产生100个交易。

同步器将只确保PositionsTotal和OrdersTotal的值不会说谎。正是因为他们在时间上撒谎,我们才会得到双重计数。

原则上,同步器是一个单线。而如果你不去研究它的机制,实施起来也很简单。


然而,即使有了同步器,一切也是极其复杂的。你可以使用这样一个条件。

while (OrdersTotal() + PositionsTotal < 100)

然而,如果有人做了以下的事情,这个条件就会变得很无奈。

fxsaber:

让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了位置表中的一个十字,关闭了一个或多个 位置。然而,在脚本执行结束时,仍然应该有正好100个位置。


也就是说,一个基本的任务,在MT4中只需两行就能解决,而在MT5中却不容易解决。这就是为什么MT4风格+同步器在MT5中的规则。正因为如此,我不太理解在MT5中如何编写其他的EA,而市场上有很多这样的EA。

 
fxsaber:

同步器将只确保PositionsTotal和OrdersTotal的值不发生变化。正是因为它们是暂时性的错误,才导致了重复记账。

原则上,同步器是一个单线。而如果你不去研究它的机制,实施起来也很简单。


然而,即使有了同步器,一切也是极其复杂的。你可以使用这样一个条件。

然而,如果有人做了以下的事情,这个条件就会变得很无奈。


也就是说,一个基本的问题,在MT4中两行就能解决,在MT5中却不容易解决。这就是为什么MT4风格+同步器在MT5中的规则。正因为如此,我不明白在MT5中如何编写其他的EA,而市场上有很多这样的EA。

在MT5中,一切都以与MT4相同的方式解决,而且往往更容易,因为语言和API更丰富。更确切地说,这些语言几乎是相同的,在这里Metacquotes在兼容性方面做了很好的工作,但API是相当不同的。Renat(Metakvotes的主管)曾在论坛上说,MT4已经死了,不会再开发。但显然,商业利益更重要,尽管如此,更新还是要出来。但大部分是对MKL5的错误和新功能的修复。所以开发商做得好,我就摘下帽子,我不摘。)

而总的来说,我不理解一些同志的呻吟,因为很难切换到MKL5。不存在什么困难,好在还有一个API,所以有详细的资料,我更愿意向他们学习。谁还没有足够的知识,欢迎来帮忙,这很简短,但很清楚。在任何情况下,第五代都比第四代快至少10倍,而且在优化模式 下,一般会使用你允许的所有CPU核心,在现代显卡的情况下,第四代比第四代快数百倍。所以没有必要写悲伤的歌曲。))

 
Andrei Trukhanovich:

你还没有考虑到部分性能,当你考虑时,你也必须考虑到超限的问题。

这也不对吗?- 虽然我不明白有人想从这个功能中得到什么--但它百分之百地完成了它的工作!!。

//+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint   maxLimits = 3;    // Кол-во Позиции Открыть в одну сторону
sinput double InpLots   = 0.01; // Lots
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   const string symbol=NULL;
   double price=0.0;
   const double sl=0.0;
   const double tp=0.0;
   const string comment="";
//--- check symbol
   string symbol_name=(symbol==NULL) ? Symbol() : symbol;
//--- check price
   if(price==0.0)
      price=SymbolInfoDouble(symbol_name,SYMBOL_ASK);
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
         printf("Position by %s to be opened",Symbol());
      else
        {
         printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
         printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
      //if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
         printf("Position by %s to be opened",Symbol());
      else
        {
         printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
         printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
        }
     }
 
fxsaber:

让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了 头寸表中的十字,关闭了一个/几个头寸。但是,在脚本执行结束时,仍然应该有正好100个位置。


MT4版本简单得令人难以置信。这就是为什么我在这个主题中写道。

那么,对于MQL5,你设置了这样的条件,有人可以玩耍,而对于MQL4,你没有这样做?如果我从另一台电脑连接到账户,下了几个点......MQL4会怎么开?

你想在没有任何检查的情况下乱来吗?你是在提倡编程中的放任自流,还是为了某些人的私利而试图诽谤MQL5?

在mql4中写下同样的内容,并进行检查,万无一失。

 
Alexey Viktorov:

所以,对于MQL5,你设置了这样的条件,有人可以乱来,但对于MQL4就不行?如果我从另一台电脑连接到我的账户,下了几个点......MQL4会开什么?

MT4和MT5的条款和条件是相同的。

你想不做任何检查就乱来吗?你是在倡导编程中的放任自流,还是为了某人的私利而贬低MQL5?

如果你不知道怎么做,你将不得不用mql4展示同样的问题,用ticks和foolproof。

我只在MT5上做所有事情。我只是说,MT5并不比MT4复杂。它比这要复杂得多!只有本周有一个仓位倒置的解决方案,而且不是100%有效。

这么多年来,大家都知道回溯测试,来...睡眠。因为它非常复杂。论坛上提出的许多交易API的特殊性,开发者并不清楚,或者没有给出他们的意见。


没有人批评MT5。我已经通过实例说明了解决初级问题的一些问题。