外匯MT4-EA智能系統(tǒng)MQ4編寫詳細(xì)舉例_第1頁(yè)
外匯MT4-EA智能系統(tǒng)MQ4編寫詳細(xì)舉例_第2頁(yè)
外匯MT4-EA智能系統(tǒng)MQ4編寫詳細(xì)舉例_第3頁(yè)
外匯MT4-EA智能系統(tǒng)MQ4編寫詳細(xì)舉例_第4頁(yè)
外匯MT4-EA智能系統(tǒng)MQ4編寫詳細(xì)舉例_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、創(chuàng)建一簡(jiǎn)易的人工智能系統(tǒng)舉例說明讓我們將指標(biāo)同獲利能力、支撐移動(dòng)止損位以及操作安全等因素結(jié)合起來考慮以創(chuàng)建人工智能系統(tǒng)。下面的例子是開立和控制一個(gè)單獨(dú)的頭寸。交易原則:做多(買入)信號(hào)一一即當(dāng)指針是在軸在以下,為向上的趨勢(shì)并與向下的信號(hào)線相交金叉)做空賣出)信號(hào)一一即當(dāng)指針是在軸以上,為向下趨勢(shì)并與向上的信號(hào)線相交死叉)多頭平倉(cāng)信號(hào)一一即執(zhí)行限價(jià)平倉(cāng)指令或移動(dòng)止損指令以獲得利潤(rùn)或者在指針與信號(hào)線相交指針在軸以上且為向下趨勢(shì)并與向上趨勢(shì)的信號(hào)線相交)時(shí)平倉(cāng)空頭平倉(cāng)信號(hào)即執(zhí)行限價(jià)平倉(cāng)指令或移動(dòng)止損指令以獲得利潤(rùn)或者在指針與信號(hào)線相交指針在軸以下且為向上趨勢(shì)并與向下趨勢(shì)的信號(hào)線相交)時(shí)平倉(cāng)重要提示在

2、我們分析指標(biāo)時(shí),為了排除指示中一些并不重要的變化情況即圖表中的細(xì)微“小丘”),下面我們另外引薦一種控制“小丘”大小的方法指示范圍至少為個(gè)最小單位點(diǎn),即,第一步撰寫人工智能系統(tǒng)說明將鼠標(biāo)指在導(dǎo)航窗口的人工智能系統(tǒng),點(diǎn)擊鼠標(biāo)右鍵在彈出的菜單中創(chuàng)建一個(gè)智能系統(tǒng))命令正在初始化的會(huì)問你是否要輸入數(shù)據(jù)在彈出的窗口中你得寫下名字人工智能系統(tǒng)的名字)、作者、與你的網(wǎng)址鏈接、須知一人工智能系統(tǒng)的測(cè)試樣本你也可以設(shè)定你想要的交易單位),止損點(diǎn)),平倉(cāng))和移動(dòng)止損)的默認(rèn)值第二步創(chuàng)立程序的初步結(jié)構(gòu)測(cè)試系統(tǒng)的代碼僅僅為幾頁(yè)紙,即使是這幾頁(yè)紙仍然是難以理解的,特別是在我們這些不是專業(yè)的程序員的眼里是非常難的不然,我們

3、也不必寫下這段說明,不是嗎為了了解標(biāo)準(zhǔn)的人工智能系統(tǒng)的結(jié)構(gòu),我們來看一下下面的解釋初始資料檢查檢查圖表,圖表上棍的數(shù)量檢查空外圍部:變.數(shù)值設(shè)置為快速數(shù)據(jù)存取的內(nèi)部變量檢空查交:易3終端一是否有空間?如果有,然后檢查空賬戶中的可用資金否可以做空(賣出)是否可以做多買入)圍:建倉(cāng)空賣圍出:和.平倉(cāng)若是多頭合約是否要平倉(cāng)點(diǎn)若是空頭合約是否要平倉(cāng)建倉(cāng)買入和平倉(cāng)是定期控制已開立的頭寸圍以是否空要圍重以新.設(shè)定移動(dòng)止損圍以是否空要圍重以新已設(shè)定移動(dòng)止損點(diǎn)這是相對(duì)簡(jiǎn)單的樣板,僅僅只有個(gè)主要單元現(xiàn)以在我空們圍來以試著逐漸將結(jié)構(gòu)表中的每一部分的代碼做出來初空始圍資以料1檢查這一空塊圍的以數(shù)據(jù)通常是經(jīng)過稍稍修改

