集合竞价

本文介绍了一个股票交易模拟算法,该算法通过对比买方和卖方的订单,寻找最大可能成交的价格和数量,实现股票交易的模拟。算法首先读取买卖双方的订单信息,然后根据价格对订单进行排序,最后通过遍历比较找到最佳成交点。

//注意类型.....还有就是开盘价尽量大 安买价来就好

#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <vector>
#include <cmath>
#include <sstream>
#include <algorithm>
using namespace std;

const int N = 5000+5;
typedef long long ll;
struct Node {
	int r;
	double p;
	ll n;
};
bool cmp1(Node a, Node b) {
	if(a.p == b.p) return a.n > b.n;
	return a.p < b.p;
}

bool cmp2(Node a, Node b) {
	if(a.p == b.p) return a.n > b.n;
	return a.p > b.p;
}
vector<Node>B, S;
int main() {
	string s;
	double p, t;
	int cnt = 1;
	Node tmp;
	while(cin >> s) {
		tmp.r = cnt++;
		if(s[0] == 'b') {
			cin >> tmp.p >> tmp.n;

			B.push_back(tmp);
		} else if(s[0] == 's') {
			cin >> tmp.p >> tmp.n;

			S.push_back(tmp);
		} else {
			cin >> t;
			int flag = 0;
			for(int i=0; i<B.size(); i++) {
				if(B[i].r == t) {
					B[i].p = 0;
					B[i].n = 0;
					flag =1;
					break;
				}
			}
			if(flag == 0)
				for(int i=0; i<S.size(); i++) {
					if(S[i].r == t) {
						S[i].p = 0;
						S[i].n = 0;
						break;
					}
				}
		}
	}
	sort(B.begin(), B.end(), cmp2);//大-》小 
	sort(S.begin(), S.end(), cmp1);//小 -> 大 

/*	for(int i=0; i<B.size(); i++) {
		cout << B[i].p << "-" << B[i].n << endl;
	}
	cout << endl;
	for(int i=0; i<S.size(); i++) {
		cout << S[i].p << "-" << S[i].n << endl;
	}
*/
	double fp=0;
	ll fs=0;

	for(int i=0; i<B.size(); i++) {
		double t = B[i].p;
    	ll bsum = 0, ssum = 0;
		for(int j=0; j<=i; j++) {
			bsum += B[j].n;
		}
		for(int j=0; j<S.size(); j++) {
			if(S[j].p <= t)
				ssum += S[j].n;
			else break;
		}
	//	cout << fp << ":" << ssum << "-" << bsum << endl;
		if(fs < min(ssum, bsum)) fp =t, fs = min(ssum, bsum);
	}

	printf("%.2f %lld", fp, fs);
	return 0;
}

 

QMT平台在集合竞价方面具备多种功能和优势: ### 功能 - **策略编写与执行**:提供丰富的策略编写工具和函数库,支持用户开发集合竞价相关的程序化交易策略。用户可根据自身需求,利用这些工具编写复杂的策略逻辑,在集合竞价阶段自动执行交易操作。 - **行情数据获取**:能实时提供集合竞价的行情数据,涵盖价格、成交量等关键信息。同时支持历史行情数据的查询与分析,方便用户进行策略的回测和优化。 - **订单管理**:支持多种订单类型,如限价订单、市价订单等。用户可对集合竞价阶段的订单进行个性化设置,包括下单数量、止损止盈等参数。此外,还具备多账户管理和批量下单功能,提升交易效率。 - **监控与预警**:可实时监控集合竞价的交易情况和策略执行效果。用户能设置各类预警条件,当市场出现符合条件的情况时,系统会及时发出提醒。 ### 优势 - **高效交易执行**:支持程序化交易,拥有低延迟的交易通道,能在集合竞价的短时间内迅速提交和处理订单,减少因网络延迟等因素导致的交易机会损失。对于对集合竞价价格敏感的策略,可及时响应市场变化,以最优价格成交[^1]。 - **策略多样性**:允许用户根据不同的分析方法,如技术指标分析、基本面数据分析等,开发多样化的集合竞价策略。例如,编写策略筛选集合竞价高开或低开的股票,并自动下单交易[^1]。 - **精准数据支持**:提供的集合竞价行情数据实时、准确,有助于用户更好地分析市场趋势和股票的供需关系,从而制定更合理的交易策略[^1]。 - **个性化定制**:用户可根据自身的风险偏好和交易习惯,对集合竞价交易进行个性化设置,满足不同用户的需求[^1]。 以下是一个简单的Python代码示例,模拟在QMT中判断集合竞价高开: ```python # 假设已有获取集合竞价开盘价和前一日收盘价的函数 def is_high_open(open_price, prev_close): high_open_threshold = 0.03 high_open_ratio = (open_price - prev_close) / prev_close return high_open_ratio >= high_open_threshold # 调用示例 open_price = 10.3 prev_close = 10 print(is_high_open(open_price, prev_close)) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值