Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

C# 已经成为自动交易的标准了?
从 EasyLanguage 迁移到 MC .NET (二):发送订单

从 EasyLanguage 迁移到 MC .NET (一):基本结构

galeki posted @ 2012年9月04日 03:18 in 交易 with tags MC-NET , 4369 阅读

Multicharts .NET 虽然已经正式发布了(以下简称 MC .NET),但是官方坦言说现在只能算是 public beta 的阶段,还是有一些 bugs,所以要想实盘交易还是再等等吧,正好趁这段时间把策略移植过来。

花了很长时间把原来的策略改写为  .NET 版本,官方的文档太少,可以参考的只有 help 文件和自带的例子,还好自己用的策略并不复杂,基本上都已经搞定,这里记录一下基本的迁移方法,如果你已经有现成的 EasyLanguage/PowerLanguage (以下简称 EL)策略,那么照着这个过程基本上可以把大致框架迁移过来。

注:这里的迁移主要指的是交易策略代码的迁移,也就是 Signal,至于 Indicator 和Function,和 Signal 大同小异,参照着来就可以了。

基本结构

在 EL 里,基本的策略代码结构像下面这样(once 的语法似乎只在 PowerLanguage 中才有):

Inputs:
	input1(0), 
	input2(0);
	
Vars:
	var1(0),
	var2(0);
	


once begin
	// code executed only once
end;
	

// strategy code starts here ...
//

而在 MC .NET 中,基本的结构像是这样:

namespace PowerLanguage.Strategy {
	public class Test1 : SignalObject {
		
		// Inputs:
		private int m_input1 = 0;  
		[Input]
        public int Input1{
            get { return m_input1; }
            set { m_input1 = value; }
        }
		
		// Vars:
		private int var1 = 0;
		private int var2 = 0;
		
		public Test1(object _ctx):base(_ctx){}  // default constructor  
		
		protected override void Create() {
			// create variable objects, function objects, order objects etc.
			// executed only once
		}
		protected override void StartCalc() {
			// code executed only once
		}
		protected override void CalcBar(){
		
			// strategy code start here ...
			
		}
	}
}

对应规则如下:

  • 参数 Inputs 对应为 getter setter 属性,并在之前声明 [Input],这样才会被 MC 识别出来。
  • 策略运行时的变量 Vars,直接声明成 private 变量。
  • 默认生成的同名构建函数(第 16 行),无需改动。
  • 基本的函数有三个:Create、StartCalc、CalcBar
    • Create:在策略初始化之前调用,只执行一次,一般在这里初始化各种变量和对象。
    • StartCalc:相当于 EL 的 once,在策略初始化之后只执行一次,一般在这里检查运行环境和设置变量的默认值。
    • CalcBar:相当于 EL 的主程序代码,再每一个 bar/tick 更新之后自动调用。

基本的框架编辑器会自动生成,你只需要在对应的地方声明变量,在对应的函数填入代码即可。

 

  • 无匹配
happy wheels 说:
2017年11月11日 14:44

还好自己用的策略并不复杂,基本上都已经搞定,这里记录一下基本的迁移方法,如果你已经有现成的 EasyLanguage/PowerLanguage (以下简称 EL)策略,那么照着这个过程基本上可以把大致框架迁移过来。!!!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter