[PEL] 复制代码 INPUT:SS(8000,100,10000,100);
MA5: MA(CLOSE, 5); // 5日均线
MA10: MA(CLOSE, 10); // 10日均线
// 定义全局变量:记录初始持仓量和当前持仓状态
VARIABLE: initial_lots := 0; // 记录初始买入的手数,初始为0
VARIABLE: current_lots := 0; // 记录当前剩余持仓的手数,初始为0
VARIABLE: half_sold := 0; // 标记是否已卖出一半持仓,0表示未卖出,1表示已卖出
基准价:=CALLSTOCK('',VTCLOSE,6,-1);//基准价
// 买入条件:MA5上穿MA10时,买入8手股票
if CROSS(MA5, MA10) and HOLDING = 0 then
begin
BUY(1, ss, MARKET); // 以市价买入8手
initial_lots := ENTERVOL; // 记录初始买入量为8手
current_lots := ENTERVOL; // 当前持仓量初始化为8手
half_sold := 0; // 重置卖出一半的标记为未卖出
end
可用:HOLDING-DAYHOLDING;
if time>=093500 and time<=145500 THEN
begin
// 卖出条件1:价格上涨5%,卖出一半持仓(4手),仅执行一次
if 可用 > 0 and (CLOSE / 基准价 - 1) >= 0.08 and half_sold = 0 and current_lots = initial_lots then
begin
止盈1:SELL(1, initial_lots / 2, MARKET); // 卖出初始买入量的一半(4手)
current_lots := current_lots / 2; // 更新当前持仓量为4手
half_sold := 1; // 标记已卖出一半持仓,避免重复触发
end
// 卖出条件2:价格上涨15%以上,卖出全部持仓
if 可用 > 0 and (CLOSE / 基准价 - 1) >= 0.2 then
begin
止盈2:SELL(1, HOLDING, MARKET); // 卖出全部持仓
initial_lots := 0; // 清空初始持仓量
current_lots := 0; // 清空当前持仓量
half_sold := 0; // 重置卖出一半的标记
end
// 卖出条件3:价格下跌7%,卖出一半持仓(4手),仅执行一次
if 可用 > 0 and (1 - CLOSE / 基准价) >= 0.05 and half_sold = 0 and current_lots = initial_lots then
begin
止损1:SELL(1, initial_lots / 2, MARKET); // 卖出初始买入量的一半(4手)
current_lots := current_lots / 2; // 更新当前持仓量为4手
half_sold := 1; // 标记已卖出一半持仓,避免重复触发
end
// 卖出条件4:价格下跌10%,卖出全部持仓
if 可用 > 0 and (1 - CLOSE / 基准价) >= 0.095 then
begin
止损2:SELL(1, HOLDING, MARKET); // 卖出全部持仓
initial_lots := 0; // 清空初始持仓量
current_lots := 0; // 清空当前持仓量
half_sold := 0; // 重置卖出一半的标记
end
end
浮动盈亏百分比:OPENPROFITPER; |