昨天我們討論了一些基本的On開頭的事件處理器,而On系列的處理器遠遠不止這些,今天就來說一些昨天沒提到,但在可選列表內,或是常用的一些處理器。
OnTimer用於處理定時器事件,可以使我們在自己指定的時間間隔內執行操作,而不必依賴其他事件觸發。
在OnTime前會設定一個定時器間隔,這個設定函數EventSetTimer()會出現在OnInit中,而停止計時器函數EventKillTimer()則是常在DeInit裡。
input int TimerInterval = 1000; //單位為毫秒
int OnInit()
{
EventSetTimer(TimerInterval);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Print("Timer Demo: This message appears every second.");
}
OnCalculate用於計算自定義指標的值,當需要重新計算指標數據時會被觸發。通常會在後面const一些參數,而這個函式會牽扯到的程式碼都較長且複雜,就不做範例了,以下是常使用的參數。
int OnCalculate(
const int rates_total, // 当前的历史数据总数量
const int prev_calculated, // 之前已经计算过的数据数量
const datetime &time[], // 时间戳数组,包含历史价格数据的时间
const double &open[], // 开盘价数组,包含历史价格数据的开盘价格
const double &high[], // 最高价数组,包含历史价格数据的最高价格
const double &low[], // 最低价数组,包含历史价格数据的最低价格
const double &close[], // 收盘价数组,包含历史价格数据的收盘价格
const long &tick_volume[], // 成交量数组,包含历史价格数据的成交量
const long &volume[], // 成交量数组,包含历史价格数据的实际成交量(可能与 tick_volume 不同)
const int &spread[] // 价差数组,包含历史价格数据的价差(差价)
)
運行EA時即會觸發,也是整個EA主要交易邏輯,包括技術分析 決策邏輯 實際交易操作等執行的地方。在初期編寫EA時,幾乎能只靠這個處理器就能完成。
以上便是常用的函式簡介與它們的用法,下面就來說一些更複雜的系列,這些系列雖然也是On開頭,但是它們會多了個使用範圍,延伸的函式更多,所以我這邊也就簡介一下就好。
主要用於 監控市場深度數據 的變化。
僅用於模擬交易和監控回測過程中的事件,在正常交易情況不會觸發,若在實際交易時,通常使用OnTick執行實時交易操作。
用於處理圖表上的事件與操作
以上便是一些常用處理器的簡介與其用法,系列介紹就先不放範例應用了,為了避免篇幅太長大家看得太累。如果之後在實作有用到的時候再跟大家分享範例,或是我統整完再多發一篇關於這些處理器的文。
今天就寫到這邊啦~明天禮拜六還要補課補班,大家也都早點睡吧。
再撐一下,快連假了!!!