版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、范文范例參考以MQL4語言程序為原理展示一個以標(biāo)準(zhǔn) MACD指標(biāo)為根底簡單的智能交易系統(tǒng) 的創(chuàng)立.在這個智能交易中,我們將看到一些特性的例如,像贏利水平的設(shè)定, 追蹤止損的設(shè)置等等.在我們的范例中,通過開倉和治理倉位來完成交易.交易原理: Long (BUY) entry - MACD旨標(biāo)在零以下,從下至上并且穿過低端的信-MACD指標(biāo)在零以上,從上至下并且穿過頂端的信完美Word格式整理版MACD的信號)°MACD的信號)°追蹤止損的執(zhí)行或當(dāng)穿過 線(MACD指標(biāo)在零以上,從上至下并且穿過頂端的信號線* Short exit -贏利上限的執(zhí)行,追蹤止損的執(zhí)行或當(dāng)穿過 線(
2、MACD指標(biāo)在零以下,從下至上并且穿過低端的信號線重要提示:從我們的分析上排除一些 MACD指標(biāo)微缺乏道的變化(圖表上的小 山丘'),我們介紹一種補充檢測山丘大小的方法如下 :指標(biāo)的大小應(yīng)該在最 低價的最后 5 個單元(5*Point,對于 USD/CHF = 0.0005 和 USD/JPY = 0.05).步驟1-編寫智能交易的描述IMACD5+ 刨逹口Inrl設(shè)定快提髏閔Online library卷 Moving 目定劉詡 +©卿本+:攬術(shù)扌擁在智能交易的導(dǎo)航窗口處,點擊鼠標(biāo)右 鍵并且選擇在菜單中的“創(chuàng)立新智能交 易.創(chuàng)立智能交易的初始提醒將會詢 問你進入數(shù)據(jù)中央.在
3、顯示窗口,填寫 智能交易的名稱名稱-MACD Sample, 作者作者-指出你的名字,鏈接連 接-你網(wǎng)頁的鏈接,注解注解- MACD根本智能交易的測試范例.步驟2 -創(chuàng)立程序的根本結(jié)構(gòu)測試智能交易的源代碼將只占據(jù)一點位置, 但是還是有些量經(jīng)常很難抓住,特別 是我們不是專業(yè)的編成工作者-另外,我們不需要這些描述,不是嗎?:一個標(biāo)準(zhǔn)智能交易的結(jié)構(gòu)設(shè)想,讓我們看看以下局部的描述 :1. 初始變量2. 初始數(shù)據(jù)檢測o檢測圖表,圖表中的柱數(shù)o檢測外部變量值:標(biāo)準(zhǔn)手,S/L, T/P, T/S3. 對于快速數(shù)據(jù)通道設(shè)置內(nèi)部變量4. 檢測交易終端-是無效的嗎?如果是:o 檢測:賬戶上的可用保證金 o可能是看
4、漲倉位BUY?開設(shè)看漲倉位并退出5. 可能是賣空倉位SELL?o開設(shè)賣空倉位并退出退出智能交易周期循環(huán)檢驗先前開倉o如果是看漲倉位應(yīng)該平倉?應(yīng)該重新設(shè)定追蹤止損?*如果是賣空倉位o 應(yīng)該平倉?o應(yīng)該重新設(shè)定追蹤止損?返回的結(jié)果很簡單,只有4種.現(xiàn)在讓我們嘗試一步一步地區(qū)完成列出的方案:1. 初始變量所有使用在智能交易程序中的變量必須根據(jù)MetaQuotes Language 4要求的指定.這就是為什么我們在程序的開始插入初始變量的原因exter n double TakeProfit = 50; exter n double Lots = 0.1;exter n double Traili n
5、gStop = 30; extern double MACDOpe nLevel=3; extern double MACDCIoseLevel=2; extern double MATre ndPeriod=26;MetaQuotes語言4是需要“外部變量輔助的.外部變量可以從外部設(shè) 定,在智能交易程序源代碼設(shè)定之后不可以修改. 提供一個額外的靈活性. 在我們的程序中,MATre ndPeriod變量作為外部變量指定.在程序開始 我們插入這個變量.extern double MATre ndPeriod=26;2. 檢測初始數(shù)據(jù)該代碼局部通常使用在所有的智能交易中.由于是一個標(biāo)準(zhǔn)的檢測:/初
6、始數(shù)據(jù)檢測/確認(rèn)智能交易運行正常非常重要/圖表和用戶設(shè)置不能出現(xiàn)任何錯誤/ 變量(Lots, StopLoss, TakeProfit,/ TrailingStop)我們的情況需要檢測TakeProfit/圖表中少于100柱if(Bars<100)Print(" 少于 100 柱");return(0);if(TakeProfit<10)Print(" 贏利少于10");return(0); /檢測 TakeProfit3. 對于數(shù)據(jù)的快速通道設(shè)置內(nèi)部變量在源代碼中經(jīng)常需要注意指標(biāo)值或計算值.簡化代碼和數(shù)據(jù)放置在內(nèi)部變量中.4. int st
7、art()5. 6. double MacdCurre nt, MacdPrevious, Sign alCurre nt;7. double Sig nalPrevious, MaCurre nt, MaPrevious;8. int ent, ticket, total;9.9. /簡化代碼10. /數(shù)據(jù)放置在內(nèi)部變量中11. MacdCurre nt=iMACD(NULL,0,12,26,9,PRICE_CL0SE,M0DE_MAIN,0);12. MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);14.Sig nalC
8、urre nt=iMACD(NULL,0,12,26,9,PRICE_CL0SE,M0DE_SIGNAL,0);15.Sig nalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);16.MaCurre nt=iMA(NULL,0,MATre ndPeriod,0,MODE_EMA,PRICE_CLOSE,0);MaPrevious=iMA(NULL,0,MATre ndPeriod,0,MODE_EMA,PRICE_CLOSE,1);現(xiàn)在,用 iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,
9、代替,您可 以在源代碼中使用 MacdCurre nt.17.檢測交易終端 -是空的嗎?如果是:在我們的智能交易中,我們僅使用開單和操作掛單.不過,使更平安,我們來熟悉一種對于先前定單交易終端檢測:total=OrdersTotal();if(total<1)o 檢測:賬戶上的可用保證金 在分析市場狀況之前,檢測你的賬戶上可用的自由保證金可以開 倉.if(Accou ntFreeMargi n() v(1000*Lo ts)Print("沒有資金.自由保證金=",Accou ntFreeMargi n();return(0);o可能是看漲倉位(BUY)?進入看漲倉位的
10、條件:MACD低于零,向上并且穿過信號線向下 這就是我們在MQL4中描述的(注意我們在指標(biāo)上的業(yè)務(wù)值保存 在先前的變量中):/盡可能檢測看漲倉位(BUY)if(MacdCurre nt<0 && MacdCurre nt>Sig nalCurre nt && MacdPreviousMathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurre nt>MaPrevious)ticket=OrderSe nd(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+Tak
11、ePro fit*Poi nt,"macd sample",16384,0,Gree n);if(ticket>0)if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) Prin t("BUY開單:",OrderOpe nPrice();else Prin t("錯誤 ope ning BUY order :",GetLastError();return(0);附加的檢驗山丘的大小上面已經(jīng)給出了描述.MACDOpe nLevel變量是一個用戶指定變量,它不可能改變程序文本,但是卻
12、有很大 的靈活性.在程序開始我們插入這個變量的描述.能交易示范22021年02月18日 星期四10:15可能是賣空倉位(SELL)?進入賣空倉位的條件:MACD高于零,向上并且穿過信號線向下.注解如下 /盡可能的檢測賣空倉位(SELL)if(MacdCurre nt>0 && MacdCurre ntSig nalPrevious &&MacdCurre nt>(MACDOpe nLevel*Poi nt) && MaCurre ntticket=OrderSe nd(Symbol(),OP_SELL,Lots,Bid,3,0,Bid
13、-TakeProfit*Poi nt,"macd sample",16384,0,Red);if(ticket>0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Prin t("SELL開單:",OrderOpe nPrice();else Prin t("錯誤 SELL定單開倉:",GetLastError();return(0);return(0);周期循環(huán)檢驗先前開倉/進入市場的正確性非常重要/但是更重要的是平安退出for(c nt=0;cntOrderSelect
14、(cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL && /檢驗開倉OrderSymbol()=Symbol() /檢驗貨幣對"cnt"-"是一個循環(huán)的變量必須在程序開始指定如下:int cnt = 0;如果是看漲倉位if(OrderType()=OP_BUY) /翻開看張倉位o 應(yīng)該平倉嗎?退出看漲倉位的條件:MACD穿過信號線,MACD高于零,向上并 穿過信號線向下.if(MacdCurre nt>0 && MacdCurre ntSig nalPrev
15、ious && MacdCurre nt>(MACDCloseLevel*Poi nt) OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); /平倉return(0); / 退出o應(yīng)該重設(shè)追蹤止損馬?我們設(shè)定追蹤止損只有在倉位盈利已經(jīng)超過追蹤水平點,并且新的 止損水平點好于先前的水平./檢測追蹤止損if(Traili ngStop>0) if(Bid-OrderOpe nPrice()>Poi nt*Traili ngStop)if(OrderStopLoss()OrderModify(OrderTicket
16、(),OrderOpe nPrice(),Bid-Poi nt*Trai lin gStop,OrderTakeProfit(),0,Gree n);return(0);我們停止操作符.如果是賣空倉位else / 賣空倉位*應(yīng)該平倉嗎?退出賣空倉位的條件:MACD穿過信號線,MAC低于零,向上并且穿過信 號線向下.if(MacdCurre nt<0 && MacdCurre nt>Sig nalCurre nt && MacdPrevious(MACDCIoseLevel*Poi nt) OrderClose(OrderTicket(),OrderL
17、ots(),Ask,3,Violet); /平倉return(0); / 退出應(yīng)該重設(shè)追蹤止損嗎?我們設(shè)定追蹤止損只有在倉位盈利已經(jīng)超過追蹤水平點,并且新的止損水 平點好于先前的水平./檢測追蹤止損if(Traili ngStop>0)if(OrderOpe nPrice()-Ask)>(Poi nt*Traili ngStop)if(OrderStopLoss()>(Ask+Point*TrailingStop) | (OrderStopLoss()=0)OrderModify(OrderTicket(),OrderOpe nPrice(),Ask+Poi nt*Trail
18、i ngSt op,OrderTakeProfit(),0,Red);return(0);關(guān)閉所有殘留開倉.return(0);這樣一步一步地編寫我們的智能交易智能交易示范32021年02月18日 星期四10:16步驟3 -集中程序的結(jié)果代碼讓我們翻開智能交易的設(shè)定:使用按鈕翻開"屬性"菜單.在窗口內(nèi)指定運行 參量的外部設(shè)定:從先前局部集中全部代碼:+|MACDSample.mq4|Copyright? 2005, MetaQuotes Software Corp. | :/ metaquotes. net/|/+ +exter n double TakeProfit =
19、50;exter n double Lots = 0.1;exter n double Traili ngStop = 30; extern double MACDOpe nLevel=3; extern double MACDCloseLevel=2; extern double MATre ndPeriod=26;/+/|+int start()double MacdCurre nt, MacdPrevious, Sign alCurre nt;double Sig nalPrevious, MaCurre nt, MaPrevious;int ent, ticket, total;/檢測
20、初始化數(shù)據(jù)/確定智能交易在圖表中運行正常非常重要/用戶在外部變量交易中不會產(chǎn)生任何錯誤/外部變量(標(biāo)準(zhǔn)手?jǐn)?shù),止損,贏利,/追蹤止損)在這種情況下,我們檢測圖表中贏利水平要小于100柱if(Bars<100)Print(" 少于 100 柱");return(0);if(TakeProfit<10)Print("贏利少于10");return(O); /檢測贏利水平/簡化代碼和加速通道/數(shù)據(jù)被放置在內(nèi)部變量中MacdCurre nt=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);MacdPrevio
21、us=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);Sig nalCurre nt=iMACD(NULL,O,12,26,9,PRICE_CLOSE,MODE_SIGNAL,O);Sig nalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);MaCurre nt=iMA(NULL,0,MATre ndPeriod,0,MODE_EMA,PRICE_CLOSE,0);MaPrevious=iMA(NULL,0,MATre ndPeriod,0,MODE_EMA,PRICE_CLOSE,
22、1);total=OrdersTotal();if(total<1)/沒有指定開單if(Accou ntFreeMargi n() <(1000*Lots)Print("沒有資金.自由保證金=", AccountFreeMargin();return(0);/盡可能檢測看漲倉位(BUY)if(MacdCurre nt<0 && MacdCurre nt>Sig nalCurre nt &&MacdPreviousvSig nalPrevious &&MathAbs(MacdCurrent)>(MA
23、CDOpenLevel*Point) &&MaCurre nt>MaPrevious)ticket=OrderSe nd(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Poi nt,"m acd sample",16384,0,Gree n);if(ticket>0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Prin t("BUY 定單開倉:",OrderOpe nPrice();else Prin t("錯誤 B
24、UY定單開倉:",GetLastError();return(0);/盡可能檢測賣空倉位(SELL)if(MacdCurre nt>0 && MacdCurre nt<Sig nalCurre nt &&MacdPrevious>Sig nalPrevious &&MacdCurre nt>(MACDOpe nLevel*Poi nt) && MaCurre ntvMaPrevious) ticket=OrderSe nd(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-Tak
25、eProfit*Poi nt," macd sample",16384,0,Red);if(ticket>0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Prin t("SELL 定單開倉:",OrderOpe nPrice();else Prin t("錯誤 SELL定單開倉:",GetLastError();return(0);return(0);/正確進入市場很重要,/但正確退出市場更重要for(c nt=0;c nt<total;cnt+)OrderSel
26、ect(c nt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && /檢測開倉OrderSymbol()=Symbol() /檢測貨幣對if(OrderType()=OP_BUY) /看漲倉位開倉/需要平倉嗎?if(MacdCurre nt>0 && MacdCurre nt<Sig nalCurre nt &&MacdPrevious>Sig nalPrevious &&MacdCurre nt>(MACDCloseLevel*Poi nt)OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);/平倉return(O); /退出/檢測追蹤止損if(Traili ngStop>0)if(Bid-OrderOpe nPrice()>Poi nt*Traili ngStop) if(OrderStopLoss()<Bid-Poi nt*Traili ngStop)OrderModify(OrderTicket(),OrderOpe nPrice(),B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報書:國際宣教會的社會參與研究(1921-1937)
- 電子政務(wù)的數(shù)字化發(fā)展與創(chuàng)新
- 江蘇省泰興市、興化市2024-2025學(xué)年高一上學(xué)期期中聯(lián)考?xì)v史試卷(解析版)
- 湖南省衡陽市衡陽縣2024-2025學(xué)年高三上學(xué)期第一次模擬考試歷史試題(解析版)
- 2024年版:智能農(nóng)業(yè)解決方案提供合同
- 四川工商學(xué)院《城鄉(xiāng)生態(tài)與環(huán)境規(guī)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川工程職業(yè)技術(shù)學(xué)院《城市規(guī)劃原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 工服定制合同范例
- 小飯桌轉(zhuǎn)租合同范例
- 轉(zhuǎn)讓公司廣告合同范例
- DL∕T 5028.1-2015 電力工程制圖標(biāo)準(zhǔn) 第1部分:一般規(guī)則部分
- 創(chuàng)新工程實踐智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)等跨校共建
- Unit 6 Section A 課件 人教版2024七年級英語上冊
- 江西省物業(yè)管理服務(wù)收費辦法
- 高級臨床藥學(xué)實踐概論智慧樹知到期末考試答案章節(jié)答案2024年沈陽藥科大學(xué)
- 2024年人教版小學(xué)五年級信息技術(shù)(下冊)期末試卷附答案
- 洗煤廠代加工的合同范本
- 北京市體育競賽管理和國際交流中心招聘筆試真題2022
- JT-T-1134-2017道路客貨運運輸駕駛員行車操作規(guī)范
- 2024年安徽省初中學(xué)業(yè)水平考試中考數(shù)學(xué)試卷(真題+答案)
- 航天企業(yè)員工入股協(xié)議書樣本
評論
0/150
提交評論