
等级: 新手上路
- 注册:
- 2025-3-8
- 曾用名:
|
// 参数定义
VARIABLE:BUY_SIGNAL=0, SELL_SIGNAL=0; // 买卖信号
VARIABLE:STOP_LOSS=0, STOP_PROFIT=0; // 止损和止盈点
VARIABLE:LAST_HIGH=0, LAST_LOW=0; // 前一根K线的最高价和最低价
VARIABLE:ENTRY_PRICE=0; // 进场价格
// 缓存REF的值
VARIABLE:REF_H1=REF(H, 1); // 前一根K线的最高价
VARIABLE:REF_H2=REF(H, 2); // 前两根K线的最高价
VARIABLE:REF_L1=REF(L, 1); // 前一根K线的最低价
VARIABLE:REF_L2=REF(L, 2); // 前两根K线的最低价
// 定义顶分型和底分型
TOP_PATTERN := REF_H2 > REF_H1 AND REF_H1 < H; // 顶分型:中间K线高点低于左右两侧
BOTTOM_PATTERN := REF_L2 < REF_L1 AND REF_L1 > L; // 底分型:中间K线低点高于左右两侧
// 多头进场条件:底分型第三根K线实体最低点买入
IF BOTTOM_PATTERN AND REF(BOTTOM_PATTERN, 1) = 0 THEN BEGIN
BUY_SIGNAL := 1;
ENTRY_PRICE := L; // 以底分型第三根K线最低点作为进场价格
STOP_LOSS := L - 1; // 止损点为底分型最低点减去一个点
LAST_LOW := REF_L1; // 记录前一根K线的最低点
END;
// 空头进场条件:顶分型第三根K线实体最高点卖出
IF TOP_PATTERN AND REF(TOP_PATTERN, 1) = 0 THEN BEGIN
SELL_SIGNAL := 1;
ENTRY_PRICE := H; // 以顶分型第三根K线最高点作为进场价格
STOP_LOSS := H + 1; // 止损点为顶分型最高点加上一个点
LAST_HIGH := REF_H1; // 记录前一根K线的最高点
END;
// 多头持仓管理
IF HOLDING > 0 THEN BEGIN
// 动态止损:以最新K线的前一根K线最低点减去一个点为止损
STOP_LOSS := MAX(STOP_LOSS, LAST_LOW - 1);
// 止损条件
IF C <= STOP_LOSS THEN BEGIN
多损:SELL(1, 0, MARKET), ORDERQUEUE;
END;
// 止盈条件:以当前K线的前一根K线最低点减去一个点为止盈
STOP_PROFIT := LAST_LOW - 1;
IF C >= STOP_PROFIT THEN BEGIN
多赢:SELL(1, 0, MARKET), ORDERQUEUE;
END;
END;
// 空头持仓管理
IF HOLDING < 0 THEN BEGIN
// 动态止损:以最新K线的前一根K线最高点加上一个点为止损
STOP_LOSS := MIN(STOP_LOSS, LAST_HIGH + 1);
// 止损条件
IF C >= STOP_LOSS THEN BEGIN
空损:SELLSHORT(1, 0, MARKET), ORDERQUEUE;
END;
// 止盈条件:以当前K线的前一根K线最高点加上一个点为止盈
STOP_PROFIT := LAST_HIGH + 1;
IF C <= STOP_PROFIT THEN BEGIN
空赢:SELLSHORT(1, 0, MARKET), ORDERQUEUE;
END;
END;
// 开多单
IF HOLDING = 0 AND BUY_SIGNAL = 1 THEN BEGIN
多开:BUY(1, 1, MARKET), ORDERQUEUE;
BUY_SIGNAL := 0; // 重置信号
END;
// 开空单
IF HOLDING = 0 AND SELL_SIGNAL = 1 THEN BEGIN
空开:BUYSHORT(1, 1, MARKET), ORDERQUEUE;
SELL_SIGNAL := 0; // 重置信号
END;
// 显示当前持仓和资产
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
|
|