前一篇講了怎麼使用腳本來作測試函數
這一篇來寫一下怎麼做一個簡單的下單腳本,來輔助我們手動下單
平常我們下單時,都要自設停損、停利點
做當沖時這就有點麻煩,下個一筆單就要重設一次,還要算個半天
每次下單都弄得奇摩邁
這時候就可以自己弄個簡單下單腳本來用
下單腳本也很簡單
只需要用到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就可以了,停損停利的正負號互相對調就改好了
留言列表