久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    金魔方新特性

     imelee 2015-12-17

    花生網

    標題: 金魔方新特性-嵌入C#腳本 [打印本頁]

    作者: ktdev    時間: 2014-1-19 12:07     標題: 金魔方新特性-嵌入C#腳本

    金魔方新特性-嵌入C#腳本 使用說明
    金魔方支持公式里直接嵌入C#腳本了,感謝 fantasynew 朋友的建議。 CSharp腳本例子.rar (176.68 KB, 下載次數: 170)
    1.如何嵌入 C# 腳本
    嵌入C#腳本和嵌入 VBScript 腳本類似.
    嵌入 VBScript  使用<% %>
    嵌入 C#多加一個# 就是 <%# %>


    以下是一個改自飛狐 VBScript 的例子 改成 C#如下
    1. #MAINCHART
    2. 漲停價:C;
    3. <%#
    4. float[] ztj = (float[])GetVarData("漲停價");
    5. for (int i = 0; i < ztj.Length; i++)
    6.         ztj[i] = ztj[i] * (float)1.1;
    7. SetVarData("漲停價", ztj);
    8. %>
    復制代碼運行代碼


    2.嵌入C#腳本的三種模式
    最簡單的模式就是以上例子里寫的,直接寫C#語句,這種模式的優點是簡單,不需要關心類,對象是什么,缺點是不能定義函數。
    完整的模式則需要理解C#的類,命名空間等,也就是需要寫一個完整的C# 類,優點是可以定義自己的函數來調用,可以用類成員變量來保存狀態等。
    以下是把例1里的腳本改成完整模式
    1. #MAINCHART
    2. 漲停價:C;
    3. <%#
    4. using System;
    5. using System.Collections.Generic;
    6. using System.Linq;
    7. using System.Text;
    8. using fox.api;
    9. namespace N{
    10.     //  從 fox.api.Formula 繼承 這樣才能用 GetVarData, SetVarData
    11.         //  完整模式,需要定義命名空間,類,還必須定義個  Execute 函數作為入口點
    12.     public class Class1 : Formula{
    13.    public void Execute(){
    14.       float[] ztj = (float[])GetVarData("漲停價");
    15.       for (int i = 0; i < ztj.Length; i++)
    16.          ztj[i] = CalcZTJ(ztj[i]) ;
    17.       SetVarData("漲停價", ztj);
    18.    }
    19.    public float CalcZTJ(float fPrice){
    20.          return fPrice*(float)1.1;
    21.    }  
    22.     }
    23. }
    24. %>
    復制代碼運行代碼
    以上是完整模式的例子之一,需要從Formua繼承,并實現 Execute 方法,你也可以定義別函數,并且調用,就像上面的例子里的 定義了一個 CalcZTJ 計算漲停價的函數,并調用。


    另外一種完整模式的用法是:在腳本里定義函數,然后在公式里顯式調用,就像調用dll里的函數一樣
    看以下例子,定義了一個 算 MA的函數,并在公式里調用。
    1. // 新dll接口調用規范只能在逐根模式下運行,因此要RUN_BY_BAR
    2. // 此公式適用于日線
    3. #MainChart
    4. #RUN_BY_BAR
    5. #NoDefaultOutPut
    6. // 這個函數聲明表示 嵌入腳本里面 命名空間N中類名為Class1的成員函數my_ma
    7. extern void  N.Class1.my_ma(NumericSeries resultArray, NumericSeries array1, int n, int barpos);
    8. //C#腳本實現函數my_ma                                                               
    9. <%#
    10. namespace N
    11. {
    12. public class Class1
    13.     {
    14.         public void my_ma(ref float[] resultArray,  float[] array, int n, int barpos)
    15.         {
    16.                         int nK = barpos - 1;
    17.                         if (barpos >= n)
    18.                         {
    19.                                 float sum = 0;
    20.                                 for (int i = 0; i < n; i++)
    21.                                         sum += array[nK - i];
    22.                                 resultArray[nK] = sum / n;
    23.                         }
    24.                         else
    25.                                 resultArray[nK] = float.NaN;
    26.         }

    27.     }
    28. }
    29. %>
    30. ma1:0;
    31. my_ma(ma1, close, 5, barpos);//注意調用my_ma必須放在腳本后面調用
    復制代碼運行代碼


    3.如何在C#腳本調用 COM 組件
    Winddows下,很多第三方庫都是以 COM 組件 dll形式存在的。比如 AutoItX3 ,很人多用來做股票自動下單。
    在金魔方嵌入的C#腳本里,可以使用using 和 import 來 很容易調用這樣的dll.
    以下是調用AutoItX3  來自動控制打開記事本并輸入文字的例子
    1. #MainChart
    2. Variable : 記事本狀態欄上的文字('');
    3. <%#
    4. using AutoItX3Lib;
    5. import AutoItX3.dll;

    6. AutoItX3Lib.AutoItX3Class autoit = new AutoItX3Lib.AutoItX3Class();
    7. autoit.Run("notepad.exe", "", 1);
    8. autoit.WinWaitActive("無標題 -", "", 1);
    9. autoit.Send(" Hello{!}", 0);
    10. string text = autoit.StatusbarGetText("無標題 -", "", 2);
    11. SetVarData("記事本狀態欄上的文字", text);
    12. %>
    13. Comment('已經打開 記事本 并輸入了 Hello\n記事本 狀態欄上的文字是:'+記事本狀態欄上的文字);
    復制代碼運行代碼
    import 后面的dll可以全路徑,也可以直接寫dll名字,如果只寫dll名字,首先會在公式所在路徑找,然后在fmldll找,最后還會在 金魔方根目錄下找,你可以把dll放在以上任意地方。
    using 后面需要寫命名空間,一般來說,如果 import 的是 XXX.dll, using  后面的命名空間 就是 XXXLib


    4.C#腳本如何調試和除錯
    默認情況下,編譯錯誤都是能定位到行號的。
    如果是運行類錯誤或者異常,默認情況是定位不到行號的,需要在 "工具“ 菜單里,選擇 ”C#腳本調試",勾選了這個后,如果有異常可以定位到哪一行的代碼問題。
    另外  勾選了 ”C#腳本調試" 后,在 C# 代碼里 的 Console.WriteLine 函數輸出的信息會在 "公式日志" 窗口里顯示,可以用這個來輸出信息幫助調試。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 18禁裸体动漫美女无遮挡网站| 欧美交A欧美精品喷水| 伊人色综合一区二区三区影院视频| 任你躁国产自任一区二区三区| 狠狠躁夜夜躁人人躁婷婷| 中文字幕人妻在线精品| 伊人久久大香线蕉成人| 国产一区二区三区不卡AV| 97人妻中文字幕总站| 亚洲国产精品无码AAA片| 久久精品第九区免费观看| 7777精品久久久大香线蕉| 成人亚洲av免费在线| 理论片午午伦夜理片久久| 久久精品国产清自在天天线| 真实国产老熟女粗口对白| 日韩高清国产中文字幕| 精品国产午夜肉伦伦影院| 国产精品中文字幕久久| 一本一本久久AA综合精品| 麻豆国产AV剧情偷闻女邻居内裤| 中文字幕无码不卡免费视频| 亚洲国产欧美一区二区好看电影 | 日本高清视频色WWWWWW色| 在线观看国产成人无码| 色噜噜噜亚洲男人的天堂| 东京热人妻无码一区二区av| 亚洲色大成网站WWW国产| 亚洲成人四虎在线播放| 亚洲AV成人无码精品电影在线| 中文字幕国产精品日韩| 18禁美女裸体爆乳无遮挡| 永久免费无码成人网站| 肉大捧一进一出免费视频| 亚洲AV中文无码字幕色最新| 中文字幕无码AV激情不卡| 无码人妻丝袜在线视频红杏| 精品无码一区二区三区AV| 久久天天躁狠狠躁夜夜婷| 亚洲国产精品久久一线不卡| 精品免费看国产一区二区|