//+------------------------------------------------------------------+//| 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//---sinputuint maxLimits = 3; // Кол-во Позиции Открыть в одну сторонуsinputdouble InpLots = 0.01; // Lots//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---conststring symbol=NULL;
double price=0.0;
constdouble sl=0.0;
constdouble tp=0.0;
conststring comment="";
//--- check symbolstring symbol_name=(symbol==NULL) ? Symbol() : symbol;
//--- check priceif(price==0.0)
price=SymbolInfoDouble(symbol_name,SYMBOL_ASK);
//---for(uint i=0; i<maxLimits; i++)
{
//--- open positionif(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 positionif(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);
}
}
没有。
如果有足够的便士,就可以保证
我需要在MT5上写一个脚本,在一个空账户上开100个头寸。
在MT4上是这样解决的。
谁有关于MT5的解决方案?
如果有足够的便士,就可以保证。
你没有核算部分业绩,当你核算时,你将不得不核算重复计算。
部分执行是否可能?
让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了头寸表中的十字,关闭了一个/几个头寸。但是,在脚本执行结束时,仍然应该有正好100个位置。
MT4版本 简单得令人难以置信。这就是为什么我在这个主题中写道。
谁有关于MT5的解决方案?
没有同步器,就没有办法。
在这个过程中可能会有基本的重新报价 或失去连接,100个订单不一定会产生100个交易。
没有同步器,就没有办法。
在这个过程中可能会有基本的重新报价 或失去沟通,100个订单不一定会产生100个交易。
同步器将只确保PositionsTotal和OrdersTotal的值不会说谎。正是因为他们在时间上撒谎,我们才会得到双重计数。
原则上,同步器是一个单线。而如果你不去研究它的机制,实施起来也很简单。
然而,即使有了同步器,一切也是极其复杂的。你可以使用这样一个条件。
然而,如果有人做了以下的事情,这个条件就会变得很无奈。
让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了位置表中的一个十字,关闭了一个或多个 位置。然而,在脚本执行结束时,仍然应该有正好100个位置。
也就是说,一个基本的任务,在MT4中只需两行就能解决,而在MT5中却不容易解决。这就是为什么MT4风格+同步器在MT5中的规则。正因为如此,我不太理解在MT5中如何编写其他的EA,而市场上有很多这样的EA。
同步器将只确保PositionsTotal和OrdersTotal的值不发生变化。正是因为它们是暂时性的错误,才导致了重复记账。
原则上,同步器是一个单线。而如果你不去研究它的机制,实施起来也很简单。
然而,即使有了同步器,一切也是极其复杂的。你可以使用这样一个条件。
然而,如果有人做了以下的事情,这个条件就会变得很无奈。
也就是说,一个基本的问题,在MT4中两行就能解决,在MT5中却不容易解决。这就是为什么MT4风格+同步器在MT5中的规则。正因为如此,我不明白在MT5中如何编写其他的EA,而市场上有很多这样的EA。
在MT5中,一切都以与MT4相同的方式解决,而且往往更容易,因为语言和API更丰富。更确切地说,这些语言几乎是相同的,在这里Metacquotes在兼容性方面做了很好的工作,但API是相当不同的。Renat(Metakvotes的主管)曾在论坛上说,MT4已经死了,不会再开发。但显然,商业利益更重要,尽管如此,更新还是要出来。但大部分是对MKL5的错误和新功能的修复。所以开发商做得好,我就摘下帽子,我不摘。)
而总的来说,我不理解一些同志的呻吟,因为很难切换到MKL5。不存在什么困难,好在还有一个API,所以有详细的资料,我更愿意向他们学习。谁还没有足够的知识,欢迎来帮忙,这很简短,但很清楚。在任何情况下,第五代都比第四代快至少10倍,而且在优化模式 下,一般会使用你允许的所有CPU核心,在现代显卡的情况下,第四代比第四代快数百倍。所以没有必要写悲伤的歌曲。))
你还没有考虑到部分性能,当你考虑时,你也必须考虑到超限的问题。
这也不对吗?- 虽然我不明白有人想从这个功能中得到什么--但它百分之百地完成了它的工作!!。
让我们假设不存在部分执行。然而,当脚本运行时,有人可能不小心点击了 头寸表中的十字,关闭了一个/几个头寸。但是,在脚本执行结束时,仍然应该有正好100个位置。
MT4版本简单得令人难以置信。这就是为什么我在这个主题中写道。
那么,对于MQL5,你设置了这样的条件,有人可以玩耍,而对于MQL4,你没有这样做?如果我从另一台电脑连接到账户,下了几个点......MQL4会怎么开?
你想在没有任何检查的情况下乱来吗?你是在提倡编程中的放任自流,还是为了某些人的私利而试图诽谤MQL5?
在mql4中写下同样的内容,并进行检查,万无一失。
所以,对于MQL5,你设置了这样的条件,有人可以乱来,但对于MQL4就不行?如果我从另一台电脑连接到我的账户,下了几个点......MQL4会开什么?
MT4和MT5的条款和条件是相同的。
你想不做任何检查就乱来吗?你是在倡导编程中的放任自流,还是为了某人的私利而贬低MQL5?
如果你不知道怎么做,你将不得不用mql4展示同样的问题,用ticks和foolproof。
我只在MT5上做所有事情。我只是说,MT5并不比MT4复杂。它比这要复杂得多!只有本周有一个仓位倒置的解决方案,而且不是100%有效。
这么多年来,大家都知道回溯测试,来...睡眠。因为它非常复杂。论坛上提出的许多交易API的特殊性,开发者并不清楚,或者没有给出他们的意见。
没有人批评MT5。我已经通过实例说明了解决初级问题的一些问题。