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

 
RogozaIV:
我最近从mql4转到了mql5.我正在测试一个关于RTS指数的专家顾问,并且在建立几个头寸方面遇到了问题,尽管建立一个头寸的条件之一是如果(...OrdersTotal()==0)。为什么这个条件不起作用?如何才能只开一个仓位?

订单总数

OrdersTotal 返回有效订单 的数量。

职位总数

PositionsTotal 返回开放职位 的数量。


注意事项

活跃的挂单 和头寸之间不应混淆,它们也显示在 "工具箱 "面板的 "交易 "标签中。订单是执行交易 的命令,而头寸是一个或多个交易 的结果。

使用 "净值化 "头寸(ACCOUNT_MARGIN_MODE_RETAIL_NETTINGACCOUNT_MARGIN_MODE_EXCHANGE),每个符号 在任何时候都只能建立一个头寸,并且是一个或多个交易 的结果。在 "工具箱 "面板的 "交易 "选项卡中也显示的头寸和活跃的挂单,不应相互混淆。

在独立表示头寸的情况下(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),每个符号可以同时开设多个头寸。


也就是说,使用OrdersTotal,你可以检查 目前有多少个RETAILED ORDERS

订单_类型_购买_限制

待定的买入限价单

订单_类型_销售_限制

待定卖出限价单

订单_类型_购买_停止

悬而未决的买入止损单

订单_类型_销售_停止

悬而未决的卖出止损单

订单_类型_购买_停止_限制

当达到订单价格时,在StopLimit价格下一个买入限价挂单。

订单_类型_销售_停止_限制

当达到订单价格时,在StopLimit价格下一个挂起的卖出限价订单。


而你需要检查在那一刻有多少个开放的职位。

购货类型

购买

销量

出售


- 为此应使用PositionsTotal。

 
 
Agat:
下午好。在MT5最新更新到1604版本后,我的指标不再正常工作。我正在使用
所谓的 "液体 "指标。例如,我在一个窗口里有几个多期随机指标。好了,现在短的都画好了
和以前一样,稍长的只画几条,最长的则完全不画。

我的印象是,他们突然开始缺乏历史。你能告诉我可能出了什么问题吗?
事实证明,故障发生在那些没有打开较低时间框架的MT中。我不得不从M1和更高的位置打开图表,一切都很正常。该问题现在已经结束。
 
是的,你兴奋得太早了,当你重新启动终端时,情况是一样的,你每次都要点击浏览所有的图表。
这可不行,不可能成功。至少有人能就这个问题的是非曲直说一句话吗?很明显,更新是有故障的。

人们到哪里去寻找这样的问题呢?
 
你好!2017.06.02_17:45 GMT+3。我有一个问题。.mq5程序写了它的手数计算,--结果,--策略测试器中 的程序试图用一个大得吓人的手数开仓交易。风险百分比为1.09。存款规模大于存款(默认为10,000美元)。我试图使用Include>Expert>Money>MoneyFixedRisk.mqh文件夹中的标准OOP文件。结果:程序试图以零手开立交易。(0.00).我认为 -- 这是一个公司程序员的把戏。还是我错过了什么?好吧,让你的EA失去作用。弯曲的地段在侧面。也许,谁知道我应该写些什么,以便使专家顾问以计算出的手数和指定的风险百分比开立交易?我不能自己做,我在浪费我的时间。我希望我们公司的程序员不会被冒犯。我在此附上包括的文件Lot.mqh .我希望有人能回答。18:00 GMT+3。插入时间:18:11 GMT+3。
附加的文件:
Lot.mqh  2 kb
 
Agat:
下午好。在MT5最新更新到1604版本后,我的指标不再正常工作。我正在使用
所谓的 "液体 "指标。例如,我在一个窗口里有几个多期随机指标。好了,现在短的都画好了
和以前一样,稍长的只画几条,最长的则完全不画。

我的印象是,他们突然开始缺乏历史。你能告诉我可能出了什么问题吗?


你如何访问另一个时期的历史?你要进行哪些检查才能获得访问权?你得到什么错误代码

 
Николай Никитюк:
你好!2017.06.02_17:45 GMT+3。我有一个问题。.mq5程序写了它的手数计算,--结果,--策略测试器中 的程序试图用一个大得吓人的手数开仓交易。风险百分比为1.09。存款规模大于存款(默认为10,000美元)。我试图使用Include>Expert>Money>MoneyFixedRisk.mqh文件夹中的标准OOP文件。结果:程序试图以零手开立交易。(0.00).我认为 -- 这是一个公司程序员的把戏。还是我错过了什么?好吧,让你的EA失去作用。弯曲的地段在侧面。也许,谁知道我应该写些什么,以便使专家顾问以计算出的手数和指定的风险百分比开立交易?我不能自己做,我在浪费我的时间。我希望我们公司的程序员不会被冒犯。我在此附上包括的文件Lot.mqh .我希望有人能回答。18:00 GMT+3。插入时间:18:11 GMT+3。

运行这个EA:货币固定风险- 改变两个输入参数,在终端的 "专家 "选项卡中看到打印结果。
 

我的指标中无法得到任何指标数据。

int OnInit()
  {  
   handle1=iMA(NULL,0,per1,0,MODE_LWMA,PRICE_CLOSE);
   handle2=iMA(NULL,0,PLength1,0,MODE_LWMA,PRICE_CLOSE);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
   if(copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle1)>0)
            break;
         Sleep(50);
        }
      copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
      if(copied1<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }  
   int copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
   if(copied2<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle2)>0)
            break;
         Sleep(50);
        }
      copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
      if(copied2<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }
  }

没有什么是复制的。复制的变量1/2总是小于零。在调试器中,我不能比这段代码更进一步。如何正确地做,我的头已经坏了。

 
嗯......之前有一个错误4806,现在是4807,当我把创建句柄 移到OnInit()时。你是如何做到这一点的?
 
我想我已经明白了。手柄没有被创造出来。我没有初始化所有的数据。