Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
在我装有i3处理器的旧笔记本电脑上,我仍然使用WinXP 32位,不受MT5支持。最近我把内存增加到6Gb,我想安装一个64位操作系统,运行MT4和MT5。哪个更合适 - Win7或Win8.1
我更喜欢7号车。办公室有一个8,一个10和一个7。7号的终端更稳定。由于未知的原因,7中的测试人员在弱小的计算机上更快。8ka根本就不是很过渡的。它吃的资源最多。10需要为自己提供更多的资源。
我的 带i3处理器的 旧笔记本电脑 仍然安装着WinXP 32位,不被MT5支持。最近我把内存增加到6Gb,我想安装支持MT4和MT5的64位操作系统。哪个更合适 - Win7或Win8.1 ?
去你的笔记本电脑制造商的网站,看看官方驱动程序是哪种最大的操作系统,这将是你的首选操作系统。如果驱动程序是针对Win 8.1的,那么你可以试试Win 10。如果驱动程序最终出现在Win 7中,那么就没有什么选择。
下午好,请你帮忙。
我需要给这个EA添加一个止损点,并在EA运行时显示参数的变化。
在'OrderClose'的返回值上有两个警告,应检查 ,也请修复。
外置双Lots = 0.1。
外置双倍最大风险 = 0.3。
外置双倍的DecreaseFactor = 100。
双层st1,st2。
//+------------------------------------------------------------------+
//|计算未结头寸|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0。
//----
for(int i=0;i<OrdersTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderSymbol()==Symbol())
{
如果(OrderType()==OP_BUY) buys++;
如果(OrderType()==OP_SELL) sells++;
}
}
//---- 退货订单量
if(buys>0) return(buys)。
否则返回(-sells)。
}
//+------------------------------------------------------------------+
//|计算最佳手数|
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots。
int orders=HistoryTotal(); // 历史订单总数
int losses=0; // 亏损订单的数量,没有休息时间
//---- 选择地段大小
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3)。
//----,计算无休止的损失订单的数量
如果(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史中的错误!"); break; }
如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。
//----
如果(OrderProfit()>0),则休息。
if(OrderProfit()<0) losses++;
}
如果(损失>1)lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1)。
}
//----,返回地段大小
如果(lot<0.1)lot=0.1。
return(lot)。
}
//+------------------------------------------------------------------+
//| 检查未结订单的情况 |
//+------------------------------------------------------------------+
空白的CheckForOpen()。
{
int res;
如果(Volume[0]>1)返回。
//---- 购买-----------------------
如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )
if ((Open[0]<Open[1])&&(Close[0]<Close[1])
//
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0," ,0,0,Blue)。
返回。
}
//---- 卖------------------------
如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )
if((Open[0]>Open[1])&&(Close[0]>Close[1]))
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,",0,0,Red)。
返回。
}
}
//------------Закрытие позиций----------------------------------------
空白的CheckForClose2()
{
如果(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,3,White);
如果(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue) 。
//CheckForOpen()。
}
//
//+------------------------------------------------------------------+
//| 检查平仓的条件|
//+------------------------------------------------------------------+
空白的CheckForClose1()
{
如果(Volume[0]>1)返回。
//检查是否有损失
如果((AccountProfit()<0)&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk))
{
CheckForClose2()。
Print("loss", AccountProfit())。
}/**/
//---- 检查订单类型
如果(OrderType()==OP_BUY)
{
如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )
if ((Open[0]>Open[1])&&(Close[0]>Close[1]))
CheckForClose2()。
}
如果(OrderType()==OP_SELL)
{
如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )
if ((Open[0]<Open[1])&&(Close[0]<Close[1]))
CheckForClose2()。
}
}
//+------------------------------------------------------------------+
//| 启动功能|
//+------------------------------------------------------------------+
空白启动()。
{
//---- 按当前符号计算未结订单
如果(CalculateCurrentOrders(Symbol())==0) CheckForOpen()。
否则CheckForClose1()。
//---
}
//+-----------------------------------------------+
我已经添加了SL和TP的计算,但如果能添加他们的检查就更好了。你可以在文章https://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position,了解如何做到这一点。
你的警告并不重要。OrderClose的 结果被忽略了,因此出现了警告。例如,你可以让CheckForClose2 函数返回OrderClose 的结果。或者你可以让它保持原样。
我注意到的另一件事是,函数CheckForClose2、CheckForOpen等 的名称很奇怪。而你让他们进行贸易操作。
大家好。谁能帮我编辑一下这个EA。我必须删除开单功能,这样EA就不会自己开单,而只能与手动开单一起工作。事先非常感谢。
移除开单功能,并将magic设置为0,机器人将捡起手动开单并跟踪它们。如果我们想让机器人只关注单个订单,而不是所有的订单都在一排,那么就把条目变成买入和卖出,例如,通过按下相应的按钮,机器人应该在每个订单的OnChartEvent事件CHARTEVENT_OBJECT_CLICK中创建和处理。在这种情况下,Magic必须大于0,以便只对它自己的订单工作。
https://www.mql5.com/ru/forum/131859/page9#434297
isTradeTimeString()
isTradeTimeInt()
你好。
这样的小毛病...我正在测试一个!3台计算机的专家。其中2个准确地工作,而其中一个在计算中总是出现某种错误--一般来说,它不能正确计算止损 或错误地触发。
硬件不新,但也不旧。
有人遇到过这样的事情吗?
硬件不新,但也不旧。
有人遇到过这样的问题吗?
这三个人都连接到同一个经纪人/交易商服务器?(我的意思是,这是同一个故事吗?)如果不是,这是第一个要看的地方。