乐于分享
好东西不私藏

主流程序化交易软件的代码模板(一)均线指标

主流程序化交易软件的代码模板(一)均线指标

逻辑案例:

X日均线上穿Y日均线→ 开多信号参考

X日均线下穿Y日均线→ 平多信号参考

Y日均线上穿X日均线→ 开空信号参考

Y日均线下穿X日均线→ 平空信号参考

一、文华财经麦语言代码演示

// 参数设置 

INPUT: M1(X), M2(Y); // 短均线、长均线周期 

// 计算均线 

MA X: MA(C, M1); 

MA Y: MA(C, M2); 

// 信号条件

COND1:= CROSS(MA X, MA Y); // 金叉:开多 

COND2:= CROSSDOWN(MA X, MA Y); // 死叉:平多 

COND3:= CROSS(MA Y, MA X); // 死叉反向:开空 

COND4:= CROSSDOWN(MA Y, MA X); // 金叉反向:平空 

// 交易指令 

IF COND1 THEN BEGIN 

BK(1); // 开多1手 

END; 

IF COND2 THEN BEGIN 

SP(1); // 平多1手 

END; 

IF COND3 THEN BEGIN 

SK(1); // 开空1手 

END; 

IF COND4 THEN BEGIN 

BP(1); // 平空1手 

END;

【注解】

BK = 买开(多单)

SP = 卖平(平多)

SK = 卖开(空单)

BP = 买平(平空)

默认1 手、市价、当前 K 线收盘执行


二、通达信期货通代码演示

(双均线交易信号参考:XY均线多空双向}

MA X:MA(C,X);

MA Y:MA(C,Y);

COND1:= CROSS(MA X, MA Y); // 金叉:开多 

COND2:= CROSS(MA Y, MA X); // 死叉:平多 

COND3:= CROSS(MA Y, MA X); // 死叉反向:开空 

COND4:= CROSS(MA X, MA Y); // 金叉反向:平空

(图标标记}

DRAWICON(开多,L*0.98,1);{红箭头开多}

DRAWICON(平多,H*1.02,2);{绿箭头平多}

DRAWICON(开空,H*1.02,18);{蓝箭头开空}

DRAWICON(平空,L*0.98,19);{紫箭头平空}

【注解】

红箭头↑:X日上穿Y→ 开多

绿箭头↓:X日下穿Y→ 平多

蓝箭头↓:Y日上穿X→ 开空

紫箭头↑:Y日下穿X→ 平空


三、无限易程序化软件

无限易Python版代码演示

definitialize(context):

#设置参数

context.set_parameter(“fast_period”X)

context.set_parameter(“slow_period”Y)

defhandle_bar(context, bars):

#获取参数

fast = context.get_parameter(“fast_period”)

slow = context.get_parameter(“slow_period”)

#获取当前合约K线

bar = bars[0]

#计算均线

ma_fast = bar.ma(close=True, period=fast)

ma_slow = bar.ma(close=True, period=slow)

#交叉判断

cross_up = bar.cross_up(ma_fast, ma_slow)#X上穿Y

cross_down = bar.cross_down(ma_fast, ma_slow) #X下穿Y

cross_short = bar.cross_up(ma_slow, ma_fast) #Y上穿X

cross_cover = bar.cross_down(ma_slow, ma_fast) #Y下穿X

#获取持仓

pos_long = context.get_position_long()

pos_short = context.get_position_short()

#开多

if cross_up and pos_long == 0and pos_short == 0:

context.buy_open(volume=1)

#平多

if cross_down and pos_long > 0:

context.sell_close(volume=pos_long)

#开空

if cross_short and pos_long == 0and pos_short == 0:

context.sell_open(volume=1)

#平空

if cross_cover and pos_short > 0:

context.buy_close(volume=pos_short)

无限易拖拽式可视化编辑器操作步骤

1、打开无限易 → 策略 → 新建“可视化策略”

2、拖入2个“MA均线”指标

MA1:周期X

MA2:周期Y

3、拖入4个“交叉判断”节点

CROSS (MA X, MA Y) → 开多

CROSSDOWN (MA X, MA Y) → 平多

CROSS (MA Y, MA X) → 开空

CROSSDOWN (MA Y, MA X) → 平空

4、拖入交易指令:

买开/ 卖平 / 卖开 / 买平

5、连线:

金叉→ 买开

死叉→ 卖平

空头金叉→ 卖开

空头死叉→ 买平

6、设置手数 1,启用持仓判断,避免重复开仓

【注解】

X上穿→ cross_up → 开多

