
等级: 新手上路
- 注册:
- 2025-2-3
- 曾用名:
|
//开始编写属于您自己的交易指标吧!GO!
开始:OPEN;
// 橡胶期货15分钟策略(金字塔V7.02)
// 版权所有,禁止未经授权商用
//-------------------------------------
// 参数设置
INPUT:
N1(60, '均线周期1'),
N2(144, '均线周期2'),
N3(21, '止损均线周期'),
ADX周期(14, 'ADX强度周期'),
单日止损比例(1, '每日最大亏损%'),
最大仓位(30, '单次仓位%'),
ATR倍数(2, '止损ATR倍数'),
盈亏比(3, '止盈ATR倍数');
VARIABLE:
初始本金 := 1000000, // 假设初始100万
当日初始权益 := 0,
ADX值 := 0,
日线趋势 := 0,
ATR值 := 0,
允许交易 := true;
// 多周期数据引用(日线趋势判断)
日线收盘价 := STKINDI('', 'CLOSE', 0, 6, 0); // 引用日线收盘价
日线MA20 := MA(日线收盘价, 20);
日线趋势 := IFELSE(C>日线MA20, 1, -1);
// 核心指标计算
MA60 := MA(C, N1);
MA144 := MA(C, N2);
MA21 := MA(C, N3);
DIFF, DEA, MACD柱 := MACD(12, 26, 9);
ADX值 := ADX(ADX周期);
ATR值 := ATR(14);
// 量能条件优化(3日平均量对比)
VOL3日均量 := MA(V, 3);
倍量条件 := V > 2*REF(VOL3日均量, 1) AND V > 1.5*REF(V, 1);
放量条件 := V > 1.8*REF(VOL3日均量, 1) AND V > 1.2*REF(V, 1);
// 交易时间控制(尾盘平仓)
尾盘时段 := TIME >= 1455 OR TIME >= 2255; // 日盘14:55, 夜盘22:55
IF 尾盘时段 THEN BEGIN
多单持仓量 := TBUYHOLDINGEX('', '', 1);
空单持仓量 := TSELLHOLDINGEX('', '', 1);
IF 多单持仓量 > 0 THEN TSELL(1, 多单持仓量, MKT);
IF 空单持仓量 > 0 THEN TSELLSHORT(1, 空单持仓量, MKT);
允许交易 := false; // 尾盘禁止开新仓
END;
// 每日初始权益记录
IF BARSTATUS = 2 THEN BEGIN // 每根K线结束时
IF DAYBARPOS = 1 THEN // 当日第一根K线
当日初始权益 := TASSET; // 记录当日初始资金
END;
// 本金保护机制(总权益低于初始值立即停止)
IF TASSET < 初始本金*0.999 AND (TBUYHOLDINGEX('', '', 1) > 0 OR TSELLHOLDINGEX('', '', 1) > 0) THEN BEGIN
TSELL(1, TBUYHOLDINGEX('', '', 1), MKT);
TSELLSHORT(1, TSELLHOLDINGEX('', '', 1), MKT);
RETURN;
END;
// 单日最大亏损控制
IF (当日初始权益 - TASSET)/当日初始权益 > 单日止损比例/100 THEN BEGIN
TSELL(1, TBUYHOLDINGEX('', '', 1), MKT);
TSELLSHORT(1, TSELLHOLDINGEX('', '', 1), MKT);
允许交易 := false;
END;
// 交易信号生成(仅在允许交易时执行)
IF 允许交易 THEN BEGIN
// 做多条件(6重过滤)
多信号 := MA60 > MA144 AND // 均线多头
CROSS(DIFF, DEA) AND DIFF > 0 AND // MACD金叉
倍量条件 AND // 量能验证
日线趋势 = 1 AND // 日线趋势配合
ADX值 > 25 AND // 趋势强度
ATR值 < REF(ATR值, 1)*1.2; // 波动率过滤
// 做空条件(6重过滤)
空信号 := MA60 < MA144 AND
CROSS(DEA, DIFF) AND DIFF < 0 AND
放量条件 AND
日线趋势 = -1 AND
ADX值 > 25 AND
ATR值 < REF(ATR值, 1)*1.2;
// 动态仓位计算(基于波动率)
理论仓位 := 最大仓位 * (ATR值/C)^-1; // ATR越大仓位越小
实际仓位 := MIN(理论仓位, 30); // 不超过30%
// 执行交易
IF 多信号 AND TBUYHOLDINGEX('', '', 1) = 0 THEN BEGIN
TBUY(1, 实际仓位, MKT, 0, 0, '', '多头开仓');
// 止损止盈(自动挂单)
TSELL(1, 0, MKT, C - ATR倍数*ATR值, C + 盈亏比*ATR值, 0, '多单止损止盈');
END
IF 空信号 AND TSELLHOLDINGEX('', '', 1) = 0 THEN BEGIN
TSELLSHORT(1, 实际仓位, MKT, 0, 0, '', '空头开仓');
TBUYSHORT(1, 0, MKT, C + ATR倍数*ATR值, C - 盈亏比*ATR值, 0, '空单止损止盈');
END
END;
// 禁止重复开仓(15分钟冷却)
IF (多信号 OR 空信号) THEN
允许交易 := false;
IF BARPOS > REF(BARPOS, 1) + 3 THEN // 冷却3根15分钟K线(45分钟)
允许交易 := true; |
|