股票量化軟體 資訊的儲存和閱覽

2023-07-20 21:31:31 字數 2738 閱讀 7690

就像我說的那樣, print()函式在記錄ea交易執行時生成的資訊時並不總是那麼方便。 特別是當有幾個ea交易同時在乙個相同終端上執行時就更加明顯。 每個ea交易都把它自己的資訊寫到記錄檔案中, 這樣就很難在其中找東西了。 這種情況下, 對此類資訊的分析就不用提了:這非常費力和麻煩。赫茲量化軟體。

這個問題可以用比較簡單的方法解決。 每個ea交易必須有它自己的記錄檔案。 資訊都會被寫進這些獨立的記錄檔案, 而不是寫進乙個通用的檔案中。 為了盡可能簡單地使用此方式, 讓我們把**寫成乙個函式。赫茲量化軟體。

以下就是描述這個函式必須做到的:

使用唯一名稱來建立檔案di

當有需要時在其中寫入資訊。

當ea交易結束執行時關閉檔案, 以便其他應用程式可以使用該檔案。

清晰明了。 唯一有爭議的一點是是否有必要在寫完每個記錄時關閉檔案。 一方面, 這樣就可以在ea交易執行過程中使用其他應用程式開啟此檔案了。 但是, 另一方面, 這樣對ea交易進行下一條記錄可能是不利的, 因為檔案可能被其他應用程式使用了。 如果出現這種情況, 資訊可能就直接丟掉了。 這是不能允許的, 特別是有些程式開啟檔案只是為了讀取, 而不願影響 赫茲量化軟體 的執行。赫茲量化軟體。

因為開啟和關閉檔案只進行一次, 對應的**可以分別放到 init() 和 deinit() 函式中。 為了讓它只占用最小的空間, 讓我們把它們也做成函式:赫茲量化軟體。

int log_handle = 1; /void log_open( string expertname = expert" )用於開啟ea交易獨立記錄檔案的函式。//建立檔案的目錄://metatrader 4\experts\files\logs\expertname\"/檔名就是檔案的記錄日期, 格式為 "yyyy.mm.dd"//void log_open( string expertname = expert" )string strperiod( int intperiod ) log_close()/用於關閉ea交易自身記錄檔案的函式。//void log_close()
現在我們有了乙個開啟的檔案, 可以在裡面寫資訊了。 為此:

把游標移動到檔案末尾, 這樣不會丟失資訊;

把記錄時間寫在每行開頭, 這將有助於分析;

把文字寫到檔案中;

把檔案儲存在磁碟上;如果ea交易意外出錯退出, 資料也不會丟失。

以下就是滿足上面需求的函式:赫茲量化軟體。

//+log( string text )/把文字行寫入ea交易自身記錄檔案的函式。//void log( string text ) 把檔案指標移動到檔案末尾 if ( fileseek ( log_handle, 0, seek_end ) 如果ea要寫的一行內容不包含換行符, /在一行的開始部分增加記錄時間 if( text !=n" &text !=r" )text = stringconcatenate( timetostr( localtime(),time_seconds ),text );if( filewrite ( log_handle, text ) 0 ) 把寫下的文字寫到磁碟上 fileflush( log_handle );
現在, print 這個詞可以在所有的ea交易中使用log來替換了, 另外不要忘記呼叫 log_open 和 log_close 函式。赫茲量化軟體。

這是乙個使用log.mq4包含檔案的非常簡單的ea交易:

#include int init() int deinit() int start()
現在, 當我們解決了記錄檔案的問題之後, 我們可以開始"裝飾"顯示的資訊了。

首先, 讓我們考慮實現這個任務的所有可能方法。 在 mql4 中, comment() 函式是用於顯示資訊的, 但是它不適合以上描述的需求。 所以我們必須找到其他的解決方案。 乙個很好的例子是含有文字的物件。 有兩類這樣的物件: "文字(text)" 和 "文字標籤(text label)".它們之間的基本區別就是, "文字"繫結於圖表的座標(**和時間), 而"文字標籤"繫結的是視窗座標。 因為我們需要資訊在圖表移動或者縮放改變的時候依然停留在原點上, 所以我們會使用"文字標籤".赫茲量化軟體。

在mql5中有一些函式用於建立和控制物件, 所有的名字都以object開頭。 讓我們看看它們如何服務於我們的目標:

bool objectcreate(..建立乙個物件;

bool objectdelete(..使用過後刪除物件;

bool objectset(..修改物件屬性, 例如錨點 (x,y);

bool objectsettext(..顯示文字;

void objectsredraw() 在文字改變之後重繪物件。

這就是我們要做的:

在ea交易的 init() 函式中, 建立用於顯示資訊的物件;

在ea交易的 deinit() 函式中, 刪除所有建立的物件;

在 start() 函式裡, 可以修改文字, 字型顏色和所建立物件的大小。

我們將會再一次得到3個函式, 每個都完成自己的任務。

在寫**之前, 我想先說一下"文字標籤"使用中的乙個令人不愉快的侷限。 它只能是一行, 也就是說, 它不能包含任何換行字元。 但是如果資訊能夠分成幾行顯示會更好。 這就是為什麼我們會建立多個物件, 然後在其中分配資料。 我製作了5"行", 但是您可以使用任何其他的行數。赫茲量化軟體。

另外, 顯示文字的長度也有乙個限制。 所以我增加了第二"列", 也就是說, 右側又多了5行。

這就是用於建立物件的 info_init() 函式看起來的樣子:

期貨股票量化交易軟體 赫茲量化軟體

螢火蟲演算法 firefly algorithm,fa 是一種模擬自然界螢火蟲交配行為的啟發式優化。演算法。自然界的螢火蟲通過發光來吸引同伴,並且光線越亮的螢火蟲更容易吸引其他螢。火蟲。這一啟示被廣泛運用於解決各種優化問題,例如函式優化 組合優化等。螢火蟲演算法概述。螢火蟲演算法基於以下三個關鍵行為...

股票量化軟體 燭台方向統計再現的研究

首先我們要在某些條款上達成一致。儘管這些條款是常用的,但我們還是要再過一遍,避免曲解。如果燭台的開盤價小於 價 則被稱為上公升燭 在給出的圖形中,它們均塗以白色 反之則為下降燭,均塗以黑色。如果開盤價等於 價,這些燭台將被稱為等價燭台 我自己的術語 如果 了一段時間,則這段時間是 趨勢,反之則為 趨...

期貨股票量化交易軟體 高頻交易策略

在金融領域,隨著技術的迅速發展,高頻交易 hft 已成為乙個熱門話題。它涉及利用極高速度和複雜的演算法在微秒或毫秒級別進行交易,目標是從小的 差異中獲利。在這篇文章中,我們將深入 高頻交易策略的核心特點 實施方式以及相關爭議。一 什麼是高頻交易?高頻交易是一種演算法交易,它涉及大量的訂單在極短的時間...