您現(xiàn)在的位置:程序化交易>> 外匯現(xiàn)貨>> MT4>> MT4知識>>正文內(nèi)容

MT4編程入門(十):畫一條指標(biāo)線 [MT4]

  • 要畫指標(biāo)線,只要在程序中寫明以下幾點就可以了:
    第一、明確指標(biāo)線所在窗口,是主圖還是副圖
    第二、要建立數(shù)組,用以保存指標(biāo)線在各個位置的值。
    第三、要建立指標(biāo)線與數(shù)組的對應(yīng)關(guān)系,哪個數(shù)組對應(yīng)哪條指標(biāo)線
    第四、要明確指標(biāo)線的線型,是曲線還是柱線或者是箭頭
    第五、如果指標(biāo)線是箭頭,還要說明是哪種箭頭
    第六、給數(shù)組賦值
    其中:
    第一、二條寫在文件頭部中,
    第三、四、五條寫在init()函數(shù)中(init函數(shù)僅在指標(biāo)加載時運行一次)
    第六條寫在start()函數(shù)中(start函數(shù)在數(shù)據(jù)發(fā)動變動時運行,變動一次運行一次)

    下面以MACD為例說明
    我們知道,MACD指標(biāo)由二條曲線和一組紅綠柱線組成。(下圖一)
    其中:
    白線是二根均線的差;
    紫線是白線的移動平均線;
    紅綠柱線則是白線和紫線的差,白線上穿紫線,出現(xiàn)紅柱,下穿則出現(xiàn)綠柱。

    我們從簡單入手,先去除紫線和紅綠柱線,僅保留其中的那根白線,來看白線是怎樣畫出來的。

    下面是全部語句:

    #property indicator_separate_window
    #property indicator_color1White
    #property indicator_level10
    extern int FMA=12;
    extern int SMA=26;
    double buf[];
    int init()
    {
    SetIndexBuffer(0,buf);
    SetIndexStyle(0,DRAW_LINE);
    return(0);
    }
    int start()
    {
    int limit=Bars-IndicatorCounted();

    for(int i=0; i<limit; i++)
    {
    buf=
    iMA(NULL,0,FMA,0,1,0,i)
    -iMA(NULL,0,SMA,0,1,0,i);
    }
    return(0);
    }
    說明如下:



    ==============================================

    ==============================================

    以下為上述語句的簡要說明

    #property indicator_separate_window
    指標(biāo)放在副圖

    #property indicator_color1White
    第一條指標(biāo)線為白色

    #property indicator_level10
    在副圖中零值位置上畫一條水平橫線,

    extern int FMA=12;
    extern int SMA=26;
    設(shè)立二個整數(shù)型變量,默認(rèn)值為12和26,允許外部修改值

    double buf[];
    設(shè)立一個數(shù)組

    int init()
    初始化函數(shù)。該函數(shù)在指標(biāo)加載時只運行一次。init是系統(tǒng)默認(rèn)的函數(shù)名,但使用時仍需要進(jìn)行創(chuàng)設(shè),所以要加定義符int
    {
    SetIndexBuffer(0,buf);
    設(shè)置數(shù)組buf為第一條指標(biāo)線

    SetIndexStyle(0,DRAW_LINE);
    設(shè)置第一條指標(biāo)線線型為連續(xù)曲線

    return(0);
    函數(shù)結(jié)束語句
    }

    int start()
    指標(biāo)觸發(fā)函數(shù)。與init函數(shù)不同,該函數(shù)在有數(shù)據(jù)變化時被觸發(fā),如果數(shù)據(jù)被不斷更新,則該函數(shù)將不斷執(zhí)行。start也是系統(tǒng)默認(rèn)的函數(shù)名,但使用時也仍然需要進(jìn)行創(chuàng)設(shè),所以也要加定義符int

    {
    int limit=Bars-IndicatorCounted();
    自定義一個變量limit,并賦值
    Bars是圖表中的柱數(shù)
    IndicatorCounted()緩存中的柱數(shù),就是已經(jīng)計算過的有值的柱數(shù)
    這樣limit的值就是未經(jīng)計算的柱數(shù),這樣就可以起到優(yōu)化程序的作用。

    for(int i=0; i<limit; i++)
    循環(huán)語句。
    循環(huán)從i=0開始,每循環(huán)一次i值增加1,一直循環(huán)到i<limit不滿足時結(jié)束循環(huán)
    由于循環(huán)變量i為一個新變量,所以要先定義,加上整型變量定義符int
    下面大括中為循環(huán)體,此例中只一條語句
    {
    buf=
    iMA(NULL,0,FMA,0,1,0,i)
    -iMA(NULL,0,SMA,0,1,0,i);
    }
    給數(shù)組buf賦值,其值分別為相應(yīng)位置上兩條均線的差
    i是水平位置序號值,即燭柱從右到左的序號,右邊第一個燭柱序號為0

    return(0);
    start函數(shù)結(jié)束
    }

【字體: 】【打印文章】【查看評論

相關(guān)文章

    沒有相關(guān)內(nèi)容
主站蜘蛛池模板: 亚洲专区欧美专区| 国产精品27页| 久久久精品人妻一区二区三区蜜桃| 激情另类小说区图片区视频区| 国产亚州精品女人久久久久久| 84pao强力永久免费高清| 成人性一级视频在线观看| 五月天婷婷社区| 污污视频在线观看黄| 又粗又大又黄又硬又爽毛片| 黑人巨鞭大战欧美肥妇| 国内精品久久久久影院日本| 中文天堂在线观看| 日韩欧美国产电影| 亚洲欧美日韩中字综合| 精品国产一区二区三区av片| 国产公开免费人成视频| 18禁男女爽爽爽午夜网站免费| 婷婷综合激情网| 久久99精品久久久久子伦| 果冻传媒mv在线| 亚洲精品成人片在线观看精品字幕| 美女无遮挡免费视频网站| 国产成人av在线免播放观看| 4hu四虎永久免在线视| 女大学生的沙龙| 中文字幕日韩欧美一区二区三区| 最近中文字幕免费mv视频7| 亚洲欧美另类自拍| a毛看片免费观看视频| 欧美亚洲国产成人不卡| 人妻无码aⅴ不卡中文字幕| 美女美女高清毛片视频| 国产又黄又爽视频| 男人天堂2023| 国内自产拍自a免费毛片| 一区二区在线免费视频| 无码人妻精品一区二区三区蜜桃| 二级毛片在线观看| 欧美另类精品xxxx人妖换性| 亚洲精品美女在线观看播放|