// 声明变量
vars: DailySKDJJ(0), DailyKDJJ(0), HourlySKDJJ(0), HourlyKDJJ(0),
HourlyClose(0), HourlyBBI(0), FifteenMinuteLow(0), FifteenMinuteHigh(0);
// 获取日线周期的SKDJ和KDJ的J线值
DailySKDJJ = SKDJ(9, 3, Close, Daily)[1]; // 获取前一天的J值
DailyKDJJ = KDJ(4, 2, 2, Close, Daily)[1]; // 获取前一天的J值
// 获取60分钟周期的SKDJ和KDJ的J线值
HourlySKDJJ = SKDJ(9, 3, Close, 60)[1]; // 获取前一小时的J值
HourlyKDJJ = KDJ(4, 2, 2, Close, 60)[1]; // 获取前一小时的J值
// 获取60分钟周期的收盘价和BBI值
HourlyClose = Close[60]; // 60分钟周期的收盘价
HourlyBBI = BBI(Close, 60); // 60分钟周期的BBI值
// 获取15分钟周期的前一个底点和高点
FifteenMinuteLow = Lowest(Low, 15 * 4)[1]; // 15分钟周期的前一个底点
FifteenMinuteHigh = Highest(High, 15 * 4)[1]; // 15分钟周期的前一个高点
// 多头条件
if (MarketPosition = 0 and
DailySKDJJ < Ref(DailySKDJJ, -1) and
DailyKDJJ < Ref(DailyKDJJ, -1) and
HourlySKDJJ > Ref(HourlySKDJJ, -1) and
HourlyKDJJ > Ref(HourlyKDJJ, -1) and
HourlyClose > HourlyBBI) then
begin
Buy("Long Entry") next bar at market; // 开多仓
SetStopLoss(FifteenMinuteLow - 0.01); // 设置止损
end;
// 多头平仓条件
if (MarketPosition = 1 and HourlyClose <= HourlyBBI) then
begin
Sell("Long Exit") next bar at market; // 平多仓
end;
// 空头条件
if (MarketPosition = 0 and
DailySKDJJ > Ref(DailySKDJJ, -1) and
DailyKDJJ > Ref(DailyKDJJ, -1) and
HourlySKDJJ < Ref(HourlySKDJJ, -1) and
HourlyKDJJ < Ref(HourlyKDJJ, -1) and
HourlyClose < HourlyBBI) then
begin
SellShort("Short Entry") next bar at market; // 开空仓
SetStopLoss(FifteenMinuteHigh + 0.01); // 设置止损
end;
// 空头平仓条件
if (MarketPosition = -1 and HourlyClose >= HourlyBBI) then
begin
BuyToCover("Short Exit") next bar at market; // 平空仓
end;