4、后從一個(gè)系統(tǒng)移至另一系統(tǒng)的一這實(shí)際上是一單元檢查收益小于點(diǎn)退出設(shè)置為快速數(shù)據(jù)存取的內(nèi)部變量在程序代碼中,有的是經(jīng)常需要存取的指示值和操做的計(jì)算值已為了簡(jiǎn)化譯碼和加速存取,數(shù)據(jù)最初便在內(nèi)部變數(shù)中嵌套進(jìn)去現(xiàn)在我們以在程序中簡(jiǎn)單的寫入字符代替晦澀難懂的所有的人工智能系統(tǒng)中的變量都依據(jù)語(yǔ)言進(jìn)行基本的解釋.語(yǔ)言還另外推出一種的用戶自定義變量它可以在程序外設(shè)定而無(wú)須任何系統(tǒng)程序下的源程序正文的參考這個(gè)特點(diǎn)使程序更具靈活性變量就是一個(gè)這種類型的用戶自定義變量因此我們?cè)诔绦虻拈_頭加入這段說明.檢查交易終端是否有空間如果有然后在我們的人工智能系統(tǒng)中我們只能使用現(xiàn)時(shí)頭寸而不能操作延遲的買賣盤.為了安全起見,我們介

5、紹一種核對(duì)過去交易終端已下買賣盤的程序.檢查賬戶的可用資金在分析市場(chǎng)狀況之前最好先檢查一下你的賬戶的資金情況以確保賬戶中有開立頭寸的資金.-是否可以做多買入買入的條件信號(hào):指標(biāo)在軸以下,為向上趨勢(shì)且與向下趨勢(shì)的信號(hào)線相交。這就是我們?cè)谡Z(yǔ)言中如何描述它的(說明我們?nèi)绾尾僮鬟^去在變量中存入的指示值)前面我們提到了一種監(jiān)控圖表中所要顯示“小丘”的大小的一種方法。變量是自定義變量,它可以不影響程序正本而改變同時(shí),還確保了更多的靈活性。在程序的初始,我們加入一段這個(gè)變量的描述.是否可以做空賣出賣出的條件信號(hào)指標(biāo)在軸以上,為向下趨勢(shì)且與向上趨勢(shì)的信號(hào)線相交符號(hào)如下定期控制已開立的頭寸是周期變量是在程序之開

6、端進(jìn)行描述的,方式如下若是買入合約是否需平倉(cāng)?平倉(cāng)的條件信號(hào):指針與信號(hào)線相交指針在軸以上為向下趨勢(shì)且與向上趨勢(shì)的信號(hào)線相交是否需要重新設(shè)定移動(dòng)止損點(diǎn)我們僅在持倉(cāng)并已超過移動(dòng)止損點(diǎn)數(shù)點(diǎn)還獲利的情況下設(shè)定移動(dòng)止損點(diǎn)即新的移動(dòng)止損點(diǎn)比以前的更精確時(shí)才重設(shè)若是空頭合約else/otherwiseitisashortposition.是否需平倉(cāng)?平倉(cāng)的條件信號(hào):MACD指針與信號(hào)線相交,MACD指針在0軸以下,為向上趨勢(shì)且與向下趨勢(shì)的信號(hào)線相交.IfMacdCurrentSignalCurrentandMacdPrevious(MACDCloseLevel*Point)thenCloseOrder(O

7、rdervalue(cnt,VAL_TICKET),Ordervalue(cnt,VAL_LOTS),Ask,3,Violet);Exit;/exitvBR;vBRvBR.是否需要重新設(shè)定移動(dòng)止損點(diǎn)?我們僅在持倉(cāng)并已超過移動(dòng)止損點(diǎn)數(shù)點(diǎn)還獲利的情況下設(shè)定移動(dòng)止損點(diǎn),即新的移動(dòng)止損點(diǎn)比以前的更精確時(shí)才重設(shè).IfTrailingStop0then/theuserhasputatrailingstopinhissettings/so,wesetouttocheckitIf(Ordervalue(cnt,VAL_OPENPRICE)-Ask)(Point*TrailingStop)thenIfOrder

8、value(cnt,VAL_STOPLOSS)=0orOrdervalue(cnt,VAL_STOPLOSS)(Ask+Point*TrailingStop)thenModifyOrder(Ordervalue(cnt,VAL_TICKET),Ordervalue(cnt,VAL_OPENPRICE),Ask+Point*TrailingStop,Ordervalue(cnt,VAL_TAKEPROFIT),Red);Exit;/end.Closingallthecurlybracketwhichremainopen.;vBRxBR;vBRxBR這樣,跟著這套初學(xué)漸進(jìn)程序,我們就學(xué)會(huì)了編寫自己

9、的人工智能系統(tǒng).第三步:將所有程序代碼集合起來我們將前面所有的代碼集合過來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);/initialdatachecks/itisimportanttomakesurethattheExpertAdvisorrunsonanormalchartan

10、dthat/theuserhascorrectlysettheexternalvariables(Lots,StopLoss,/TakeProfit,TrailingStop)/inourcaseweonlychecktheTakeProfitIfBars200orTakeProfit10thenExit;/lessthan200barsonthechart/tosimplifyandspeeduptheprocedure,westorethenecessary/indicatordataintemporaryvariablesMacdCurrent=iMACD(12,26,9,0,MODE_

11、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);/nowwehavetocheckthestatusofthetradingterminal./wearegoingtoseewhetherthereareanyprevi

12、ouslyopenedpositionsororders.IfTotalTrades1then/therearenoopenedorders/justtobeonthesafeside,wemakesurewehavefreefundsonouraccount./the1000valueistakenjustasanexample,usuallyitispossibletoopen1lotIfFreeMargin1000thenExit;/nomoney-weexit/checkingforthepossibilitytotakealongposition(BUY)IfMacdCurrentS

13、ignalCurrentandMacdPrevious(MACDOpenLevel*Point)andMaCurrentMaPreviousthenSetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED);/executingExit;/exiting,sinceaftertheexecutionofatrade/thereisa10-secondtradingtimeout;/checkingforthepossibilityoftakingashortposition(SELL)IfMacdCurrent0andMacdCurrentMa

14、cdPreviousSignalPreviousandMacdCurrent(MACDOpenLevel*Point)andMaCurrentSetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED);/executingExit;/exiting;/herewecompletedthecheckforthepossibilityofopeningnewpositions./nonewpositionswereopenedandwesimplyexittheprogrammeusingtheExitcommand,as/thereisnoth

15、ingtoanalyzeExit;/wecomeovertoanimportantpartoftheExpertAdvisor-thecontrolofopenpositions/itisimportanttoenterthemarketcorrectly,butitisevenmoreimportanttoexitit.forcnt=1toTotalTradesifOrdervalue(cnt,VAL_TYPE)=OP_SELLand/isthisanopenposition?OP_BUYorOP_SELLOrdervalue(cnt,VAL_SYMBOL)=Symbolthen/doest

16、heinstrumentmatch?IfOrdervalue(cnt,VAL_TYPE)=OP_BUYthen/longpositionopened/wecheck-maybe,itsalreadytimetocloseit?IfMacdCurrent0andMacdCurrentMacdPreviousSignalPreviousandMacdCurrent(MACDCloseLevel*Point)thenCloseOrder(Ordervalue(cnt,VAL_TICKET),Ordervalue(cnt,VAL_LOTS),Bid,3,Violet);Exit;/exiting;/w

