在開發一個EA之前,需要對EA的策略進行規劃,做到有的放矢。www.emoneybtc.com
EA的策略包括一下幾點:
1、開倉:當行情滿足什麼條件時,EA進行開倉,何時做多,何時做空。
2、平倉:當行情滿足什麼條件時,EA要進行平倉。
3、止損和止贏:EA是否需要設置止損和止贏,如何設置。一般來說,止損是最好要設置的,以防止行情突變所帶來的無法預料的損失。
不同於股票交易,外匯交易在下單的時候,可以設置止損價位和止贏價位,當價格達到止損或止贏價位時,交易單自動平倉。
以做多為例,假設買價為1.5000,止損價為1.4800,止贏價為1.5100,那麼這裡止損就是200點,止贏就是100點。
4、加碼:是否要加碼,何時加碼。
接下來,以Larry Williams在《短線交易秘訣》中講到的一個交易方法來作為本例的交易策略。
if
語句:當括號()內的條件成立時,執行 { } 內的代碼
if語句:當括號()內的條件成立時,執行 { } 內的代碼
==運算符:相等判斷
&&運算符:並且判斷
Hour函數: 當前時間的小時部分, 0~23
Minute函數:當前時間的分鐘部分, 0~59
Open[0]表示當前周期的開盤價,
Close[1] 表示上一周期的收盤價,
Open 和 Close 都是預定義數組,分別表示開盤價和收盤價, 0 和 1 是周期數,關於數組的詳細描述,請參閱後續章節。
本 ea 是運行於 H1 周期的,
Open[0] 表示當前一小時的開盤價,
Close[1] 表示上一小時的收盤價;當滿足行 8 列出的條件時,
Open[0] 等同於星期一的開盤價,
Close[1] 等同於上周五的收盤價。
行 11 :下買單。
行 13 :下賣單 OrderSend函數用於下單,
各參數含義如下:
參數 1 :貨幣對。
Symbol 函數返回 ea 附著的當前貨幣對。
參數 2 :單據類型。 OP_BUY:買單 OP_SELL:賣單
OP_BUYSTOP: BUYSTOP 單 OP_BUYLIMIT: BUYLIMIT 單 OP_SELLSTOP: SELLSTOP 單 OP_SELLLIMIT: SELLLIMIT 單 參數
3 :下單大小。本例為 0.1 手
參數 4 :交易價格。
對於買單而言,最低交易價格是 Ask ;對於賣單,最高交易價格是 Bid
參數 5 :滑點。
由於發生 OrderSend 指令到單據成交之間有個時間差,在這段時間之類,交易價格可能會發生變動,導致無法按照指定的價格進行成交。
交易者可以在下單的時候指定最終交易價格和原定交易價格之間的最大浮動值,
以確保交易盡快成交。這個值的單位為 Point 。
參數 6 :止損價位。為 0 表示不指定止損價。
參數 7 :止盈價位。為 0 表示不指定止盈價。
參數 8 :單據的備注。
參數 9 :單據的 magic 數字。magic 數字用於區分不同 ea 所下的單,具體請參閱後續章節。
參數 10 :單據失效時間。僅限掛單,當單據打到後,掛單自動刪除。為 0 表示不指定失效時間。
參數 11 :箭頭顏色。下單成功後, ea 在行情圖表上會用一個箭頭圖標標注下單位置。買單為藍色 Blue ,賣單為紅色 Red 。
返回值:單據編號。如果返回值為 -1 表示下單失敗。此處沒有檢查下單結果。
行 16 :選定第一個單。在對單據進行後續操作之前,一般需要有個選定的動作。
OrderSelect函數:選定一個單據
參數 2 :選定標准。
SELECT_BY_POS 按照單據序號選定,所有的單據都是從 0 開始編序號的。
SELECT_BY_TICKET 按照單據編號選定。
SELECT_BY_POS 和 SELECT_BY_TICKET 都是整數常量,關於整數和常量的概念,請參閱後續章節。
參數 1 :要選定的單據的值,具體的值的含義由參數 2 解釋。
行 17 :如果當前時間離選定單據的下單時間超過一天,則執行 18~23 行。
TimeCurrent函數:表示當前時間,單位為秒。返回值為從 1970 年 1 月 1 日零點到現在的秒數。
OrderOpenTime函數:返回選定單據的下單時間,單位為秒。
行 18 :如果為買單則按照 Bid 平倉(行 19 ) 行 19 :如果為賣單則按照 Ask 平倉(行 22 )
OrderType函數:返回選定單據的單據類型。
參數 1 :單據編號。
OrderTicket 函數返回當前選定單據的編號 參數 2 :平倉數量。
OrderLots 函數返回當前選定單據的手數。
參數 3 :平倉價格。
對於買單為 Bid ,對於賣單為 Ask 。 Ask 和 Bid 是兩個浮點數類型的變量,關於浮點數和變量的概念,請參閱後續章節。
參數 4 :滑點。含義同 OrderSend 中的滑點。
本 ea 的代碼量為 28 行。
考慮到初學者的理解能力,進入的概念是比較少的。
對本 ea 稍加改造,加上少量代碼後,會完整而可靠的實現交易思路,整個代碼量將不會超過 40 行。
一般來說,完整的實現一個交易思路所需的 ea 的代碼量是不大的,即便是對於很復雜的交易策略,
對於熟練開發者來說,所需的代碼量也很少會超過 500 行。如果某個交易思想需要過多的代碼量來表達,
那麼很可能是以下兩種情況。
第一情況,邏輯混亂。 mt 平台的 ea 的運行邏輯和人處理交易的邏輯是有些不一樣的。
人在處理交易的時候,講求一個步驟,先開倉,後平倉,這個過程裡面有一個思維的先後延續性。
而對於 mt 平台的 ea 而言,所有的邏輯只有一個 start 函數,
而 start 函數的執行並非是有先後次序的(當然 start 函數內部的代碼是先後執行的),
“價格變動一次, start 函數執行一次”是 ea 邏輯的最高歸納。
這種重復性、隨機性和人工交易的步驟性思維是不一樣的,
為了將這種隨機性邏輯轉化為步驟性邏輯,這就要求開發者在程序內部維護並檢查當前交易進度的狀態,
使得每次 start 被執行的時候,按照當前狀態來決定下一步的動作:開倉或是平倉。
在 ea_002 中,行 8 、行 9 、行 17 即是對當前交易狀態的判斷,
特別是行 17 ,如果去掉了這行,將導致在周一開盤的 5 分鐘內, ea 反復的開倉和平倉。
-------------------------------------------------------------------------------------------------------------------------
1.1. 基本語法
MT4的源代碼由以下幾部分組成,各部分之間一般用行進行分隔:
1、 注釋
注釋是源代碼中的說明部分,一般是為了說源代碼進行說明,以便更好的閱讀。
注釋不是可執行代碼的一部分,在源代碼編譯生成可執行代碼的時候,
注釋會被忽略。
(1) 單行注釋 以 // 開頭的行,即是注釋。
(2) 多行注釋 以 結束。 之間的部分即是注釋。
2、 預處理指令
以 # 開頭的行,是預處理指令,用於一些特殊的說明和用途。具體描述請參閱後面的“預處理指令”。
3、 全局變量定義
請參閱後面的“變量”部分。
4、 函數
除了以上三個部分, MT 代碼的其他部分都是由若干個函數組成,函數之間可相互調用。
函數則由語句組成,語句之間采用分號進行分隔,這些語句會在後面逐漸提到。
除非特別說明,語句的各個部分是區分大小寫的,即 start 和 START 是不一樣的。
關於語句的一些元素的約定如下: 1、 2、保留字
保留字是 MT 語言中預先占用,用戶不可用於變量命名,這些保留字如下,它們會在後續章節中逐漸提到。
bool、 break 、 case 、 color 、 continue 、 datetime 、 default 、 double 、
else 、 extern 、 false 、 for 、 if 、 int 、 return 、 static 、 string 、 switch 、 true 、 void 、 while 。
其中 return 可以把它當做一個保留字,也可以當做一個特殊的函數。
日前,銀保監會向各大銀行、保險公司下發《中國銀保監會辦公廳關於推動供應鏈金融服務實體經濟的指導意見》(以下簡稱《意見》),《意見》指出,
據了解鏈行成立於2016年是由幣林網絡科技(上海)有限公司獨立運營的創新型數字資產交易平台,以流通比特幣、以太坊、零幣等在區塊鏈上發行的優
這篇文章主要和大家介紹下比特幣的交易過程。比特幣底層技術要點:節點 / 交易過程 / 區塊 / 區塊頭 / 區塊形成 / 區塊分叉比特幣是
文 | 江宴注:本篇內容僅供娛樂最近的幣圈,風雨飄搖,以太坊跌破$300,萬幣歸零,眾韭菜們的心也在這股寒冬中,被凍得拔涼拔涼。伴隨著跌跌
區塊鏈解決方案主要是指在底層平台的基礎上進行擴展,目的是便於開發者基於區塊鏈技術開發出產品和應用,或者是服務商直接為客戶提供針對具體業務場
法國法郎(French Franc,原符號:F.F.;Fr.Fc.; F.FR.,標准符號:FRF)法國法郎小傳 以“自由&rd
銀行貸款是無法擺脫條條框框的,因為作為正規的貸款機構,你必須提供那麼多短款資料和證明。然而現在即使能提供身份證明,一時間可能因
外_匯_邦 WaiHuiBang.com 接觸外匯交易已有多年,感觸很深
最佳答案: 據希財君了解,閃電借款催收手段確實很厲害。不僅爆通訊錄,還會在論壇發帖要賬,轟炸朋友圈,
來自中國銀行官網回答:您可以在開通理財直付功能的同時,開通理財直付的短信通知服務。您也可以在“中銀e信-