简语言代码求助
#====全部预先设置好,可手动修改数值,自动运行====# ----------------【第1区:库导入区】----------------import datetimefrom InfinityTrader import *# ----------------【第3区:全局记忆变量区】----------------# ========== 全局标记锁(循环外部,只初始化一次)==========trade_lock = Falselong_high = 0 # 多单持仓最高价short_low = 0 # 空单持仓最低价# ----------------【第2区:参数配置区】----------------# ========== 参数区(0 = 关闭对应条件)==========# 做多参数long_entry_price = 3636 # 做多开仓价,0关闭价格条件long_sl = 10 # 做多差价止损点数long_tp_back = 10 # 做多移动止盈回撤点数# 做空参数short_entry_price = 0 # 做空开仓价,0关闭价格条件short_sl = 0 # 做空差价止损点数short_tp_back = 0 # 做空移动止盈回撤点数# 日期时间条件end_d = 0 # 目标日期,0关闭日期条件end_h = 0 # 目标小时,0关闭时分条件end_m = 0 # 目标分钟,0关闭时分条件# ----------------【第4区:条件判断函数区,只做判断,不下单不改锁】----------------# ========== 单层def函数区【只做条件判断,不操作下单、不修改锁】 ==========def check_date_condition(now_year, now_month, now_day): """日期条件判断""" cond = ((end_y == 0 and end_md == 0 and end_d == 0) or (now_year == end_y and now_month == end_md and now_day == end_d)) return conddef check_time_condition(now_h, now_m): """时间条件判断""" cond = ((end_h == 0 and end_m == 0) or (now_h == end_h and now_m == end_m)) return conddef check_long_open_signal(current_price): """做多开仓价格条件""" cond = (long_entry_price == 0) or (current_price <= long_entry_price) return conddef check_short_open_signal(current_price): """做空开仓价格条件""" cond = (short_entry_price == 0) or (current_price >= short_entry_price) return cond# =================主循环,持续循环盯盘================while True: # 3 识别环节(识别器):获取现实数据 current_price = get_price() #读取当前价格 pos_long = get_long_pos() #读取当前多头持仓 pos_short = get_short_pos() #读取当前空头持仓 # 做多if current_price <= long_entry_price and pos_long == 0 and not trade_lock: open_long() trade_lock = True # 做空if current_price >= short_entry_price and pos_short == 0 and not trade_lock: open_short() trade_lock = True # 4 函数计算器:做计算对比,只输出结果,不干活 cond_result long = check_long_open_signal(current_price) cond_result_short = check_short_open_signal(current_price) # 时间条件计算器 cond_time = check_date_condition(now_year, now_month, now_day) # 5 主逻辑总指挥:校验条件,决定是否放行 # 做多:价格条件 + 时间条件 + 参数不为0 + 无持仓 + 未上锁if cond_result and long_entry_price != 0 and pos_long == 0 and (not trade_lock): open_long(price = long_entry_price) # 做空 [限价开仓] trade_lock = True # 上锁,防止重复开仓 # 做空:价格条件 + 时间条件 + 参数不为0 + 无持仓 + 未上锁 if cond_result_short and short_entry_price != 0 and pos_short == 0 and (not trade_lock): open_short(price = short_entry_price) # 做空 [限价开仓] trade_lock = True # 上锁,防止重复开仓 sleep(1) #间隔1秒循环一次,不要疯狂占用CPU// 麦语言模型:修正全局变量位置// 步骤1:全局变量初始化(必须在模型最开始部分)VARIABLE: TRADE_LOCK := 0, LONG_HIGH := 0, SHORT_LOW := 0;// 步骤2:参数定义LONG_ENTRY_PRICE := 3636; // 做多开仓价SHORT_ENTRY_PRICE := 0; // 做空开仓价,0表示关闭LONG_SL := 10; // 做多止损点数SHORT_SL := 0; // 做空止损点数LONG_TP_BACK := 10; // 做多移动止盈回撤点数SHORT_TP_BACK := 0; // 做空移动止盈回撤点数END_D := 0; // 目标日期END_H := 0; // 目标小时END_M := 0; // 目标分钟// 步骤3:开仓条件判断// 做多开仓:价格条件 + 参数有效 + 无持仓 + 锁未激活LONG_OPEN := C <= LONG_ENTRY_PRICE && LONG_ENTRY_PRICE > 0 && BKVOL = 0 && SKVOL = 0 && TRADE_LOCK = 0;// 做空开仓:价格条件 + 参数有效 + 无持仓 + 锁未激活SHORT_OPEN := C >= SHORT_ENTRY_PRICE && SHORT_ENTRY_PRICE > 0 && BKVOL = 0 && SKVOL = 0 && TRADE_LOCK = 0;// 开仓执行LONG_OPEN, BK;SHORT_OPEN, SK;// 开仓后上锁并初始化跟踪变量IF LONG_OPEN THEN BEGIN TRADE_LOCK := 1; LONG_HIGH := C;ENDIF SHORT_OPEN THEN BEGIN TRADE_LOCK := 1; SHORT_LOW := C;END// 步骤4:止损止盈逻辑// 多头止损止盈IF BKVOL > 0 THEN BEGIN // 更新持仓期间最高价 IF C > LONG_HIGH THEN LONG_HIGH := C; // 固定止损 LONG_SL_HIT := C <= BKPRICE - LONG_SL * MINPRICE; // 移动止盈 LONG_TP_HIT := C <= LONG_HIGH - LONG_TP_BACK * MINPRICE; // 平仓信号 LONG_EXIT := LONG_SL_HIT OR LONG_TP_HIT; LONG_EXIT, SP; IF LONG_EXIT THEN BEGIN TRADE_LOCK := 0; LONG_HIGH := 0; ENDEND// 空头止损止盈IF SKVOL > 0 THEN BEGIN // 更新持仓期间最低价 IF C < SHORT_LOW THEN SHORT_LOW := C; // 固定止损 SHORT_SL_HIT := C >= SKPRICE + SHORT_SL * MINPRICE; // 移动止盈 SHORT_TP_HIT := C >= SHORT_LOW + SHORT_TP_BACK * MINPRICE; // 平仓信号 SHORT_EXIT := SHORT_SL_HIT OR SHORT_TP_HIT; SHORT_EXIT, BP; IF SHORT_EXIT THEN BEGIN TRADE_LOCK := 0; SHORT_LOW := 0; ENDEND// 步骤5:时间风控// 收盘前1分钟强制平仓IF TIME >= 145900 AND TIME < 150000 THEN BEGIN IF BKVOL > 0 THEN SP; IF SKVOL > 0 THEN BP;END// 步骤6:信号过滤AUTOFILTER;