微盘,微交易系统是一个有争议的系统,为什么这么说呢,因为有玩家被割了韭菜,有玩家被杀了猪,这是因为遇到了不法运营者。今天我们暂且不论运营问题,单从技术的角度讨论一下微交易系统K线的对接。

微交易盘有时间盘和点位盘两种,看涨看跌,买点位,这些的基础就是你的盘口要对接好行情,不管你是期货,黄金白银,还是数字货币还是股票,总之你要让K线动起来,让行情跑起来。那么有很多交易所和平台都有对外提供行情接口API,所以给广大运营者提供了很大的便利,根据不同的API接口,我们按照对接文档获取到我们需要的数据然后入库就可以了。

今天就以新浪抓取黄金、白银、原油的数据为例子讲解一下微盘K线数据获取入库

一般的接口是通过post或者get或者socket的方式进行接口信息交互。市面上的微交易盘口大多是php版本。那么以php获取数据为例:

接口地址:http://hq.sinajs.cn/

list后面代上需要获取的行情接口产品代码,

那么返回值如下:

var hq_str_hf_CL="42.264,,42.200,42.230,42.570,41.620,05:00:00,42.240,42.330,154923.000,11,1,2020-08-15,WTI纽约原油,281945";
var hq_str_hf_SI="26.469,,26.525,26.545,27.885,25.780,04:59:59,27.718,27.620,91009.000,1,4,2020-08-15,纽约白银,220726";
var hq_str_hf_GC="1952.240,,1953.200,1953.900,1970.000,1939.100,05:00:00,1970.400,1963.800,405157.000,3,1,2020-08-15,纽约黄金,237092";

原油 ,白银和黄金,返回数据依次代表:现价,涨跌幅,买价,卖价,  最高价,最低价,   ,收盘价,开盘价       持仓量,买量,卖量,名称。再根据php的正则方式切割每个参数出来入库。详细代码如下:

