等级: 免费版
- 注册:
- 2022-8-22
- 曾用名:
|
// 策略参数 INPUT:买入一档(385,1,1100,1), 卖出一档(320,1,1100,1), 步长(40,1,100,1),基础手数(5,1,100,1); // 文件路径配置(需手动创建C盘目录)STRING filePath = "C:\\StrategyData\\"; // 必须预先创建此目录 STRING nFile = filePath + "N_State.txt"; STRING mFile = filePath + "M_State.txt"; // 全局变量初始化 VARIABLE: N=0, M=0, LastBasis=0, LastSellBasis=0, InitFlag=0; // 初始化模块(安全读取方案)IF BARPOS=1 AND InitFlag=0 THEN BEGIN // 读取N值(金字塔专用读取方式) tempN := FILEREADNUM(nFile, 0); IF tempN >= 0 THEN N := tempN; // 有效值判断 // 读取M值 tempM := FILEREADNUM(mFile, 0); IF tempM >= 0 THEN M := tempM; // 强制写入初始值 FILEWRITE(nFile, NUMTOSTR(N)); FILEWRITE(mFile, NUMTOSTR(M)); InitFlag := 1;END // 日期过滤 RQ:DATE>1251231;IF RQ THEN EXIT; // 参数变更检测 IF 买入一档 <> LastBasis THEN BEGIN N := 0; FILEWRITE(nFile, NUMTOSTR(N)); LastBasis := 买入一档;END IF 卖出一档 <> LastSellBasis THEN BEGIN M := 0; FILEWRITE(mFile, NUMTOSTR(M)); LastSellBasis := 卖出一档;END // 账户配置 账户:='13832956801';JC:="AY05$CLOSE"-"B05$CLOSE"; // 交易日初始化(双重保障)IF TODAYBAR=1 THEN BEGIN N := 0; M := 0; FILEWRITE(nFile, '0'); FILEWRITE(mFile, '0');END // 交易信号模块(增加订单状态校验)// 买入条件1:初始加仓 IF JC >= 买入一档 AND JC <= 买入一档+3 THEN BEGIN IF TISPRVREMAIN(1,账户,'AY05')=0 THEN BEGIN // 检查未持仓 TBUY(1,基础手数,LMT,DYNAINFO(54)+3,0,账户,'AY05'); TBUYSHORT(1,基础手数,MKT,0,0,账户,'B05'); N := N + 1; FILEWRITE(nFile, NUMTOSTR(N)); END END // 买入条件2:阶梯加仓 ELSE IF JC >= 买入一档 - N*步长 AND JC < 买入一档 - N*步长+3 THEN BEGIN IF TISPRVREMAIN(1,账户,'AY05') < (N+1)*基础手数 THEN BEGIN TBUY(1,基础手数,LMT,DYNAINFO(54)+3,0,账户,'AY05'); TBUYSHORT(1,基础手数,MKT,0,0,账户,'B05'); N := N + 1; FILEWRITE(nFile, NUMTOSTR(N)); END END // 卖出条件1:初始减仓 IF JC>=卖出一档 AND JC <= 卖出一档+3 THEN BEGIN IF TISPRVREMAIN(3,账户,'B05') > 0 THEN BEGIN TSELL(1,基础手数,MKT,0,0,账户,'AY05'); TSELLSHORT(1,基础手数,LMT,DYNAINFO(54)+3,0,账户,'B05'); M := M + 1; FILEWRITE(mFile, NUMTOSTR(M)); END END // 卖出条件2:阶梯减仓 ELSE IF JC <= 卖出一档 + M*步长 AND JC >= 卖出一档 + M*步长-3 THEN BEGIN IF TISPRVREMAIN(3,账户,'B05') > M*基础手数 THEN BEGIN TSELL(1,基础手数,MKT,0,0,账户,'AY05'); TSELLSHORT(1,基础手数,LMT,DYNAINFO(54)+3,0,账户,'B05'); M := M + 1; FILEWRITE(mFile, NUMTOSTR(M)); END END // 持仓强制同步模块 IF BARSTATUS=2 THEN BEGIN REAL_N := TISPRVREMAIN(1,账户,'AY05')/基础手数; REAL_M := TISPRVREMAIN(3,账户,'B05')/基础手数; IF REAL_N <> N THEN BEGIN DEBUG('持仓校正N:',REAL_N); N := REAL_N; FILEWRITE(nFile, NUMTOSTR(N)); END IF REAL_M <> M THEN BEGIN DEBUG('持仓校正M:',REAL_M); M := REAL_M; FILEWRITE(mFile, NUMTOSTR(M)); END END 可以帮忙看一下,函数未定义是怎么回事吗?
可以帮忙看一下,函数未定义是怎么回事吗?
|
|