17、echeck-maybe,wealreadymayoritsalreadytimetosetatrailingstop?IfTrailingStop0then/theuserhasputatrailingstopinhissettings/so,wesetouttocheckitIf(Bid-Ordervalue(cnt,VAL_OPENPRICE)(Point*TrailingStop)thenIfOrdervalue(cnt,VAL_STOPLOSS)(Bid-Point*TrailingStop)thenModifyOrder(Ordervalue(cnt,VAL_TICKET),Ord

18、ervalue(cnt,VAL_OPENPRICE),Bid-Point*TrailingStop,Ordervalue(cnt,VAL_TAKEPROFIT),Red);Exit;else/otherwiseitisalongposition/wecheck-maybe,itsalreadytimetocloseit?IfMacdCurrentSignalCurrentandMacdPrevious(MACDCloseLevel*Point)thenCloseOrder(Ordervalue(cnt,VAL_TICKET),Ordervalue(cnt,VAL_LOTS),Ask,3,Vio

19、let);Exit;/exiting;/wecheck-maybe,wealreadymayoritsalreadytimetosetatrailingstop?IfTrailingStop0then/theuserhasputatrailingstopinhissettings/so,wesetouttocheckitIf(Ordervalue(cnt,VAL_OPENPRICE)-Ask)(Point*TrailingStop)thenIfOrdervalue(cnt,VAL_STOPLOSS)=0orOrdervalue(cnt,VAL_STOPLOSS)(Ask+Point*Trail

20、ingStop)thenModifyOrder(Ordervalue(cnt,VAL_TICKET),Ordervalue(cnt,VAL_OPENPRICE),T),Red);Ask+Point*TrailingStop,Ordervalue(cnt,VAL_TAKEPROFIExit;/theend.現(xiàn)在,我們只需給以下外部變量賦值就可以完成安裝人工智能系統(tǒng)的全過程.LOTS=l,STOPLOSS(S/L)=0,TAKEPROFIT(T/P)=120(適用于一個(gè)小時(shí)的間vBR隔),TRAILINGSTOP(T/S)=30,當(dāng)然你自己可以設(shè)定這些值.vBR按VERIFY按紐,若無(wú)別的錯(cuò)誤就按

21、SAVE按紐.現(xiàn)在,我們來編輯人工智能系統(tǒng)在MQL編輯器點(diǎn)擊頂端的VERIFY圖示(像一張有檢查標(biāo)記的紙.)。vBRvBR第四步:檢測(cè)人工智能系統(tǒng)的歷史資料vBRxBRxBR我們已將人工智能系統(tǒng)編寫完畢,現(xiàn)在我們已迫不及待地想用歷史數(shù)據(jù)來對(duì)系統(tǒng)進(jìn)行測(cè)試。讓我們以EUR/USD的15分鐘的間隔(大約4000棍)。為例,打開環(huán)球銀行交易平臺(tái)中的EUR/USD15分鐘圖,用ATTACHTOACHART命令將人工智能系統(tǒng)的MACD指針樣本圖粘貼在圖表上(在導(dǎo)航窗口用鼠標(biāo)選擇MACD樣本線,點(diǎn)擊鼠標(biāo)右鍵選擇所彈出菜單的命令).然后,到系統(tǒng)設(shè)置里,在這我們可以改變預(yù)設(shè)變量和用戶自定義變量,如LOTSSTO

22、PLOSSPROFIT.TRAILINGSTOP等.為了讓人工智能系統(tǒng)不僅只起到建議的作用,還能在營(yíng)業(yè)賬戶上自動(dòng)進(jìn)行實(shí)時(shí)操作,你需要擊活A(yù)LLOWLIVETRADING按紐.現(xiàn)在,我們來進(jìn)行歷史數(shù)據(jù)的測(cè)試了,我們不改變?cè)O(shè)置,轉(zhuǎn)接到STRATEGYTESTER標(biāo)簽,擊活A(yù)LLOWSONTHECHART標(biāo)記(要能在圖表上看到箭頭),然后,按START按紐開始測(cè)試.vBRvBRvBR人工智能系統(tǒng)所有代碼在ReadyExpertAdvisors頁(yè)都可找到。vBR當(dāng)你對(duì)人工智能系統(tǒng)作出修改時(shí)必須緊記:vBR修改和測(cè)試環(huán)球銀行交易平臺(tái)的人工智能系統(tǒng)時(shí)必須注意以下細(xì)節(jié):.在建立倉(cāng)位之前,你必須檢查你賬戶上可

23、用保證金的有效性。假如可用保證金不足時(shí),則開倉(cāng)請(qǐng)求將會(huì)失敗。必須注意的是,為了達(dá)到測(cè)試的目的,可用保證金最少應(yīng)在1000元,另一張單的測(cè)試價(jià)格也是1000元。vBRIfFreeMargin&It;1000ThenExit;/nofunds-exit當(dāng)開倉(cāng)、平倉(cāng)或者修改已有部位或刪除預(yù)先設(shè)定的部位(即是執(zhí)行以下任何的操作:SetOrder,CloseOrder,ModifyOrderorDeleteOrder)時(shí),建議使用人工智能系統(tǒng)的Exit語(yǔ)句來完成這部分的操作,這將有10秒鐘的限定時(shí)間間隔來執(zhí)行該項(xiàng)操作。注意,10秒鐘的限定時(shí)間不適用于測(cè)試模式(你可以在一行中做幾次交易),另外,假如不是用

24、Exit語(yǔ)句來完成人工智能系統(tǒng)的上述交易操作,人工智能系統(tǒng)的測(cè)試結(jié)果將和真實(shí)交易不同。SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED);/executingvBRExit;/exiting為了防止在測(cè)試模式中用少于10秒的間隔來執(zhí)行幾項(xiàng)交易,你只需確保從上一次交易到下一次的交易已經(jīng)超過10秒。makingsurethatthecurrenttimevalueisgreaterthan10secondssincetheexecutionofthelasttradeIfCurTimeLastTradeTime+10ThenBeginSetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED);/executingExit;End;.歷史數(shù)據(jù)可以用已引索的預(yù)設(shè)變量OPEN、CLOSE、HIGH、LOW、VOLUME來存取.在這種情況下,指數(shù)是指必須回頭計(jì)算的周期數(shù)./iftheClos

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論