X下穿Y→ cross_down → 平多

Y上穿X→ 开空信号

Y下穿X→ 平空信号

四、金字塔代码演示

MA X:MA(C,X);

MA Y:MA(C,Y);

//开多条件

COND_BUY:=CROSS (MA X,MA Y);

//平多条件

COND_SELL:=CROSSDOWN(MA X,MA Y);

//开空条件

COND_SHORT:=CROSS (MA Y,MA X);

//平空条件

COND_COVER:=CROSSDOWN(MA Y,MA X);

//交易指令

IFCOND_BUY THENBUY(1,C,MARKET);     //开多1手

IFCOND_SELL THENSELL(1,C,MARKET);   //平多1手

IFCOND_SHORT THENSHORT(1,C,MARKET); //开空1手

IFCOND_COVER THENCOVER(1,C,MARKET); //平空1手

【注解】

BUY:开多

SELL:平多

SHORT:开空

COVER:平空

HOLDING>0:持有多单

HOLDING<0:持有空单

MARKET:市价下单


五、交易开拓者(TB)代码演示

//1.定义变量

VAR:

MA X(0),   //X日均线

MA Y(0);   //Y日均线

//2.初始化(只运行一次)

Once Begin

MA X:= 0;

MA Y:= 0;

End;

//3.计算指标值

MA X := Average(Close, X);

MA Y := Average(Close, Y);

//4.定义交易信号

//多单逻辑

IfCrossOver(MA X, MA YThen

Buy(1, Close);           //金叉开多

IfCrossUnder(MA X, MA YThen

Sell(1, Close);          //死叉平多

//空单逻辑

IfCrossUnder(MA Y, MA XThen

Short(1, Close);         //死叉开空

IfCrossOver(MA Y, MA XThen

Cover(1, Close);         //金叉平多

【注解】

Buy:开多

Sell平多

Short开空

Cover平空


六、MC(MultiCharts) 代码演示

[IntrabarOrderGeneration = False]

//1.定义参数(可在图表上调整)

Inputs:

LengthFast(X),          //短周期

Lengthslow(Y);          //长周期

//2.计算均线

Vars:

MAFast(0),

MASlow(0);

MAFast = Average(Close, LengthFast);

MASlow = Average(Close, LengthSlow);

//3.绘图(可选,为了看均线)

Plot1(MAFast, “MA X”);

Plot2(MASlow, “MA Y”);

//4.交易逻辑

//多单流程:X上穿Y开多,下穿平多

IfCrossOver(MAFast, MASlow) Then

Buy(“Long”) Next Bar At Market; //开多

IfCrossUnder(MAFast, MASlow) Then

Sell(“LongCover”) Next Bar At Market; //平多

//空单流程:Y上穿X开空,下穿平空

IfCrossOver(MASlow, MAFast) Then

Short(“Short”) Next Bar At Market; //开空

IfCrossUnder(MASlow, MAFast) Then

Cover(“ShortCover”) Next Bar At Market; //平空

【注解】

Buy:开多

Sell平多

Short开空

Cover平空

备注:期市有风险,入市需谨慎以上代码演示内容来源于各软件官网资料的整理,实际功能、使用效果可能因软件版本、硬件环境、网络条件等因素存在差异,最新规则请以各软件官网公告为准。期货公司不参与上述软件的开发、维护及策略效果验证,亦不对其准确性、完整性、适用性及盈利性作任何明示或暗示的保证。市场环境、波动特征、流动性等因素均可能发生显著变化,导致策略失效或产生较大亏损。程序化交易依赖网络、硬件、软件环境及数据源等多项技术条件,可能出现延迟、中断、错误信号、重复发单或未成交等情况,进而造成意外损失。不同软件在函数定义、信号触发时机、K线计算方式、撮合规则等方面存在差异,同一策略在不同平台上的执行结果可能不同。参数设置(如均线周期)亦可能对策略表现产生重大影响,不当的参数选择会放大风险。以上码演示内容不构成任何交易建议,使用者应当根据自身的风险承受能力、投资经验及财务状况,独立作出交易决策并承担全部交易风险。

(如需就文中量化与程序化交易相关内容进行探讨,可扫码联系获取更多有关投教资料)

期市有风险,入市需谨慎。页面信息仅供参考,不构成任何交易建议及保本保收益承诺,量化交易存在固有风险,无论使用何种软件均不保证交易盈利,过往策略回测业绩不代表未来实盘收益。期货开户需完成交易者分类,适配风险承受能力,交易者需根据自身的风险承受能力自主作出交易决策并承担交易风险。