public function getmessage(){
        if(date('H') == '5'){
            $time = strtotime(date('Y-m-d',strtotime('-3 day')));
            M("Api")->where(array('time'=>array('LT',$time)))->delete();
        }
        $url = 'http://hq.sinajs.cn/?_/&list=hf_CL,hf_SI,hf_GC';//,hf_SI,hf_GC
        $data = $this->httpGet($url);
        $data2 = explode(';',$data);
        $data3 ="";
        //echo count($data2)-1;exit;
        for($index=0;$index<count($data2)-1;$index++)
        {
            $one = substr( $data2[$index], stripos($data2[$index], "\"")+1, -1);
            $onellist = explode(',',$one);
            $kine = "";
            if(strpos($data2[$index], "hq_str_hf_CL"))//沥青
            {
                //48.62,1.8860,48.62,48.63,   48.87,48.31,22:24:42,47.72,48.76,    18043,0,0,2017-03-15,NYMEX原油
                //现价,涨跌幅,买价,卖价,  最高价,最低价,   ,收盘价,开盘价       持仓量,买量,卖量,名称
                $kine['cid'] = 28;
                $kine['code'] = "CONO";
            }else if(strpos($data2[$index], "hq_str_hf_SI")){//白银
                //16.870,-0.2955,16.870,16.870,16.980,16.820,22:50:23,16.920,16.890,1076,0,0,2017-03-15,COMEX白银
                //现价,涨跌幅,买价,卖价,  最高价,最低价,   ,收盘价,开盘价       持仓量,买量,卖量,名称
                $kine['cid'] = 15;
                $kine['code'] = "XAG";
            }else if(strpos($data2[$index], "hq_str_hf_GC")){//黄金
                //1199.0,-0.2993,1198.9,1199.0,1204.8,1196.8,22:50:53,1202.6,1198.7,10300,0,0,2017-03-15,COMEX黄金
                //现价,涨跌幅,买价,卖价,  最高价,最低价,   ,收盘价,开盘价       持仓量,买量,卖量,名称
                $kine['cid'] = 26;
                $kine['code'] = "XAU";
            }
            $kine['price'] = $onellist[0];
            $kine['diff'] = round($onellist[0]-$onellist[7],2);
            $kine['diffRate'] = round($onellist[1],2).'%';
            $kine['time'] = time();
            $kine['high'] = $onellist[4];
            $kine['low'] = $onellist[5];
            $kine['closes'] = $onellist[7];
            $kine['open'] = $onellist[8];
            $kine['name'] = $onellist[13];
            $data3[$index] = $kine;

}
        //print_r($data3);exit;

//F('cc'.time(),$data);
        $data_list = $data3;//json_decode($data);
        foreach($data_list as $k=>$v){
            $acc = S('apiDataPrice'.$v['code']);
            $aee = $this->catproductcode($v['code']);
            $cid = $aee['cid'];
            $v['cid'] = $cid;
            if((($acc['price'] != $v['price']) || ((date('w') == 6 && 4 <= date("H")) || (date('w') == 0) || (date('w') == 1 && date("H") <= 8) || (4 <= date("H") && date("H") <= 8))) && strstr($v['low'],'-') === false && strstr($v['price'],'..') === false && strstr($v['price'],'-') === false && strstr($v['high'],'%') === false && strstr($v['high'],'-') === false){
                S('apiDataPrice'.$v['code'],$v);
                if($cid){
                    $zuoclose = S('zuoclose'.$v['code']);
                    if(!$zuoclose){
                        $aqq['code']  =  $v['code'];
                        $time = strtotime(date('Y-m-d'))+4*3600;
                        $aqq['time'] = array('ELT',$time);
                        $zuoclose = M('Api')->where($aqq)->order('time desc')->field('price')->find();
                        S('zuoclose'.$v['code'],$zuoclose['price'],24*3600);
                    }
                    $v['close'] = $zuoclose;
                    S('price'.$v['code'],$v);
                    if($acc['high'] != $v['high']){
                        S('high'.$v['code'],$v['high']);
                    }
                    if($acc['low'] != $v['low']){
                        S('low'.$v['code'],$v['low']);
                    }

if($acc['open'] != $v['open']){
                        S('open'.$v['code'],$v['open']);
                    }
                    S('close'.$v['code'],$zuoclose);
                    $arr['cid']   = $cid;
                    $arr['code']  = $v['code'];
                    $arr['price'] = $v['price'];
                    $arr['high']  = $v['high'];
                    $arr['low']   = $v['low'];
                    $arr['open']  = $v['open'];
                    $arr['close'] = $zuoclose;
                    $arr['time']  = $v['time'];
                    $arr['diff']  = $v['diff'];
                    $arr['diffRate']  = $v['diffRate'];
                    M('api')->add($arr);
                }
            }

}

$config = M('Webconfig')->where('id=1')->field('day,hour,minute')->find();
        $time   = $config['day']*24*3600 + $config['hour']*3600 + $config['minute']*60 + F('qiangp');
        //查询所有正在交易的订单
        $arraynow = M('order')->where(array('ostaus'=>0))->select();
        //逐个判断盈亏比例
        foreach($arraynow as $k=>$v){
            $product = $this->productpid($v['pid']);
            if($product){
                $cid  = $product['cid'];
                $aff  = $this->catproductcid($cid);
                $code = $aff['title'];
                if(time() == S('CheatTime'.$code) || time() == S('CheatTimes'.$code)){
                    $arr = S('CheatPrice'.$code);
                }else{
                    $arr = S('price'.$code);
                }
                $youjia  = (float)$arr['price'];
                if($youjia < 0 || !$youjia){
                    $where['code']  = $code;
                    $where['time'] = array('ELT',time());
                    $aee = M('Api')->where($where)->order('time desc')->field('price')->find();
                    $youjia = $aee['price'];
                }
                $order['eid']       = $v['eid'];
                $order['uprice']    = $product['uprice'];
                $order['onumber']   = $v['onumber'];
                $order['buyprice']  = $v['buyprice'];
                $order['wave']      = $product['wave'];
                $order['ostyle']    = $v['ostyle'];
                $order['endprofit'] = $v['endprofit'];
                $order['endloss']   = $v['endloss'];
                $orderid = $this->trends($youjia,$order);
                //F('ww'.time(),$orderid);
                //盈亏百分百
                $ykbfb   = round($orderid['ykbfb']*100,2);
                $bdyy    = $orderid['bdyy'];    //本单盈余
                $jiancj  = $orderid['jc'];      //建仓金额
                $ykzj    = $orderid['ykzj'];    //盈亏资金

$user = M('accountinfo')->where('uid='.$v['uid'])->find();
                //达到客户设置止盈或止亏的百分比时强制平仓
                if($time <= time()){
                    //平仓
                    $msg = $this->closeTrade($v['uid'],$user['balance'],$youjia,$v['oid'],$bdyy,$jiancj,$ykzj,$product['uprice']);
                }
                if($v['ostyle'] == 0){//涨
                    if($ykzj > 0){//盈
                        if($v['endprofit'] == 1){

}else{
                            if(abs($ykbfb) >= $v['endprofit']){
                                //平仓
                                $msg = $this->closeTrade($v['uid'],$user['balance'],$youjia,$v['oid'],$bdyy,$jiancj,$ykzj,$product['uprice']);
                            }
                        }
                    }else{
                        if(abs($ykbfb) >= $v['endloss']){
                            //平仓
                            $msg = $this->closeTrade($v['uid'],$user['balance'],$youjia,$v['oid'],$bdyy,$jiancj,$ykzj,$product['uprice']);
                        }
                    }
                }else{   //跌
                    if($ykzj > 0){ //赚
                        if($v['endprofit'] == 1){

}else{
                            if(abs($ykbfb) >= $v['endprofit']){
                                //平仓
                                $msg = $this->closeTrade($v['uid'],$user['balance'],$youjia,$v['oid'],$bdyy,$jiancj,$ykzj,$product['uprice']);
                            }
                        }

}else{

if(abs($ykbfb) >= $v['endloss']){
                            //平仓
                            $msg = $this->closeTrade($v['uid'],$user['balance'],$youjia,$v['oid'],$bdyy,$jiancj,$ykzj,$product['uprice']);
                        }

}
                }

}
        }
        if($time <= time()){
            F('qiangp',time());
            $this->ajaxReturn($msg);
        }
    }

