MT4智能交易系統(tǒng)-編程手冊
《MT4智能交易系統(tǒng)-編程手冊》由會員分享,可在線閱讀,更多相關《MT4智能交易系統(tǒng)-編程手冊(36頁珍藏版)》請在裝配圖網上搜索。
點擊這里查看如何添加 啟動 測試智能交易系統(tǒng)軟件 智能交易系統(tǒng)軟件是一個創(chuàng)新的交易工具 允許客戶對自己的交易策略進行設定并進行測試 還可以創(chuàng)建 新的技術指標 獲取交易系統(tǒng)的逐步解釋 反轉條 點擊 這里 MultiBank FX 程序員 MultiBank FX 向那些想要對其交易策略進行自動化 但又不想學習智能交易系統(tǒng)程序語言客戶提供程序服 務 欲知詳情 請聯系在線客服 智能交易系統(tǒng)軟件是用來對交易過程全程自動化 免除交易商連續(xù)對市場進行日常煩瑣的監(jiān)護 許多專 業(yè)交易商利用多層交易系統(tǒng) 對不同的市場和在不同的環(huán)境下進行操作 通常他們在著名的分析軟件包里 對交易戰(zhàn)略進行編寫和測試 比如 MetaStock 和 TradeStation 使用 MultiBank Trader 智能交易系統(tǒng)軟件 招招領先 你可以把交易系統(tǒng)產生的信號和真實賬戶聯系起 來 這樣連接以便于能追蹤和管理你的某個時段的開倉部位 提交的訂單和止損單 什么是智能交易系統(tǒng) 它是一個用特殊的 MetaQuotes 語言 4 MQL 4 編寫的自動交易系統(tǒng) ATS 和 特定的圖表聯系在一起 智能交易系統(tǒng)不僅能通知交易商交易機會 而且還能自動執(zhí)行交易賬戶上的交易 直接發(fā)送到交易服務器 和許多的 IT 系統(tǒng)一樣 智能交易系統(tǒng)系統(tǒng)支持歷史數據戰(zhàn)略測試 圖表上表示的 登入 登出點 而且 智能交易系統(tǒng)的可執(zhí)行碼分別存儲于源文件和加密的執(zhí)行文件中 這種安排保證了交 易商所使用的邏輯隱藏 如有必要的話 而不會泄密 編寫自己的智能交易系統(tǒng)軟件也非常容易 嘗試一下吧 不需要是專業(yè)編程高手 你只需要學會使用非常 簡單的語言 MQL 4 語言 即使用戶不能自行編寫智能交易系統(tǒng)規(guī)則 但是他需要熟悉 近的編程技能 不過很可能不需一個小時他便掌握了這些規(guī)則并能編寫程序 無數的交易商為 MetaStock 和 TradeStation 軟件開發(fā)了多種多樣的交易戰(zhàn)略 其中多數均被翻譯成 MQL 4 語言 這就使得用戶可以把前期累計的經驗并合到里面去 有些即學即用智能交易系統(tǒng)版本可以從 本頁下載 MultiBank Trader 軟件將智能交易系統(tǒng)在程序的根目錄 Experts 子目錄里保存為 MQ4 source text 和 EX4 可執(zhí)行碼 文件 交易商可以無限量地保存智能交易系統(tǒng)數據 這些數據可以通過導航條窗口 容易地加以管理 創(chuàng)建自定義智能交易系統(tǒng)數據的程序以及將數據和交易終端連接在 MultiBank Trader 用戶指南里有詳細 的描述 MetaQuotes 4 語言是用來編寫自定義智能交易系統(tǒng)軟件 以便使交易程序管理自動化以及執(zhí)行交易商自 己的交易策略 MetaQuotes 4 語言易學 易用 易創(chuàng)建 MetaQuotes 4 語言包括相當數量的變量 用 來控制當前和前期的報價 主要的算術和邏輯運算和特征 主要的內置指標和用來開啟和控制頭寸的命令 在語法上 該語言和由 TradeStation 技術有限公司開發(fā)的簡易語言相似 但是它有其自身的一些具體特 征 程序代碼是用 MetaEditor4 編輯器編寫的 它能夠用不同的色彩集中反映 MQL 4 語言的不同結構 因此 有助于用戶熟悉專家系統(tǒng)的文本 注解開始于 符號 雙斜線 注解也可以用 斜線 星號 星號 斜線 組合 注解 就像在 C 編程語言一樣 設定和控制操作戰(zhàn)略 交易商保存一份日志文件 存儲產生的信號信息 變量輸出和已執(zhí)行交易的結果 智能交易系統(tǒng)日志保存在 MultiBank Trader 目錄下 logs YYYYMMDD log 文件里 當前的日志可以從 下方的 終端 窗口 日志標簽 直接進入 進入 MQL 4 語言的目錄系統(tǒng) 要么按目錄按鈕或從工具菜單打開 MetaQuotes 語言詞典窗口操作 這個 短小的手冊包含分類 運算 存儲詞語等功能 使得用戶對該語言所用到的每個元素都有所了解 1 主要語言結構 像其他任何語言一樣 MQL4 有一套構成基本結構的主要組成元素 這些組成元素以一種特殊的方式組合 排列的 以便代表適當的陳述和表達 語言的主要對象就是數據 包括三種類型 數字 邏輯和排列 所有的數值均采用雙格式 邏輯數據可能 包括真值和假值 排列就是用省略號標注的一系列字符 字符串也叫做文本串 數據可以包含在適當類型 的變量之中 或直接由程序的源文本表現出來 一個 MetaQuotes 語言陳述指一個完整的用法說明 陳述可以包括保留字 運算符號 數據 變量 表達 式或標點符號 而且總是以分號結尾 保留字指具有特定或特別意義的預先設定的詞語 運算符號指在數據 變量和 或 表達式中特定的具體運算符號 變量是用來限制數字 排列或邏輯數據的 表達式指保留字 變量 數據和運算符號的組合 因為它們具有語言的 3 中類型 保留字 變量 數據 中的任一價值 標點符號用來代表表達式 界定參數 區(qū)分詞語或重新排列計算順序 2 標點符號 字符 名稱 描述 分號 結束 MetaQuotes 4 語言指令 圓括號 對表達式的值進行分組 改變計算順序 標注函數參數并啟動變量描述表達式 標注變量的初始值并在變量描述區(qū)排列組合 逗號 提取函數值時 對參數進行區(qū)分在變量描述區(qū)對變量進行區(qū) 分在描述排列長度時對數字進行區(qū)分區(qū)分進入排列元素的指 標 冒號 用在變量描述區(qū) 啟動變量列表 引號 標注一個文本 字 串 方括號 標注數字 確定排列長度標注進入某個特殊排列元素的數字 指數 標注進入歷史數據的期間數字 波形括號 充當運算括號 可以用來代替 begin end 將指令系列隔離成塊 注解括號 標注注解 雙斜線 明確說明單串注解的開始 3 運算符號 運算符號分成 5 組 分配符號 字串符號 數學運算符號 相關符號和邏輯符號 3 1 分配符號 分配符號 等號 是用來將具體數值 數字 排列或邏輯 視變量類型而定 分配到變量中 分配值可 以是表達式的結果 比如 變量 Counter 0 Counter Counter 1 結果 反向變量取值為 1 變量值也可以分配來對元素進行排列 3 2 字串符號 操作文本串 只有一個運算符可以用上 加號 它是用來連接兩個字串的 比如 變量 字串 字串 some text 結果 字串變量包含 some text 這樣的文本串 允許將字串與數字和邏輯值結合起來 在后面的這個 例子里 數字及或邏輯值在結合前 應轉化為字串類型 比如 String string 1 因此 字串變量將包含 string1 的文本串 操作數不僅可以是數值 也可以是相應的含有這樣數值類型的變量 以及表達式 經執(zhí)行后 便產生這樣 的數值 3 3 數學符號 4 種主要的數學運算 加法 加號 減法 減號 乘法 星號 除法 斜線 都用在計算數值的數學表達式里 數學表達式的例子 Ask Bid 2 High 1 20 Point 3 4 相關符號 相關符號用來對同種類型的兩個數值進行比較 第一個數值和第二個數值進行比較 產生邏輯值 真值 或 假值 小于 右小于號 等于 等號 不 等于 小于或等于 由相關表達式而取得的邏輯值用在 MetaQuotes II 語言的控制結構里 比如 if FreeMargin 100 and FreeMargin 1000 If not Condition1 then exit 下面是邏輯運算符號的結果表 Value1 Value2 Value1 OR Value2 True True True True False True False True True False False False Value1 Value2 Value1 AND Value2 True True True True False False False True False False False False Value1 NOT Value1 True False False True 4 固定字 MetaQuotes 4 語言使用下面的幾組固定字 1 邏輯符號 AND NOT OR 2 MQL 4 語言指令 Array Begin Break Continue Define Downto Else End Exit For If Input Then To Variable While 界定語言指令結構的固定字也叫做關鍵字 3 內置函數 Abs AccName AccountName Alert Ceil CloseOrder Comment Cos CurTime Day DayOfWeek DeleteOrder Exp Floor Highest Hour iADX iATR iBANDS iCCI iMA iMACD iMFI iMOM iRSI iSAR iSTO iWPR IsDemo IsIndirect LastTradeTime Log Lowest Minute Mod ModifyOrder Month MoveObject NumberToStr Ord OrderValue Period Pow Print PrintTrade Rand Round ServerAddress SetArrow SetObjectText SetOrder SetText Sin Sqrt Srand Symbol Tan TimeToStr Year 4 預先設定用戶變量 用戶定義變量 Lots StopLoss TakeProfit TrailingStop 5 預先設定交易終端變量 AccNum AccountNumber Ask Balance Bars Bid Close Credit Equity FreeMargin High Low Margin Open Point PriceAsk PriceBid PriceHigh PriceLow PriceTime Time TotalProfit TotalTrades Volume 6 預先設定內置函數參數 宏命令 MODE CLOSE MODE EMA MODE HIGH MODE LOW MODE MAIN MODE MINUSDI MODE OPEN MODE PLUSDI MODE SIGNAL MODE SMA MODE STOPLOSS MODE TAKEPROFIT MODE VOLUME MODE WMA OBJ HLINE OBJ SYMBOL OBJ TEXT OBJ TRENDLINE OBJ VLINE OP BUY OP BUYLIMIT OP BUYSTOP OP SELL OP SELLLIMIT OP SELLSTOP SYMBOL ARROWDOWN SYMBOL ARROWUP SYMBOL CHECKSIGN SYMBOL STOPSIGN SYMBOL THUMBSDOWN SYMBOL THUMBSUP VAL CLOSEPRICE VAL CLOSETIME VAL COMISSION VAL COMMENT VAL LOTS VAL OPENPRICE VAL OPENTIME VAL PROFIT VAL STOPLOSS VAL SWAP VAL SYMBOL VAL TAKEPROFIT VAL TICKET VAL TYPE 實際上 上述固定字為宏記錄器 即語法分析程序用數值取而代之 宏記錄器的引入簡化了編寫用戶功能 要求的程序 更加方便 無關聯的重要詞語可以用來替代一些函數參數值 同樣可以用于色彩名稱 7 色彩 AliceBlue AntiqueWhite Aqua Aquamarine Azure Beige Bisque Black BlanchedAlmond Blue BlueViolet Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DimGray DodgerBlue FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HotPink IndianRed Indigo Ivory Khaki Lavender LavenderBlush LawnGreen LemonChiffon LightBlue LightCoral LightCyan LightGoldenrod LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linen Magenta Maroon MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed MidnightBlue MintCream MistyRose Moccasin NavajoWhite Navy OldLace Olive OliveDrab Orange OrangeRed Orchid PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen Seashell Sienna Silver SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat White WhiteSmoke Yellow YellowGreen 所有的固定字均是非敏感字號 即它們可以小寫也可以大寫 4 1 智能交易系統(tǒng)向導 智能交易系統(tǒng)向導提示 MQL 4 允許編寫智能交易系統(tǒng) 自編指標 自編腳本和從模板中進行編輯 預先設定參數或變量的名稱 將會自動在文本編輯欄中出現參數框架 4 2 MetaQuotes 4 語言的指令結構 4 2 1 變量宣告和語句 在計算過程中保存臨時數據要求使用變量 變量在本程序的開頭部分就用保留字 變量 排列和定義進行 了敘述 他允許使用這些詞語的負數形式 即 Variables Arrays and Defines 這些詞中間總有一 個開始變量的宣告敘述 這些詞語的差別如下 variable 語句簡單變量 array 語句排列 define 語句附加用戶定義的變量 類似于預先界定的用戶變量 均可以通過設置對話框進行修改 即從外部修改 然而 又不像預先界定的變量 用戶變量可以在程序內部的計算過程中進行更改 變量宣告語法 變量 名稱 初期值 這里名稱就是變量的名字 初期值 就是變量的起初值 初期值對變量的類型 數字 字串或邏輯值進行界定 一個數字變量宣告的例子 Variable Counter 0 一個字串變量宣告的例子 Variable String1 任意字串 一個邏輯變量宣告的例子 Variable MyCondition false 數組聲明語法 Array ArrayName Array length 初始值 其中 數組長度有一個或若干 多達 4 個數字 數字 number number number number 在 MetaQuotes 4 語言里 數組可能是 1 2 3 4 個元素長度 一般情況下 數組就是一組可以用同 一個名稱查找到的 并按照相繼成行定位數組且給定了數組元素的序列號 數 的變量 數組方便于對同 樣類型的數據排序 數組的一個典型例子就是交易終端的歷史數據 比如 收盤 開盤 高點位 低點位 交易量 這些數據作為單一元素數組的 比如 Close 5 指后退 5 個交易期間的收盤值 兩個元素的 數組可能是一個簡單表格 其中第一個分量為行而第二個分量則為列 Array MyTable 10 5 0 一個 10 行 5 列的表格 print MyTable 2 4 打印第二行的第 4 個元素 數組可能包括任何類型的數值 數字 字串或邏輯值 但是應該為同一類型 其中的初期值在數組被宣告 時為特定的 附加用戶定義變量宣告語法 定義 名稱 初期數 其中名稱為變量名稱 初期數為變量起初的數字值 應該注意 附加用戶定義變量可能只為數字類型 如上所述 用戶定義變量可以在程序的計算過程中進行 修改 這些修改只能運用到智能交易系統(tǒng)的當前時段 直到特殊的智能交易系統(tǒng)從圖表中刪除或客戶終端 的操作結束 當新的智能交易系統(tǒng)時段啟動時 用戶定義變量值將重新初始化 4 2 2 退出語句 退出報告中斷智能系統(tǒng)軟件的操作 也就是所謂的預先設定的程序終止 4 2 3 IF THEN 條件語句 If Then 條件語句使得控制智能交易系統(tǒng)指令的執(zhí)行順序得以可能 該語句可能有不同的方式編寫 if Condition then Statement or if Condition then begin Statement Statement end 其中 條件為一個邏輯表達式 取值為 True 或 False Statement 指 MetaQuotes II 語言中的任何指令 符號括號 Begin End 可能被波形括號 所替代 條件語句可能被用在對程序進行分支 為達到此目的 另一個關鍵字 Else 要用上 語法 if Condition then Statement1 else Statement2 or if Condition then begin Statement Statement end else Statement Statement end or if Condition then begin Statement Statement end else Statement2 or if Condition then Statement1 else Statement Statement end 可以使用嵌套式的條件語句 一般說來 語句可能由 MetaQuotes II 語言的任何合法指令表示 除 非變量宣告 因為嚴格來說 變量宣告并不是一個可執(zhí)行語句 4 2 4 WHILE 循環(huán) WHILE 循環(huán)確保在循環(huán)條件有效時 包含在循環(huán)主體中的語句的多次執(zhí)行 一個循環(huán)可以用 Break 語句 提前終止 迭代可以通過使用 Continue 語句停止 這個語句造成循環(huán)的下一個迭代開始 即 Continue 后面的語句直到循環(huán)主體結束在本迭代中不得執(zhí)行 在條件語句中用 Break 和 Continue 是合理的 語法 while Condition begin Statement break continue end 其中 條件是循環(huán)執(zhí)行條件 在每個循環(huán)迭代之前計算出的一個邏輯表達式 取值為 True 或 False 語句是 MetaQuotes 4 語言的任何指令 符號括號 Begin End 表示循環(huán)主體 可以被波形括號 替代 Break and Continue 描述也不是強制性的 Example Counter 1 while Counter Bars then break print Close Counter end 這個例子說明一個可能被執(zhí)行 10 次的環(huán) 但是 若基準值小于 10 循環(huán)就會提前終止 也就是說循 環(huán)執(zhí)行 BARS 次 4 2 6 BREAK 中斷語句 中斷語句確保一個 For 循環(huán)或一個 While 循環(huán)早點終止 前例不僅說明循環(huán)執(zhí)行 也說明了中斷語句的 使用 Break 語句不僅用于循環(huán)主體之外 循環(huán)是嵌套式的 中斷語句中離其 近的循環(huán) 換言之 中 斷內部循環(huán)的語句并沒中斷外部循環(huán) 4 2 7 CONTINUE 繼續(xù)語句 CONTINUE 繼續(xù)語句提前終止循環(huán)的迭代 并從循環(huán)主體開始下一個迭代 換句話說 在 Continue 之 后語句被忽略 比如 for Counter 1 to 10 begin if Counter Bars then continue print Close Counter end 這個例子說明一個將被執(zhí)行了差不多 10 次的循環(huán) 但收盤值 counter 被打印不會比基準次數多 代表 MetaQuotes 4 語言的其他語句 4 3 交易中斷的預選界定變量為了 大的方便用戶 交易中斷的一 些變量可以從智能系統(tǒng)輸入 AccountNumber 賬號 同義詞 AccNum Ask 賣價 買方出價 Balance 交易賬戶的余額值 Bars 圖表上條形的數目 說明用數據填充圖表程度的非常重要的一個變量 Bid 買入價 賣方要價 Close 收盤價格 Credit 信用優(yōu)先 Equity 賬戶狀況 包括未實現利潤 FreeMargin 交易賬戶的自由保證金值 也用來核查賬戶資金的可用性 High 期間 高價位 Low 期間 低價位 Margin 用來支撐開倉部位的資金 保證金 Open 開盤價 Point 當前金融工具單點上的價值 此點此時智能交易系統(tǒng)系統(tǒng)運行 比如 USD JPY 0 01 USD CHF 0 0001 等 PriceAsk 在市場觀測窗口上顯示的當前賣價 PriceBid 在市場觀測窗口上顯示的當前買價 PriceHigh 當前 24 小時期間的 高買價 PriceLow 當前 24 小時期間的 高賣價 PriceTime 在市場觀測窗口上顯示的當前時間 Time 價格圖表上的條形時間的基準時間 TotalProfit 所有開倉部位的總未實現利潤 TotalTrades 開倉部位的總數和交易中斷上的延遲訂單 Volume 交易量 期間交易的數目 應注意到 Close Open High Low Volume Time 為歷史數據數組 seriesarrays 在上個交易期 間允許進入這些數據 4 4 內置函數 MetaQuotes 4 語言提供許多功能 可用于多種多樣的場合 這些包括技術指標 交易功能 時間功能 數學和三角函數功能 數據轉換和輸出函數 等 Abs 返回這個數值的絕對值 模塊 語法 Abs 函數 n 個表達式 參 數 數值 AccountName 返回包含用戶名的文本串 同義詞 AccName Alert 產生包含用戶定義數據的對話屏語法 Alert 參數的任何非零數都可能 Ceil 返回代表 小接近整數的一個數字 它等于或大于特定的數值 語法 Ceil n 個表達式 參數 數值 CloseOrder 收盤頭寸 部位 語法 收盤頭寸 訂單 單位 價格 滑動量 色彩 Parameters 參數 order 開倉部位的訂單數 lots 單位數 price 優(yōu)先收 盤價 slippage 大價格滑動 值 color 圖表上交叉點的色 彩 Comment 在圖表的左 上角產生的用戶定義數據 語法 Comment 參數的任何非零數都可能 Cos 計算和返回數值的余弦值 代表用弧度表示的角度 語法 Cos n 分表達式 參數 數值 CurTime 返回從 1970 年元月 1 日起所經過的秒數 Day 返回當月當前日序列號 DayOfWeek 返回當周當前日序列號 1 星期日 2 星期一 7 星期六 DeleteOrder 刪除前期提交的延遲訂單語法 DeleteOrder 訂單 參數 訂單 延遲部位的訂單數 Exp 返回代表特定數值指數的一個數目 語法 Exp n 個表達式 參數 數值 Floor 返回代表 大接近整數的一個數字 它等于或小于特定的數值 語法 Floor n 個表達式 參數 數值 Highest 返回期間特定數間的 Open Low High Close or Volume 取決于 類型 參數 的 大值 語法 Highest 類型 beginbar 期間 Parameters 參數 Type 類型 一個返回變量 可能去下列數值 MODE OPEN MODE LOW MODE HIGH MODE CLOSE MODE VOLUMEbeginbar 表示條形的轉換 與當前條形有關 并從中取值 periods 期間 計算執(zhí)行依據的期間數 Hour 返回在 24 小時期間內當前小時的序列數 iADX 平均指導動作目錄 語法 iADX 期間 模式 轉換 參數 period 計算的期間數 mode 數據類型 可以取下列數值 MODE MAIN 主要指標 MODE PLUSDI line DI MODE MINUSDI line DI shift 與當前條形有關的轉換 后退期間數 為數據待取值 的依據 iATR 平均間距的指標語法 iATR 期間 轉換 參數 period 計算期間數 shift 與當前條形 后退期間數 相關的轉換 為數據待取值的依據 平均移動收斂 發(fā)散指標 iBANDS 布林帶指數 語法 iBANDS 期間 誤差 模式 轉換 參數 period 計算的期間數 deviation 誤差 mode 可以取下列值 MODE MAIN 主線 滑移 MODE LOW 下邊線 MODE HIGH 上邊線 shift 與當前條形 后退期間數 相關的轉換 為數據 待取值的依據 iCCI 交易通道指標語法 iCCI 期間 轉換 參數 period 計算的 期間數 shift 與當前條形 后退期間數 相關的轉換 為數據待取值 的依據 iMA 移動平均指標語法 iMA 期間 模式 轉換 參數 period 計算的期間數 mode 計算模式 可以取下列值 MODE SMA MODE EMA MODE WMA shift 與當前條形 后退期間數 相關的轉換 為數據待取值的依據 iMACD 平均移動收斂 發(fā)散指標 語法 iMACD fast ema period slow ema period signal period mode shift 參數 fast ema period 計算 快 平均移動期間 通常 12 slow ema period number of periods for calculation of the slow moving average usually 26 signal period 計算 慢 平均移動期間 通常 12 mode 數據源 可以取下列值 MODE MAIN 主要指標 MODE SIGNAL 信號列 shift 與當前條形 后退期間 數 相關的轉換 為數據待取值的依據 iMFI 現金流量指標語法 iMFI 期間 轉換 參數 period 計算期間數 shift 與當前條形 后退期間數 相關的轉換 為數據待取值的依據 iMOM 動量指標語法 iMOM 期間 轉換 參數 period 計算期間數 shift 與當前條形 后退期間數 相關的轉換 為數據待取值的依據 iRSI 相對強弱指標語法 iRSI 期間 轉換 參數 期間 計算期間數 iSAR 拋物線語 法 iSAR 步驟 大值 轉換 參 數 步驟 增量 通常是 0 02 大值 大值 通常是 0 02 iSTO 隨機振蕩 指標 語法 iSTO K 期間 D 期間 慢 方法 模式 轉換 參數 Kperiod K 線期間 Dperiod D 線期間 slowing 慢值 method 計算方法 取下列值 MODE SMA 簡單平均 MODE EMA 指數值 MODE WMA 權重值 mode 數據源 可以取下列值 MODE MAIN 主指標線 MODE SIGNAL 信號指標線 shift 與當前條形 后退期間數 相關的轉換 為數據待取值的依據 iWPR 威廉氏百分數范圍指標 語法 iWPR 期間 轉換 參 數 期間 計算期間數 shift 與當前條形 后退期間數 相關的轉換 為 數據待取值的依據 IsDemo 如果智能交易系統(tǒng)系統(tǒng)在試用帳戶運行 返回邏輯值 否則會返回錯誤值 IsIndirect 如果使用反向方式對特定工具進行計算 會返回正確的邏輯值 否則會返回錯誤值 LastTradeTime 返回代表 近交易執(zhí)行時間的一個數字 SetOrder DelOrder CloseOrder ModifyOrder 計算從 1970 年元月 1 日 0 點經過的秒鐘數 Log 特定正數值的對數語法 日志 n 個表達式 參數 正數值 Lowest 特定期間返回開倉 低 高 收盤或交易量 小值 依據 類型 參數而定 returns 語法 低點 類型 beginbar 期間 參數 type 可以取下列值 MODE OPEN MODE LOW MODE HIGH MODE CLOSE MODE VOLUME beginbar 表示條形的轉換 與當前條形有關 并從中取值 periods 期 間 計算執(zhí)行依據的期間數 Minute 返回當前小時的分鐘序列數 Mod 返回代表著一個接著一個的數值的整數語法 Mod n 個表達式 1 n 個表達式 2 參數 數值 1 數值 2 ModifyOrder 前期開倉部位或延遲訂單修改的特征語 法 ModifyOrder 訂單 價格 止損 獲利 色彩 參數 order 開倉或延遲部位的數目或訂單 price 新的價格 僅適用于延遲部位 stoploss 新的止損水平線 takeprofit 新的獲利水平線 color 圖表上象形 圖 的色彩 Month 返回當前月的續(xù)列號 MoveObject 移動或建立命名對象 語法 MoveObject 名稱 類型 時間 價格 時間 2 時間 2 參數 name 文本串形式的名稱 type 對象類型 可以取下列值 OBJ HLINE 水平線 OBJ VLINE 垂直線 OBJ TRENDLINE 趨勢線 OBJ SYMBOL 設定象形圖 OBJ TEXT 文本串 time 參照圖表第一時間 price 參 照圖表第一價格 time2 參照圖表第二時間 price2 參照圖表第二時間 NumberToStr 返回特定數值轉換成特定準確格式的文本串 通過在十進位點數之后的其他 4 個數產生 的數值的函數 語法 NumberToStr 數字 準確性 參數 number 特定數值 precision 準確格 式 十進位點數的數字 OrderValue 返回訂單特定價值的之一 語法 OrderValue 部位 模式 參數 position 交易終端列表的訂單頭寸部位 從 1 開始 mode 返回數據類型 可以取下列值 VAL TICKET 訂單數 VAL OPENTIME 定定開倉時間 VAL TYPE 訂單類型 VAL LOTS 要求單位數目 VAL SYMBOL 工具名稱 以文本串的形式 VAL OPENPRICE 開盤價 VAL STOPLOSS 止損水平線 VAL TAKEPROFIT 獲利水平線 VAL CLOSEPRICE 收盤價 VAL COMISSION 委托交易量 VAL SWAP 部位展期的展期費用數 額 VAL PROFIT 交易利潤數 VAL COMMENT 以文本串形式對特殊部位的注解 VAL CLOSETIME 訂單收盤時間 Ord 和 OrderValue 完全相同 Period 返回界定的已用期間分鐘數 Pow 返回由 nBaseExpression 數值提高到 nExponentExpression 倍數而產生的數值 參見參數 語法 Pow nBaseExpression nExponentExpression 參數 數值 1 數值 2 Print 打印由用戶在系統(tǒng)日志里界定的數據 語法 Print 參數的任何非零數均可能 PrintTrade 存儲日志中特殊部位的細節(jié)語法 PrintTrade 部位 參數 部位 在交易終端里已開倉部位數字 Rand 返回一個產生的偽隨機數字 在使用此函數之前 偽隨機數字發(fā)生器應用 Srand 函數調整到初始 狀態(tài) 如果偽隨機數字發(fā)生器不用 就在啟動程序時一次調整到初始狀態(tài) Round 返回代表接近整數的特定數值語 法 Round n 個表達式 參數 一個數值 ServerAddress 以文本串的形式返回服務器 IP 地址 SetArrow 設定圖表繪圖標志語法 SetArrow 時間 價格 標志和色彩 參數 time 參照圖表第一時間 price 參照圖表第 一價格 symbol 從 Wingdings 字體設定標 志 的數值 color 圖表顏色 SetObjectText 指定文本串到特定的對象語法 SetObjectText 稱 文本 字體 尺寸 顏色 參數 name 對象名稱 text 特定文本 font 字體命 size 字體大小 color 文本色彩 SetOrder 用于開倉或設定延遲訂單的主函數 語法 SetOrder 操作 單位 價格 滑動 止損 獲利 色彩 參數 operation 操作類型 可以取下列值 OP BUY 開始購買部位 OP SELL 開始出售部位 OP BUYLIMIT T OP SELLLIMIT OP BUYSTOP OP SELLSTOP 提交延遲訂單 lots 單 位數 price 交易優(yōu)先收盤價 slippage OP BUY 和 OP SELL 操作的 大價格滑動 stoploss 止損水平線 takeprofit 獲利水平線 color 當提取函數時 圖表上箭頭的色彩 SetText 把圖表種的文本創(chuàng)放到特定的位置 語法 SetText 時間 價格 字符串 色彩 參數 time 參照圖表第一時間 price 參照 圖表第一價格 string 文本串 color 文本 色彩 Sin 計算并返回代表弧度角度的數值語法 Sin n 個表達式 參數 數值 Sqrt 計算和返回特定正數值的平方根語法 Sqrt n 個表達式 參數 正數值 Srand 設定偽隨機數字發(fā)生器到初始狀態(tài) 如果使用發(fā)生器 將其在啟動程序時一次性設置到初始狀 態(tài) 初始設置所用的 佳值就是時間函數回歸的數字 在此情況下 產生順序的隨機性就增大 語法 Srand 時間 參數 正數值 Symbol 返回智能交易系統(tǒng)運行的金融工具名稱的文本串 Tan 計算并返回代表角度弧度的正切數值 語法 Tan n 個表達式 參數 數值 TimeToStr 返回帶有 yyyy mm dd hh mi 類型的文本串 由代表經過 1970 元月 1 日起的秒鐘數 的特定數值 語法 TimeToStr 時間 參數 正數值 Year 返回當年數 逐步創(chuàng)建簡單顧問軟件 我們現在就創(chuàng)建智能交易系統(tǒng) 并在運行標準的平滑異同移動平均線指標 該系統(tǒng)具有較強的獲利能力 支持追蹤止損和 大的保障安全操作 下面所給的例子 交易通過對單一的部位進行開倉和控制 交易原則 多頭進場 MACD 指標在零點之下 向上走 或由下行信號線穿過 空頭進場 MACD 指標在零點以上 向下走 或由上行信號線穿過 多頭出場 通過執(zhí)行獲利限額 移動止損或當 MACD 指標穿過信號線 MACD 指標在零點 以上 向下走 或由上行信號線穿過 空頭出場 通過執(zhí)行獲利限額 移動止損或當 MACD 指標穿過信號線 MACD 指標在零點以下 向上走 或由下行信號線穿過 重要提示 為了排除 MACD 指針于我們的分析出現的微不足道的變化 圖表上的 小山丘 我們引 入另外一種控制繪圖中的 小山丘的大小 的方法如下 指針大小應至少為 低價格的 5 個單位 5 Point 表示 USD CHF 0 0005 和 USD JPY 0 05 步驟 I 編寫智能交易系統(tǒng)描述 將鼠標指針點到導航窗口的智能交易系統(tǒng)區(qū) 按鼠標右鍵 在出現的菜單里選中 創(chuàng)建 指令 智能交易 系統(tǒng)的啟動向導要求你進入某些數據 在出現的窗口 我們寫入智能交易系統(tǒng)名稱 Name MACD 樣本 作者 Author 指示你的名字 連接 Link 連接到網站 在注解 Notes 里寫入 以 MACD 為基礎的智能交易系統(tǒng)測試樣本 第 二步 創(chuàng)建程序的主結構 智能交易系統(tǒng)代碼只有幾頁 即便是這幾頁代碼也挺難掌握 特別是考慮這個事實 我們不是專業(yè)的程序 開發(fā)商 另外 我們根本不需要專業(yè)性的描述 對嗎 為了對標準智能交易系統(tǒng)的結構有些了解 我們現在就看看下面的這個描述吧 1 原始數據檢查 檢查圖表 圖表上的條形數 核查外部變量值 單位 Lots S L T P T S 2 設定快速數據存取內部變量 3 檢查交易終端 是否可用 若是的話 那么 檢查賬戶資金的可用性 等 是否可能來做多頭買賣 買單 開倉 買 并離開 是否能做空倉 賣出 空倉 賣 并離開 退出智能交易系統(tǒng) 4 控制循環(huán)周期中前期的開倉部位 如果是做多頭 是否應出倉 是否應該設置追蹤止損單 如果是做多頭 是否應該出倉 是否應該設置追蹤止損單 結果相當簡單 只有 4 個主區(qū)塊 現在 請跟隨著每個結構的步驟來創(chuàng)建代碼 1 原始數據的檢索這條代碼通常從智能交易系統(tǒng)移到另一個稍微更改的另一個代碼 實際上為檢索的 標準區(qū)塊 若 Bars 200 就離開 圖表不足 200bars 退出 若獲利 10 則退出 錯誤 獲利參數 2 為了加快數據存取 設置內部變 量 在程序代碼中 很有必要存取指標值或處理計算值 為了簡化代碼和加速存儲 初始狀態(tài)下 數據嵌套在 內部變量里 MacdCurrent iMACD 12 26 9 MODE MAIN 0 MACD value on the current bar MacdPrevious iMACD 12 26 9 MODE MAIN 1 MACD value on the previous bar SignalCurrent iMACD 12 26 9 MODE SIGNAL 0 Signal Line value on the current bar SignalPrevious iMACD 12 26 9 MODE SIGNAL 1 Signal Line value on the previous bar MaCurrent iMA MATrendPeriod MODE EMA 0 moving average value on the current bar MaPrevious iMA MATrendPeriod MODE EMA 1 moving average value on the previous bar 現在 不用晦澀難懂的 iMACD 12 26 9 MODE MAIN 0 符號 我們在程序中用簡單的寫入字 符 MacdCurrent 程序文本取而代之 所有的智能交易系統(tǒng)中的變量都依據 MQL II 語言進行基 本的解釋 所以 我們在程序的開頭加入這段說明 var MacdCurrent 0 MacdPrevious 0 SignalCurrent 0 SignalPrevious 0 var MaCurrent 0 MaPrevious 0 MQL 4 語言還另外推出了另外一個用戶自定義變量概念 它可以在程序外設定 而不會對任何系 統(tǒng)程序下的源程序文本造成干擾 這個特點使程序更具靈活性 MATrendPeriod 變量就是這種 類型的一個用戶自定義變量 所以 我們在程序的開頭加入這段說明 defines MATrendPeriod 56 3 檢查交易終端 是否可用 若是 那么 在智能交易系統(tǒng)里 我們只能使用當前頭寸而不能操作 延遲的訂單 然而 為了安全起見 我們介紹如何利用交易終端建檢查前期提交的訂單 If TotalTrades 1 then no opened orders identified 檢查 賬戶的可用資金等 在分析市場狀況之前 好先檢查一下你的賬戶的資金情 況 以確保賬戶中有充足的開倉頭寸的資金 如果凈保證金 1000 那么退出 無資金 退出 可否做多頭 買入 多頭買入的條件 MACD 指標在 0 軸以下 為向上趨勢且與向下趨勢的信號線相交 這和我們在 MQL II 語言中所描述的一樣 注意 我們可以按照原已保存在變量中的這 個指標值進行操作 If MacdCurrentSignalCurrent and MacdPrevious MACDOpenLevel Point and the indicator plotted a decent hillock MaCurrent MaPrevious then bull trend SetOrder OP BUY Lots Ask 3 0 Ask TakeProfit Point RED executing Exit exiting since after the execution of a trade there is a 10 second trading timeout 前面我們提到了一種監(jiān)控圖表中所要顯示 小丘 的大小的一種方法 MACDOpenLevel 變量是一個用戶定義變量 可以在不影響程序文本的情況下 進行更改 以確保更多的 靈活性 在程序的開始部分 我們加入一段這個變量的描述 以及下面所用到的變量描 述 defines MACDOpenLevel 3 MACDCloseLevel 2 是否可以做空頭 賣出 空頭賣出的條件 MACD 指標在 0 軸以上 為向下趨勢且 與向上趨勢的信號線相交 符號表示如下 If MacdCurrent 0 and MacdCurrentSignalPrevious and MacdCurrent MACDOpenLevel Point and MaCurrent MaPrevious then SetOrder OP SELL Lots Bid 3 0 Bid TakeProfit Point RED executing Exit exiting Exit no new positions opened just exit 4 控制循環(huán)周期中前期已開倉的頭寸 for cnt 1 to TotalTrades if OrderValue cnt VAL TYPE 0 and MacdCurrentSignalPrevious and MacdCurrent MACDCloseLevel Point then CloseOrder OrderValue cnt VAL TICKET OrderValue cnt VAL L OTS Bid 3 Violet Exit exit 是否應該需要重新設定移動止損點 僅在持倉并已超過移動止損點數點并獲 利的情況下 而且新的移動止損點比前期的要更有理一些 我們才重新設置移 動止損點 If TrailingStop 0 then if trailing stops are used If Bid OrderValue cnt VAL OPENPRICE Point TrailingStop then If OrderValue cnt VAL STOPLOSS Bid Point TrailingStop then ModifyOrder OrderValue cnt VAL TICKET OrderValue cnt VAL OPENPRICE Bid Point TrailingStop OrderValue cnt VAL TAKE PROFIT Red Exit 若是處在空頭部位 else otherwise it is a short position 是否應該平倉 出現空頭的條件 MACD 指針與信號線相交 MACD 指針在 0 軸以下 為向上趨勢且與向下趨勢的信號線相交 If MacdCurrentSignalCurrent and MacdPrevious MACDCloseLevel Point then CloseOrder OrderValue cnt VAL TICKET OrderValue cnt VAL L OTS Ask 3 Violet Exit exit 是否應該重新設定移動止損點 僅在持倉并已超過移動止損點數點并獲利的 情況下 而且新的移動止損點比前期的要更有理一些 我們才重新設置移動止 損點 If TrailingStop 0 then the user has put a trailing stop in his settings so we set out to check it If OrderValue cnt VAL OPENPRICE Ask Point TrailingStop then If OrderValue cnt VAL STOPLOSS 0 or OrderValue cnt VAL STOPLOSS Ask Point TrailingStop then ModifyOrder OrderValue cnt VAL TICKET OrderValue cnt VAL OPENPRICE Ask Point TrailingStop OrderValue cnt VAL TAKE PROFIT Red Exit end 結束所有的花括號 但仍然有效 所以 按照步驟 循序漸進地學習 我們已經學會了編寫智能交易系統(tǒng) 第三步 將所有程序代碼集合起 來 我們將前面章節(jié)的所有的代碼集合起來 defines MACDOpenLevel 3 MACDCloseLevel 2 defines MATrendPeriod 56 var MacdCurrent 0 MacdPrevious 0 SignalCurrent 0 SignalPrevious 0 var MaCurrent 0 MaPrevious 0 var cnt 0 原始數據檢查 確保智能交易系統(tǒng)在正常圖表上運行 這很重要 用戶正確設置外部變量 單位數 止損 獲利 移動止損 在我們看來 我們只需檢查獲利就行了若 Bars 200 或獲利 10 那么就退出 圖表上少于 200 bars 簡化和加速操作程序 我們需要作必要的保存 臨時變量中的指標數據 MacdCurrent iMACD 12 26 9 0 MODE MAIN MacdPrevious iMACD 12 26 9 1 MODE MAIN SignalCurrent iMACD 12 26 9 0 MODE SIGNAL SignalPrevious iMACD 12 26 9 1 MODE SIGNAL MaCurrent iMA MATrendPeriod MODE EMA 0 MaPrevious iMA MATrendPeriod MODE EMA 1 現在我們必須檢查交易終端的狀況 我們要看一 看是否還有任何前期開倉部位或訂單 如果總交易 1 那么 沒有已開倉訂單 為了安全期間 我們要確保賬戶有充足的資金 比如說 取值為 1000 通??赡芫褪翘峤?1 個單位 如果凈保證金 1000 那么退出 沒有資金 我們退出 檢查做多頭 買入 的可能性 If MacdCurrentSignalCurrent and MacdPrevious MACDOpenLevel P- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- MT4 智能 交易系統(tǒng) 編程 手冊
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-9290466.html