前一篇講了怎麼使用腳本來作測試函數

這一篇來寫一下怎麼做一個簡單的下單腳本,來輔助我們手動下單

平常我們下單時,都要自設停損、停利點

做當沖時這就有點麻煩,下個一筆單就要重設一次,還要算個半天

每次下單都弄得奇摩邁

這時候就可以自己弄個簡單下單腳本來用

下單腳本也很簡單

只需要用到OrderSend()這個函數就好了

然後作多(Long)跟作空(Short)建議就分開寫成兩個腳本,

下面簡單帶一下步驟,在MetaEditor中先創一個新的文檔(Ctrl+N),就會跳出下面的圖,在上面點腳本,然後按下一步

輸入腳本的名稱,可打中文,也可以用空格分開,例如"下 BUY  單   設定停損停利"

然後如果要從外面添加參數的話,就按「增加」,看你要加幾個參數就加幾個

一開始不加也沒關係,後來進去程式碼改就好了

按下完成就會建成最開始的頁面,如果有增加參數的話,可以看到多了一行#property script_show_inputs

這一行就是用來控制執行腳本後,是否要跳出輸入參數視窗的

如果之後不想要跳出視窗的話,把這行刪掉或註解掉就好了

下面的三個變數input1-3,就是上面增加的變數

前面的Input就是要從外面輸入的意思,後面就是一般C語言設變數的語法
 

當然,有時候你也會看到input變成extern,也是從外面輸入參數的意思

但差別是Input後來在程式裡是一個常數,不能更改,而extern可以改

使用時機的考量,就看你後來有沒有要對他作運算或變動等等

現在我們這個程式很簡單,用哪個都一樣

 

直接compile執行就會跳出下圖這樣,當然,因為上面程式碼什麼都沒寫,這腳本什麼也不會作就是了

回到程式碼的部分,因為我們至少想要設定下單手數、停損點數、停利點數

所以就把input1~3改成我們要的變數,然後各自給他一個初值,這樣以後就不用每次都改他,浪費時間

compile後執行的結果,輸入的畫面就會變成我們想要的:

如果你覺得英文很不友善,也可以在程式碼中加註中文

輸入欄位就會變成下面這樣,友善的多

接著就來寫下單的部分吧,終於要進到重點了T___T

在OnStart中輸入以下的程式碼

最重要的OrderSend的這個函數,然後必須要用一個變數來接收回傳值,不然compile不會過

所以   bool BUY=OrderSend(......);   是不可缺少的

當然BUY這個名稱是我自己取的,你要改成別的也可以,好辨識就好

當然BUY也可以在前面就宣告了,例如下面這樣,寫了幾個腳本之後,我發覺一開始就宣告會比較好

後面才宣告有時會卡在一些奇怪的結構裡,然後你就不能宣告

例如在Switch中,你才宣告變數,compile就不會過

回到OrderSend這個函數,因為他有11個參數要輸入,一開始看到真的很頭大~__~

但寫過一次後,你就知道哪些才是重點了

官方版的說明在這

但是是全英文的,不是很友善,所以我下面直接用例子說明吧XD

參下圖,我把11個參數改成比較容易看的樣子,其中5.跟10.大概都不會去動他

會動到的話,你大概是交易的高手吧 (至少比我高XD,看小弟獻醜了)

第一個參數是寫哪一個貨幣兌的,除非特別要限定,不然填NULL就好了,他會在當前圖表運作

第二個參數是掛單類型,因為我們現在要作BUY單,所以就填0,或是填OP_BUY,人比較看得懂

反正程式一樣會把他轉成0,詳細的話一樣要參考說明檔(說明檔真好用),或是官方的參照表

 

第三個參數是下單手數,我們前面有定義輸入的lots現在用到了,所以把lots丟上去就好了

第四個參數則是下單價格,使用Ask這個MT4內建的函數,他就會回傳當前BUY單的市場價格(若是作SELL單就用Bid)

第五個參數,滑價,沒特別考量就設0吧,(沒用到,不知道怎麼用XD|||)

 

第六跟第七,分別是停損價格跟停利價格,這邊我把計算式子寫在裡面,不過也是可以另外設變數再代進來就好了

裡面乘上一個Point(最小報價單位)的原因是,貨幣兌通常都是像1.12351或0.91233這種報價,要符合這個格式

就必須用這種算法,所以這算標準的寫法吧(看書上也是這樣寫,別人的code也是這樣)

然後因為一個是停損,一個是停利,所以一個減一個加,才會是對的價格

 

第八個參數,註解,一樣之前設了變數,會在下單後看到,可以再裡面寫上停損停利是多少點之類的,比較方便

第九個參數,魔法數字(Magic Number),其實是用來辨識下單是哪個EA下的,因為現在只是在寫腳本,

這邊隨便設就好了,基本上沒什麼差別

 

參數十,到期時間,一樣沒用過,設0就好,跳過

參數十一,下單指標的顏色,一律要成clrRed、clrGreen這種形式

我看有些比較久以前的code是直接寫顏色的名稱,例如Green、Red

但compile都不能用,都要改成前面加clr的才能動,一樣,官方有參照表

===

基本上,上面這樣弄完,一個自動設停損停利的下BUY單腳本就寫好可以用了

下SELL單的話,把上面第二個參數的0改成1,或改成OP_SELL就可以了,停損停利的正負號互相對調就改好了

 

 

arrow
arrow

    迷途工程師 發表在 痞客邦 留言(0) 人氣()