2016/09/30

2016/09/30 (五) EA编程之自訂函數簡化主程序 !

(:本站文案除原創外,其餘訊息来自互联网收集和整理,请自行参酌。)
2016/09/30 ()

EA编程之自訂函數簡化主程序 !

>>><<< $ ¥
€ >>><<<

一、常用自訂函數:

MQL4
提供了大量的基本函數和語句,然而我們在程式設計中發現很多的對行情的判斷與操作都是重複的,比如判斷指標快慢線是否交叉,這就需要用到自訂函數來簡化主程序。

自訂函數通常放在程式的後面,函數格式與說明如下:(略圖)




在程式中調用該自訂函數的例子如下:

If (myIndicators(“
金叉”,Close[0]))=”Sell”

將自訂函數參數寫進去,就會得到按預定演算法返回一個結果。

二、最大開倉量計算:

保證金的合理使用是風險控制的重要手段,因此計算最大開倉量就顯得非常重要。在許多風險控制論述中都會有這麼一段類似的文字描述:開倉量為餘額的5%”。其實這種說法極其的不準確,甚至會導致因開倉量控制不嚴格而帶來無謂的虧損。

不同貨幣對的1標準手自由保證金是不同的,而且如果你有持倉訂單,由於價格變化導致帳戶淨值也在變化,那麼開倉量(手)也會發生變化。

以下代碼計算了在當前貨幣對、當前價格的前提下,使用全部自由保證金(帐户幣元)的最大開倉量(手): 其中myBuyLots為買入訂單的最大開倉量(手),mySellLots為賣出訂單的最大開倉量(手)。計算方法須考慮帳戶淨值()、開倉量()1標準手自由保證金()

所以,如果自定設置的5%開倉量應該為:myLots×5% 我們來看看通過程式計算顯示的結果:最大開倉量計算如果到了小數點後面8位,而實際操盤時的開倉量最小為0.01手,如果你直接使用這個資料,程式會報錯,因此還需要通過內置函數將開倉量截止(不用四捨五入)到小數點後面2位:

myLots =NormalizeDouble(myLots,2) OrderSend(Symbol(),OP_SELL, myLots ,Bid,0,0,0);//
開一張賣出訂單


 (略圖)

待續

>>><<< $ ¥€ >>><<<

(:本站文案除原創外,其餘訊息来自互联网收集和整理,请自行参酌。)