以上代码仅供交流,不足之处请多指正,如果有更佳方法或者微盘交易系统的疑惑难题,可以互相 交流。

微交易平台搭建开发-盘内实时K线对接相关推荐

  1. 11月最新二开微盘USDT微交易时间盘系统+完整数据+K线

    11月最新二开微盘USDT微交易时间盘系统+完整数据+K线修复+搭建教程 11月最新二开微盘USDT微交易时间盘系统+完整数据+K线修复完整+文字搭建教程 微盘确实没啥新意了已经,都是在我之前发的那份 ...

  2. 华为5G微交易修复版源码 K线/结算全修复 去短信+去邀请码

    简介: 修复版华为5G微交易(K线+结算+全修复+去短信+去邀请码)华为5G交易,注册去出短信,邀请码,K线全修复,波动正常,结算正常,某站卖几千大洋. 网盘下载地址: http://kekewl.c ...

  3. 盈透数据获取实时K线与坑点

    官方API文档地址 TWS API v9.72+: Trader Workstation APIhttps://interactivebrokers.github.io/tws-api/一.如何获取E ...

  4. Python笔记11-基于VN.py的实时K线生成器

    from vnpy.trader.vtObject import VtBarData from datetime import timedelta import pymongo from queue ...

  5. CTP程序化交易入门系列之三:获取实时行情及k线合成

    前面两篇有了基础知识的准备,这一篇讲通过CTP API获取实时行情,录入csv,实时合成k线.github上开源了录入csv及合成k线代码,后台回复pyctp可获取.先上两张效果图: 图1 csv数据 ...

  6. C++连接CTP接口实现简单量化交易(行情、交易、k线、策略)

    对于量化交易来说,量化策略和技术系统缺一不可,为了知其所以然,本文实现了一个C++连接CTP接口进行仿真交易的demo,从接收行情.下订单.数据处理到添加策略.挂载运行交易等多个环节来看一下量化交易的 ...

  7. 【软件领域知识整理】贵金属交易的K线图解释(二)

    从事金融领域K线图的认识是少不了,整理一下K线图的基本知识. 如图例: 关于K线图的维基百科说明:http://zh.wikipedia.org/zh-cn/K%E7%BA%B 贵金属交易中常见的21 ...

  8. PHP实现量化交易,量化交易干货丨如何使用DolphinDB计算K线

    DolphinDB提供了功能强大的内存计算引擎,内置时间序列函数,分布式计算以及流数据处理引擎,在众多场景下均可高效的计算K线.本教程将介绍DolphinDB如何通过批量处理和流式处理计算K线.历史数 ...

  9. 干货丨如何使用DolphinDB计算K线

    DolphinDB提供了功能强大的内存计算引擎,内置时间序列函数,分布式计算以及流数据处理引擎,在众多场景下均可高效的计算K线.本教程将介绍DolphinDB如何通过批量处理和流式处理计算K线. 历史 ...

最新文章

  1. vscode出现磁盘路径大小写问题_vscode下python使用相对路径失败问题
  2. vscode使用教程python-用VScode配置Python开发环境
  3. 算法杂货铺——分类算法之决策树(Decision tree)
  4. NYOJ 38 布线问题
  5. .net core精彩实例分享 -- 字符串处理
  6. mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作
  7. C++公有、私有、保护继承的关系
  8. version for mac 破那啥版
  9. 利用Keydown事件阻止用户输入
  10. xy转经纬 经纬转xy 各种坐标系
  11. 用idea使用struts和hibernate来实现CRUB的操作
  12. 【计量经济学】固定效应、随机效应、相关随机效应
  13. 服务器 分辨率问题 显示器不显示不出来,遇到显示器分辨率调不了这个问题怎么办?...
  14. 国内知名流程管理软件-汇总介绍
  15. Unity3D 的LookAt() 与 LookRotation()方法的比较
  16. 北风修仙笔记—2020年3月
  17. 企业微信之客户联系配置及使用
  18. tp5原生SQL:读操作(query方法)
  19. 反相器,传输门,电平移位
  20. 计算机主机usb插口松,usb插口(电脑usb接口松动小妙招)

热门文章

  1. 小白学 Python 爬虫(11):urllib 基础使用(一)
  2. ::设计·创意·插画::相关网站巨集!
  3. PacBio vs. Oxford Nanopore sequencing
  4. 【基础】python操作Word时,自动更新目录(二)
  5. 微信开发者模式php,php 开启微信公众号开发者模式
  6. STM32硬件IIC读写EEPROM
  7. juniper:SRX-产品简介
  8. 兼容chrome、firebox、IE阻止冒泡问题
  9. wps怎么转换成jpg格式?
  10. Android与GNU体系