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

MT4編程入門(mén)(十):畫(huà)一條指標(biāo)線(xiàn) [MT4]

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

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

    我們從簡(jiǎn)單入手,先去除紫線(xiàn)和紅綠柱線(xiàn),僅保留其中的那根白線(xiàn),來(lái)看白線(xiàn)是怎樣畫(huà)出來(lái)的。

    下面是全部語(yǔ)句:

    #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);
    }
    說(shuō)明如下:



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

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

    以下為上述語(yǔ)句的簡(jiǎn)要說(shuō)明

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

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

    #property indicator_level10
    在副圖中零值位置上畫(huà)一條水平橫線(xiàn),

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

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

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

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

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

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

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

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

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

【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒(méi)有相關(guān)內(nèi)容
主站蜘蛛池模板: 岳一夜要我六次| 看一级毛片**直播在线| 国产视频一区二区| 一级做a爰片久久毛片一| 日韩精品成人一区二区三区| 亚洲欧美日韩精品久久久| 粉色视频免费试看| 国产一级三级三级在线视| 黄色片免费网站| 国产精品怡红院永久免费| 99精品在线观看| 婷婷伊人五月天| 中文字幕丰满伦子无码| 日本污全彩肉肉无遮挡彩色| 亚洲av无码一区二区三区天堂古代| 正在播放国产女免费| 免费A级毛片AV无码| 精品少妇一区二区三区视频| 国产一精品一av一免费爽爽| 黄页网址在线免费观看| 国产真实乱子伦xxxx仙踪| 1区1区3区4区产品亚洲| 在线|一区二区三区| a级日本高清免费看| 婷婷人人爽人人做人人添| 中国日韩欧美中文日韩欧美色| 日日婷婷夜日日天干| 久久精品一区二区三区av| 最好免费观看韩国+日本| 亚洲中文字幕第一页在线| 欧美妇性猛交视频| 亚洲欧美日韩在线观看| 特级淫片国产免费高清视频| 全部免费国产潢色一级| 绿巨人黑科技地址入口| 嗯嗯在线观看免费播放| 色综合天天综合中文网| 国产亚洲人成无码网在线观看| 高雅人妻被迫沦为玩物| 国产在线无码视频一区二区三区| 成年美女黄网站色大片图片|