﻿<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.hs633.com:8080/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.hs633.com:8080/index.php?action=history&amp;feed=atom&amp;title=C%EF%BC%83%E6%89%A9%E5%B1%95</id>
		<title>C＃扩展 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.hs633.com:8080/index.php?action=history&amp;feed=atom&amp;title=C%EF%BC%83%E6%89%A9%E5%B1%95"/>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=C%EF%BC%83%E6%89%A9%E5%B1%95&amp;action=history"/>
		<updated>2026-06-09T22:16:57Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=C%EF%BC%83%E6%89%A9%E5%B1%95&amp;diff=2776&amp;oldid=prev</id>
		<title>Coogle: 以“嵌入C＃脚本和嵌入 VBScript 脚本类似.&lt;br&gt; 嵌入 VBScript  使用&lt;% %&gt; &lt;br&gt; 嵌入 C＃多加一个＃ 就是 &lt;%＃ %&gt; &lt;br&gt;   C#脚本有三种运行模...”为内容创建页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=C%EF%BC%83%E6%89%A9%E5%B1%95&amp;diff=2776&amp;oldid=prev"/>
				<updated>2015-03-03T04:29:49Z</updated>
		
		<summary type="html">&lt;p&gt;以“嵌入C＃脚本和嵌入 VBScript 脚本类似.&amp;lt;br&amp;gt; 嵌入 VBScript  使用&amp;lt;% %&amp;gt; &amp;lt;br&amp;gt; 嵌入 C＃多加一个＃ 就是 &amp;lt;%＃ %&amp;gt; &amp;lt;br&amp;gt;   C#脚本有三种运行模...”为内容创建页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;最新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;嵌入C＃脚本和嵌入 VBScript 脚本类似.&amp;lt;br&amp;gt;&lt;br /&gt;
嵌入 VBScript  使用&amp;lt;% %&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
嵌入 C＃多加一个＃ 就是 &amp;lt;%＃ %&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C#脚本有三种运行模式&lt;br /&gt;
模式1&amp;lt;br&amp;gt;&lt;br /&gt;
 #MAINCHART&lt;br /&gt;
 涨停价:C;&lt;br /&gt;
 &amp;lt;%#&lt;br /&gt;
 float[] ztj = (float[])GetVarData(&amp;quot;涨停价&amp;quot;);&lt;br /&gt;
 for (int i = 0; i &amp;lt; ztj.Length; i++)&lt;br /&gt;
       ztj[i] = ztj[i] * (float)1.1;&lt;br /&gt;
 SetVarData(&amp;quot;涨停价&amp;quot;, ztj);&lt;br /&gt;
 %&amp;gt;&lt;br /&gt;
这是极简模式，通过GetVarData和SetVarData传入和传出数据。&lt;br /&gt;
&lt;br /&gt;
模式2：&amp;lt;br&amp;gt;&lt;br /&gt;
 #MAINCHART &lt;br /&gt;
 涨停价:C;&lt;br /&gt;
 &amp;lt;%#&lt;br /&gt;
 using System;&lt;br /&gt;
 using System.Collections.Generic;&lt;br /&gt;
 using System.Linq;&lt;br /&gt;
 using System.Text;&lt;br /&gt;
 using fox.api;&lt;br /&gt;
 namespace N{&lt;br /&gt;
     //  从 fox.api.Formula 继承 这样才能用 GetVarData, SetVarData&lt;br /&gt;
     //  完整模式，需要定义命名空间，类，还必须定义个  Execute 函数作为入口点&lt;br /&gt;
     public class Class1 : Formula{&lt;br /&gt;
       public void Execute(){&lt;br /&gt;
         float[] ztj = (float[])GetVarData(&amp;quot;涨停价&amp;quot;);&lt;br /&gt;
         for (int i = 0; i &amp;lt; ztj.Length; i++)&lt;br /&gt;
           ztj[i] = CalcZTJ(ztj[i]) ;&lt;br /&gt;
         SetVarData(&amp;quot;涨停价&amp;quot;, ztj);&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       public float CalcZTJ(float fPrice){&lt;br /&gt;
        return fPrice*(float)1.1;&lt;br /&gt;
     }  &lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
模式2必须定义命名空间N、类Class1&amp;lt;br&amp;gt;&lt;br /&gt;
其中，类Class1必须继承fox.api.Formula。&amp;lt;br&amp;gt;&lt;br /&gt;
Formula类预定义了入口接口Execute。&amp;lt;br&amp;gt;&lt;br /&gt;
用户实现Excute，公式在运行时会自动调用Execute。&amp;lt;br&amp;gt;&lt;br /&gt;
这种模式的好处是可以实现较为复杂的功能，如上例所示，可以在脚本内部定义子函数alcZTJ为Execute所使用。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
模式3：&amp;lt;br&amp;gt;&lt;br /&gt;
在脚本里定义函数，然后在公式里显式调用，就像调用dll里的函数一样&lt;br /&gt;
 // 新dll接口调用规范只能在逐根模式下运行，因此要RUN_BY_BAR &lt;br /&gt;
 // 此公式适用于日线&lt;br /&gt;
 #MainChart&lt;br /&gt;
 #RUN_BY_BAR &lt;br /&gt;
 #NoDefaultOutPut&lt;br /&gt;
 // 这个函数声明表示 嵌入脚本里面 命名空间N中类名为Class1的成员函数my_ma&lt;br /&gt;
 extern void  N.Class1.my_ma(NumericSeries resultArray, NumericSeries array1, int n, int barpos);&lt;br /&gt;
 //C#脚本实现函数my_ma                                                                &lt;br /&gt;
 &amp;lt;%#&lt;br /&gt;
 namespace N&lt;br /&gt;
 {&lt;br /&gt;
      public class Class1&lt;br /&gt;
      {&lt;br /&gt;
         public void my_ma(ref float[] resultArray,  float[] array, int n, int barpos)&lt;br /&gt;
        {&lt;br /&gt;
            int nK = barpos - 1;&lt;br /&gt;
            if (barpos &amp;gt;= n)&lt;br /&gt;
            {&lt;br /&gt;
                float sum = 0;&lt;br /&gt;
                for (int i = 0; i &amp;lt; n; i++)&lt;br /&gt;
                   sum += array[nK - i];&lt;br /&gt;
                resultArray[nK] = sum / n;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
              resultArray[nK] = float.NaN;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
 %&amp;gt;&lt;br /&gt;
 ma1:0;&lt;br /&gt;
 my_ma(ma1, close, 5, barpos);//注意调用my_ma必须放在脚本后面调用&lt;br /&gt;
&lt;br /&gt;
如上例所示，在脚本中定义了函数my_ma,然后在脚本之外调用&lt;/div&gt;</summary>
		<author><name>Coogle</name></author>	</entry>

	</feed>