查看C#扩展的源代码
←
C#扩展
跳转到:
导航
,
搜索
根据下列原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
嵌入C#脚本和嵌入 VBScript 脚本类似.<br> 嵌入 VBScript 使用<% %> <br> 嵌入 C#多加一个# 就是 <%# %> <br> C#脚本有三种运行模式 模式1<br> #MAINCHART 涨停价:C; <%# float[] ztj = (float[])GetVarData("涨停价"); for (int i = 0; i < ztj.Length; i++) ztj[i] = ztj[i] * (float)1.1; SetVarData("涨停价", ztj); %> 这是极简模式,通过GetVarData和SetVarData传入和传出数据。 模式2:<br> #MAINCHART 涨停价:C; <%# using System; using System.Collections.Generic; using System.Linq; using System.Text; using fox.api; namespace N{ // 从 fox.api.Formula 继承 这样才能用 GetVarData, SetVarData // 完整模式,需要定义命名空间,类,还必须定义个 Execute 函数作为入口点 public class Class1 : Formula{ public void Execute(){ float[] ztj = (float[])GetVarData("涨停价"); for (int i = 0; i < ztj.Length; i++) ztj[i] = CalcZTJ(ztj[i]) ; SetVarData("涨停价", ztj); } public float CalcZTJ(float fPrice){ return fPrice*(float)1.1; } } } %> 模式2必须定义命名空间N、类Class1<br> 其中,类Class1必须继承fox.api.Formula。<br> Formula类预定义了入口接口Execute。<br> 用户实现Excute,公式在运行时会自动调用Execute。<br> 这种模式的好处是可以实现较为复杂的功能,如上例所示,可以在脚本内部定义子函数alcZTJ为Execute所使用。<br> <br> <br> 模式3:<br> 在脚本里定义函数,然后在公式里显式调用,就像调用dll里的函数一样 // 新dll接口调用规范只能在逐根模式下运行,因此要RUN_BY_BAR // 此公式适用于日线 #MainChart #RUN_BY_BAR #NoDefaultOutPut // 这个函数声明表示 嵌入脚本里面 命名空间N中类名为Class1的成员函数my_ma extern void N.Class1.my_ma(NumericSeries resultArray, NumericSeries array1, int n, int barpos); //C#脚本实现函数my_ma <%# namespace N { public class Class1 { public void my_ma(ref float[] resultArray, float[] array, int n, int barpos) { int nK = barpos - 1; if (barpos >= n) { float sum = 0; for (int i = 0; i < n; i++) sum += array[nK - i]; resultArray[nK] = sum / n; } else resultArray[nK] = float.NaN; } } } %> ma1:0; my_ma(ma1, close, 5, barpos);//注意调用my_ma必须放在脚本后面调用 如上例所示,在脚本中定义了函数my_ma,然后在脚本之外调用
返回到
C#扩展
。
个人工具
内存:18897KB
18.221.160.29
该IP地址的讨论
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
金魔方论坛
下载金魔方
帮助
工具箱
链入页面
链出更改
特殊页面