mt4 我有个遍历订单创建品种集合的难题无法解决,谁帮帮我?

 

利用 OrdersTotal() 遍历订单

我想实现创建一个当前持仓的品种 symbol 的 string 集合

除了多维数组 string[] 来实现外

有没有更加简单的方法,例如 java 里的 List 类型的 add 方法?


例如当前持仓 10 个订单,分别为 3个 eurusd 多单 2个 eurusd 空单

1个xauusd空单 2个gbpusd 空单 2个gbpusd多单

实现结果就是

一个数组里存放的是 3 个 货币对的 string {xauusd,gbpusd,eurusd}

怎么实现

 
没人吗??!!
 
标准库中Arrays中就有string数组类,可能你不知道。
 
Ziheng Zhuang:
标准库中Arrays中就有string数组类,可能你不知道。

没有那么简单!我开始想到了一种使用 排序的方式,然后再次循环 去重复,最后写完提示 ArraySort 不支持 string 的数组


最后又不断的改写,使用 StringFind 的组合,循环查找,然后将找到重复值 标记为 null

再次循环,跳过标记为 null,填充新的数组最后才完成。。。

循环了三次 

 
xiaokkangg CHEN:

没有那么简单!我开始想到了一种使用 排序的方式,然后再次循环 去重复,最后写完提示 ArraySort 不支持 string 的数组


最后又不断的改写,使用 StringFind 的组合,循环查找,然后将找到重复值 标记为 null

再次循环,跳过标记为 null,填充新的数组最后才完成。。。

循环了三次 


用标准库其实很简单,只是你不会而已。

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                                           Copyright 2020,fxMeter |
//|                            https://www.mql5.com/en/users/fxmeter |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020,fxMeter"
#property link      "https://www.mql5.com/en/users/fxmeter"
#property version   "1.00"
#property strict
#include <Arrays\ArrayString.mqh>
CArrayString strObj;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{

   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         strObj.Sort();
         if(strObj.Search(OrderSymbol())==-1)
         {
            strObj.Add(OrderSymbol());
         }
      }
   }

   int total = strObj.Total();
   for(int i=0; i<total; i++)
   {
      printf("%d: %s",i,strObj.At(i));
   }
   return;
}
 

感觉这也不用什么排序不排序的啊,干嘛要排序?

搞不懂到底是要怎样~~

 
Ziheng Zhuang:


用标准库其实很简单,只是你不会而已。

标准库是啥?在哪里下载呢?。。。
 

标准库是MT5自带的,在include文件夹

#include <Arrays\ArrayString.mqh>
原因: