Mql5自定义品种 中国金融产品: A股票、期货、债券、数字货币的应用(1) - 页 2

 

樓主這篇這幾個月來反覆看了n多次了

很感謝作者的大度分享 想要完成這功能 還需要大量的工作

 
楼主好,通过API获取数据自定义到MT5里这个办法很好,但我想问,EA的交易怎么执行呢?如果执行买卖?怎么将订单发送到期货公司呢?
 

我個人想到的做法 


1 先開一個商品窗(任意商品),建立 onTime Event ,用這個 ontime event 到 api 取得新的報價 tick ,用 CustomSymbolTick 放新資料給您要的商品

2. 才開始您要的商品,這個就可以用 onTick 來寫您的 eA ,用一般的寫法就可以了

3. 下單到 Broker 的方式,就是用 dll 建立下單介面,在要下單的地方,call 這個介面就可以了,因為您不是要下單到 mt5 原來的 broker 所以不能用原來的下單指令

ps: 我在台灣,所以台灣的期貨商的做法和大陸會有一些差異

我正努力把台灣期貨市場引入MT5 也歡迎台灣的 USER 一起討論 

 
Jiayou Hu:
楼主好,通过API获取数据自定义到MT5里这个办法很好,但我想问,EA的交易怎么执行呢?如果执行买卖?怎么将订单发送到期

外挂python的IB盈科的交易接口

 
牛 B   虽然看不懂
 
还能用吗   我下载了好像用不了


 
Mars Yuan #:
因论坛篇幅64000字和24小时发帖一篇限制,整体文章需要6次6天发完,各个股日线及分钟线将在后续发布

挂个外链,带大家去CSDN传搜

 
大才啊,收下学习了。
 

首先,应该要了解该软件对于K线时间的划分。这是交易最最基本的量化的东西,无论肉眼判断还是程序量化。

除非,该软件的服务器时间的0点刚好对应所交易的品种的开盘时间,但是,多个品种的开盘时间一旦不是一致,就又出现不吻合的问题,导致K线划分是错位的。

这点,除非该软件后期有所改进。

比如:

       1、某品种,9点半开盘,到10点半,则是该品实际交易过程经历了一个小时,那么软件中H1的划分也刚好是一根K线。否则,就是错位的。

       2、若下午是13点开盘,到14点,是该品实际交易过程经历了一个小时,那么软件中H1的划分也刚好是一根K线。否则,也就是错位的。

       3、如果用到H2/H3/H4,同上逻辑,否则,又是错位。

总之,一旦属于错位,必定导致判定的趋势是错误的。  错误的判定,岂能带来正确的交易收益?  只可能偶尔撞对罢了。

 

老师你好,文件zidiy.txt数据内容如下:

2022.11.08 21:00:00,19906818,19906818,19906818,19906818
2022.11.08 21:01:00,19905088,19905088,19905088,19905088
2022.11.08 21:02:00,19905481,19905481,19905481,19905481

2022.11.08 21:03:00,19906226,19906226,19906226,19906226

mql5脚本代码:


struct prices

  {

   datetime Date;         // 周期开始时间

   double   OPEN;         // 开盘价

   double   HIGH;         // 周期最高价

   double   LOW;          // 周期最低价

   double   CLOSE;        // 收盘价

  };

//+------------------------------------------------------------------+

//| 脚本程序起始函数                                                   |

//+------------------------------------------------------------------+

void OnStart()

  {

//--- 结构数组

   prices arr[];

//--- 打开文件

   ResetLastError();

   int file_handle=FileOpen("zidiy.txt",FILE_READ|FILE_TXT|FILE_UNICODE,",");

   if(file_handle!=INVALID_HANDLE)

     {

      //--- 读取来自数组文件的所有数据

      FileReadArray(file_handle,arr);

      //--- 接收数组大小

      int size=ArraySize(arr);

      Print(size);

      //--- 打印数组数据

      for(int i=0;i<size;i++)

         //Print("Date = ",arr[i].DATE," Bid = ",arr[i].OPEN," Ask = ",arr[i].LOW);

      //Print("Total data = ",size);

      //--- 关闭文件

      FileClose(file_handle);

     }

   else

      Print("File open failed, error ",GetLastError());

读取数据为空,是怎么回事?方便指导下吗?非常感谢!

附加的文件:
zidiy.txt  1 kb
原因: