金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 34|回复: 2

代码问题

[复制链接]

39

主题

86

帖子

86

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
发表于 2025-10-29 23:19 | 显示全部楼层 |阅读模式
// 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);




你好老师:帮我修改一下策略,提示VARS:LastTradeTime(0);这个代码没定义,给看看是什么问题。
回复

使用道具 举报

39

主题

86

帖子

86

积分

Rank: 4

等级: 专业版

注册:
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;   给看看这段代码什么问题
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-30 08:55 | 显示全部楼层
// 输入参数
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);    // 最小盘口流动性(手)

// 计算当前时间
CurrentTime1 := TIME;
IsTradingTime := CurrentTime1 >= TradeStartTime AND CurrentTime1 <= TradeEndTime;

// 盘口数据采集
BidPrice1 := DYNAINFO(20);  // 买一价
AskPrice1 := DYNAINFO(34);  // 卖一价
MidPrice := (BidPrice1 + AskPrice1)/2;
Spread := AskPrice1 - BidPrice1;

// 多档盘口量能分析
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;

// 冷却时间控制
IF BARPOS = 1 THEN LastTradeTime := 0;

SecondsSinceLast := CurrentTime1 - LastTradeTime;
IsCoolDownOver := SecondsSinceLast >= 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 := CurrentTime1;
    END;
   
    // 卖出执行
    IF SellSignal AND NOT(TISREMAIN(3)) THEN BEGIN
        TBUYSHORT(1, PositionSize, MKT);
        LastTradeTime := CurrentTime1;
    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 CurrentTime1 >= 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);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-11-3 09:35 , Processed in 0.135758 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表