目标:动态获取最新K线并通过DLL发送出去,symbols和periods可配置。

//+------------------------------------------------------------------+
//| kline.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict string symbols[]={"USDJPY","USDCHF","USDCAD","NZDUSD","GBPUSD","EURUSD","AUDUSD",
"AUDCAD","AUDJPY","EURCAD","GBPAUD","GBPJPY","XAUUSD","XAGUSD","Brent","WTI"}; int periods[]={PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
//PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1 // int gCount = 0; struct RateInfo
{
int time;
int ctm; // rate time
int open; // open price: 11987=119.87
int high, low, close; // high,low,close shift from open
double vol; // volume
}; //DLL
#import "TradeQuot.dll"
void UnInit();
int Init(int,int);
void OnKineDataChange(string symbol, int period, RateInfo &data[],int kinesize);
void OnKineDataChangeW(string symbol, int period, RateInfo &data[], int kinesize);
void OnKineDataChangeExW(string symbol, int period,RateInfo &data);
#import
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//Print(PERIOD_M1," ",PERIOD_M5," ",PERIOD_M15," ",PERIOD_M30," ",PERIOD_H1," ",PERIOD_H4," ",PERIOD_D1," ",PERIOD_W1," ",PERIOD_MN1);
int ret = Init(1,0);
if(ret!=1){
Print("init dll failed code=",ret);
return INIT_FAILED;
} long begin=TimeLocal();
GetKline(0);
long end=TimeLocal();
Print("OnInit use:"+(end-begin)+"s");
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
} void GetKline(int type)
{
//long t=TimeLocal();
int maxBars = 2;
if(type==0){
maxBars = 5000;
}
for(int i=0;i<ArraySize(symbols);i++){
for(int j=0;j<ArraySize(periods);j++){
string symbol=symbols[i];
int period = periods[j]; MqlRates rates[];
ArraySetAsSeries(rates,true);
int copied=CopyRates(symbol,period,0,maxBars,rates);
Print("GetKline:["+symbol+":"+period+"] - "+copied);
if(copied>0){
RateInfo item[];
ArrayResize(item,copied);
for(int m=0;m<copied;m++)
{
item[m].time = rates[m].time;
item[m].ctm = rates[m].time;
item[m].open = rates[m].open;
item[m].high = rates[m].high;
item[m].low = rates[m].low;
item[m].close = rates[m].close;
item[m].vol = rates[m].tick_volume;
gCount=gCount+1;
if(gCount%100000==0){
printf("%s %d %s %lf %lf %lf %lf %d",symbol,period,TimeToString(rates[m].time),
rates[m].open,rates[m].high,rates[m].low,rates[m].close,rates[m].tick_volume);
}
}
OnKineDataChangeW(symbol,period,item,copied);
ArrayFree(item);
}else{
Print("Failed to get history data for the symbol ",symbol," period ",period," code ",GetLastError());
}
}
}
} //+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer(); UnInit();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- }
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
Print("onTimer...");
GetKline(1);
}
//+------------------------------------------------------------------+

MT4 取K线的更多相关文章

  1. 高仿MT4行情终端(K线图+操控+简单架构)

    技术:VS2015 Update3 + QT 5.11.2 + BOOST 1.68 + QT VS Tools + C++11   概述 模仿外汇MT4的界面 详细 代码下载:http://www. ...

  2. 用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)

    本人最近在尝试着发表“以股票案例入门Python编程语言”系列的文章,在这些文章里,将用Python工具绘制各种股票指标,在讲述各股票指标的含义以及计算方式的同时,验证基于各种指标的交易策略,本文是第 ...

  3. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)

    最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...

  4. K线指标线计算方法

    指标线计算方法 l   dataDR = Kdata(原始数据)/dr(除权)  //除权数据等于原始数据除以DR(除权) 其中,日K数据 需要本地进行除权处理.周K和月K的旧数据部分由服务器进行处理 ...

  5. C#下如何用NPlot绘制期货股票K线图(1)?

    [简介] 作为一名专业程序化交易者,编程是一个程序员的基本功,本文是作者在做的一个期货CTP项目中有关K线绘图的一部分,偿试类MT4中图表 设计而写,在编写绘图时,查阅了相关资料,感觉还是用NPlot ...

  6. 利用JFreeChart绘制股票K线图完整解决方案

    http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...

  7. 在MPAndroidChart库K线图的基础上画均线

    CombinedChart 可以直接使用MPAndroidChart库里面提供的CombinedChart实现组合图形 Demo:CombinedChartDemo ------分割线(如果想在一个图 ...

  8. TuShare获取K线数据

    Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...

  9. 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

随机推荐

  1. Java读取txt文件和写入txt文件

    package com.nickwong.code; import java.io.*; /** * Created by Nickwong on 31/07/2018. * 根据1-8楼的建议,优化 ...

  2. [CentOS] 环境变量设置的三种方法

    在CentOS系统中添加环境变量的方法有几种,推荐第三种方法.这里以添加 TexLive 2017 的环境变量为例进行说明. 1. 修改  ~/.bash_profile  文档,在文末添加以下代码: ...

  3. sqlserver数据库 视图相关

    1.首先创建一个视图 方法一:右键解决 方法二:脚本 create view view_test AS select * from t1 GO 2.删除视图 方法1:右键解决 方法2:脚本 if ex ...

  4. css 三角

    http://peunzhang.github.io/demo/css_angle/index.html

  5. DOM4j 修改和删除

    XML文件 <?xml version="1.0" encoding="UTF-8"?> <contactList> <conta ...

  6. SoapUI之cookie设置

    一.测试背景: 1)接口测试需要完成注册-->登录-->充值,使用soapui构建好测试用例.设置断言后,运行结果如下: 2)recharge接口运行失败,继续查看该接口具体发送的请求及返 ...

  7. validation-api各注解的用法

    入参用@Valid,要不下面实体类中的注解不生效 @AssertFalse 被注解的元素必须为false@AssertTrue 被注解的元素必须为True@DecimalMax(value) 被注解的 ...

  8. PHP运算符知识

    1.三目运算符: $a =1; echo $a>0 ? '大于0':$a==0 ? '等于0':'小于0'; 貌似应该输出:大于0 其实: 然而,上面语句的实际输出是't',因为三元运算符是从左 ...

  9. 使用飞冰组件关于点击行回填在input内(React)

    import { Table,Grid } from "@icedesign/base"; import { FormBinderWrapper as IceFormBinderW ...

  10. 关于react的分页

    基于antdesign分页:表格属性pagination <Table pagination={{ total: this.state.totalNum, showSizeChanger: tr ...