
等级: 专业版
- 注册:
- 2024-11-13
- 曾用名:
|

楼主 |
发表于 2025-10-29 23:21
|
显示全部楼层
// TICK级别高频交易策略
// 策略类型:高频做市/订单流交易
// 运行周期:TICK数据
// 适用品种:高流动性期货合约
// 输入参数
INPUT:TradeStartTime(900,0,2359,1); // 交易开始时间(时*100+分)
INPUT:TradeEndTime(1455,0,2359,1); // 交易结束时间(时*100+分)
INPUT:OrderBookLevels(3,1,5,1); // 盘口分析深度
INPUT:VolumeThreshold(10,5,50,1); // 成交量异常阈值(手)
INPUT:OrderImbalanceRatio(2,1.5,3,0.1);// 订单不平衡比率
INPUT:MaxSpread(5,2,10,1); // 最大允许价差(最小变动单位)
INPUT:StopLossTicks(3,1,10,1); // 止损点数
INPUT:TakeProfitTicks(6,3,15,1); // 止盈点数
INPUT:PositionSize(1,1,3,1); // 单次交易手数
INPUT:CoolDownPeriod(10,5,30,1); // 交易冷却时间(秒)
INPUT:MinLiquidity(100,50,500,10); // 最小盘口流动性(手)
// 计算当前时间
CurrentTime := TIME;
IsTradingTime := CurrentTime >= TradeStartTime AND CurrentTime <= TradeEndTime;
// 盘口数据采集
BidPrice := DYNAINFO(20); // 买一价
AskPrice := DYNAINFO(34); // 卖一价
MidPrice := (BidPrice + AskPrice)/2;
Spread := AskPrice - BidPrice;
// 多档盘口量能分析
TotalBidVolume := DYNAINFO(18); // 买盘总量
TotalAskVolume := DYNAINFO(19); // 卖盘总量
BidAskRatio := TotalBidVolume/TotalAskVolume;
// 逐笔成交分析
LastVolume := DYNAINFO(9); // 最新成交量
LastPrice := DYNAINFO(7); // 最新成交价
PriceChange := LastPrice - REF(LastPrice,1);
// 订单流分析
BuyingPressure := DYNAINFO(91); // 外盘成交额
SellingPressure := DYNAINFO(92); // 内盘成交额
OrderFlow := BuyingPressure - SellingPressure;
// 持仓状态
NoPosition := TBUYHOLDINGEX('','',1) = 0 AND TSELLHOLDINGEX('','',1) = 0;
LongPosition := TBUYHOLDINGEX('','',1) > 0;
ShortPosition := TSELLHOLDINGEX('','',1) > 0;
// 冷却时间控制
VARS:LastTradeTime(0);
IF BARPOS = 1 THEN LastTradeTime := 0;
SecondsSinceLastTrade := CurrentTime - LastTradeTime;
IsCoolDownOver := SecondsSinceLastTrade >= CoolDownPeriod OR LastTradeTime = 0;
// 交易信号条件
GoodLiquidity := TotalBidVolume > MinLiquidity AND TotalAskVolume > MinLiquidity;
NormalSpread := Spread <= MaxSpread * MINDIFF;
// 买入信号:订单流正向 + 买盘优势 + 成交量放大
BuySignal := OrderFlow > 0 AND
BidAskRatio > OrderImbalanceRatio AND
LastVolume > VolumeThreshold AND
PriceChange > 0 AND
GoodLiquidity AND
NormalSpread AND
IsCoolDownOver;
// 卖出信号:订单流负向 + 卖盘优势 + 成交量放大
SellSignal := OrderFlow < 0 AND
BidAskRatio < 1/OrderImbalanceRatio AND
LastVolume > VolumeThreshold AND
PriceChange < 0 AND
GoodLiquidity AND
NormalSpread AND
IsCoolDownOver;
// 止损止盈计算
IF LongPosition THEN BEGIN
EntryPrice := TAVGENTERPRICEEX2('','',0);
StopLossPrice := EntryPrice - StopLossTicks * MINDIFF;
TakeProfitPrice := EntryPrice + TakeProfitTicks * MINDIFF;
END;
IF ShortPosition THEN BEGIN
EntryPrice := TAVGENTERPRICEEX2('','',1);
StopLossPrice := EntryPrice + StopLossTicks * MINDIFF;
TakeProfitPrice := EntryPrice - TakeProfitTicks * MINDIFF;
END;
// 交易执行逻辑
IF IsTradingTime AND NoPosition THEN BEGIN
// 买入执行
IF BuySignal AND NOT(TISREMAIN(1)) THEN BEGIN
TBUY(1, PositionSize, MKT);
LastTradeTime := CurrentTime;
END;
// 卖出执行
IF SellSignal AND NOT(TISREMAIN(3)) THEN BEGIN
TBUYSHORT(1, PositionSize, MKT);
LastTradeTime := CurrentTime;
END;
END;
// 平仓逻辑
IF IsTradingTime THEN BEGIN
// 多头平仓
IF LongPosition AND (CLOSE <= StopLossPrice OR CLOSE >= TakeProfitPrice) AND NOT(TISREMAIN(2)) THEN
TSELL(1, TBUYHOLDINGEX('','',1), MKT);
// 空头平仓
IF ShortPosition AND (CLOSE >= StopLossPrice OR CLOSE <= TakeProfitPrice) AND NOT(TISREMAIN(4)) THEN
TSELLSHORT(1, TSELLHOLDINGEX('','',1), MKT);
END;
// 收盘前强制平仓
IF CurrentTime >= TradeEndTime AND (LongPosition OR ShortPosition) THEN BEGIN
IF LongPosition THEN
TSELL(1, TBUYHOLDINGEX('','',1), MKT);
IF ShortPosition THEN
TSELLSHORT(1, TSELLHOLDINGEX('','',1), MKT);
END;
// 盘口监控(调试用)
// DRAWKLINE(DYNAINFO(5),DYNAINFO(6),DYNAINFO(4),DYNAINFO(7));
// DRAWICON(BuySignal, LOW, 1);
// DRAWICON(SellSignal, HIGH, 2);
补充内容 (2025-10-29 23:21):
你好老师:帮我修改一下策略,提示VARS:LastTradeTime(0);这个代码没定义,给看看是什么问题。
补充内容 (2025-10-29 23:21):
你好老师:帮我修改一下策略,提示VARS:LastTradeTime(0);这个代码没定义,给看看是什么问题。
补充内容 (2025-10-29 23:25):
// 冷却时间控制
VARS:LastTradeTime(0);
IF BARPOS = 1 THEN LastTradeTime := 0; 给看看这段代码什么问题 |
|