iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
SideProject30

從零開始的外匯自動程式交易系列 第 7

DAY7 更多的事件處理器介紹

  • 分享至 

  • xImage
  •  

昨天我們討論了一些基本的On開頭的事件處理器,而On系列的處理器遠遠不止這些,今天就來說一些昨天沒提到,但在可選列表內,或是常用的一些處理器。

OnTimer:

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

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[]             // 价差数组,包含历史价格数据的价差(差价)
    )

OnStart

運行EA時即會觸發,也是整個EA主要交易邏輯,包括技術分析 決策邏輯 實際交易操作等執行的地方。在初期編寫EA時,幾乎能只靠這個處理器就能完成。


以上便是常用的函式簡介與它們的用法,下面就來說一些更複雜的系列,這些系列雖然也是On開頭,但是它們會多了個使用範圍,延伸的函式更多,所以我這邊也就簡介一下就好。

OnBook系列

主要用於 監控市場深度數據 的變化。

相關處理器:

  • OnBookEvent:數據變化即觸發
  • OnBookAdd:增加訂單時觸發
  • OnBookDelete:刪除訂單觸發
  • OnBookChange:訂單價格或數量變化時觸發

OnTester系列

僅用於模擬交易和監控回測過程中的事件,在正常交易情況不會觸發,若在實際交易時,通常使用OnTick執行實時交易操作。

相關處理器

  • OnTesterInit:回測開始時觸發
  • OnTesterPass:回測期間每次模擬交易操作時觸發
    -OnTesterPassVisual:可視化回測期間觸發
  • OnTesterPassComplete:回測完成時觸發(額外操作,例如生成報告)
  • OnTesterDeinit:回測結束時出發(清理)
  • OnTesterWithdrawal:模擬資金提取 存入操作
  • OnTesterSettings:設置回測參數/策略輸入參數

OnChart系列:

用於處理圖表上的事件與操作

相關處理器

  • OnChartEvent:圖表上的游標事件發生時觸發
  • OnChartObjectCreate:在圖表上創建新圖形對象時觸發
  • OnChartObjectChange:圖表上的圖形對象發生變化時觸發
  • OnChartObjectDelete:圖表上刪除圖形對象時觸發
  • OnChartObjectClick:單擊圖形對象觸發
  • OnChartObjectDblClick:雙擊圖形對象時觸發

以上便是一些常用處理器的簡介與其用法,系列介紹就先不放範例應用了,為了避免篇幅太長大家看得太累。如果之後在實作有用到的時候再跟大家分享範例,或是我統整完再多發一篇關於這些處理器的文。

今天就寫到這邊啦~明天禮拜六還要補課補班,大家也都早點睡吧。

再撐一下,快連假了!!!


上一篇
DAY6 解析--EA範例的函數到底怎麼用
下一篇
DAY8 MQL5的前置處理指示詞
系列文
從零開始的外匯自動程式交易30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言