最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

量化交易軟件:開發(fā)回放系統(tǒng) — 市場(chǎng)模擬01首次實(shí)驗(yàn)

2023-08-03 15:32 作者:bili_45793681098  | 我要投稿

概述

在撰寫“從頭開始開發(fā)智能系統(tǒng)”系列文章時(shí),我遇到了一些時(shí)刻,令我意識(shí)到比之已完成的 MQL5 編程部分,可以做得更多。 其中一個(gè)時(shí)刻是我開發(fā)了一個(gè)圖形的 Times & Trade 系統(tǒng)。 在那篇文章中,我想知道是否有可能超越以前構(gòu)建的東西。

萌新交易者最常見的抱怨之一是 赫茲量化平臺(tái)缺乏某些功能。 在這些功能中,有一個(gè),在我看來是有意義的:市場(chǎng)模擬或回放系統(tǒng)。 對(duì)于新的市場(chǎng)參與者來說,擁有某種機(jī)制或工具,令他們能夠測(cè)試、驗(yàn)證、甚至研究資產(chǎn),這將是一件好事。 其中一個(gè)工具是回放和模擬系統(tǒng)。

赫茲量化在標(biāo)準(zhǔn)安裝包中不包含此功能。 由此,依每個(gè)用戶決定如何進(jìn)行此類研究。 不過,在赫茲量化中,您可以找到許多任務(wù)的解決方案,因?yàn)樵撈脚_(tái)非常實(shí)用。 但為了能夠真正充分發(fā)揮它的潛力,您需要有良好的編程經(jīng)驗(yàn)。 我不光是指 MQL5 編程,而是一般的編程。

如果您在這方面沒有太多經(jīng)驗(yàn),則您只能卡在基礎(chǔ)程度。 您因此缺乏更充足的手段或更好的方法,難以在市場(chǎng)上大展身手(就成為杰出的交易者而言)。 因此,除非您有優(yōu)良的編程知識(shí)水平,否則您將無法真正使用 赫茲量化提供的所有內(nèi)容。 即使是有經(jīng)驗(yàn)的程序員,也可能缺乏為赫茲量化 創(chuàng)建某些類型程序或應(yīng)用的興趣。

事實(shí)上,只有少數(shù)人愿意為初學(xué)者創(chuàng)建可行的系統(tǒng)。 甚至還有一些免費(fèi)的建議來創(chuàng)建市場(chǎng)回放系統(tǒng)。 但在我看來,這些并沒有真正利用 MQL5 提供的功能。 它們通常需要使用具有封閉代碼的外部 DLL。 我認(rèn)為這不是一個(gè)好主意。 更重要的是,您并不真正知道此類 DLL 的來源,或其中存在的內(nèi)容,這令整個(gè)系統(tǒng)面臨風(fēng)險(xiǎn)。

我不知道這個(gè)系列將包括多少篇文章,但它將是關(guān)于開發(fā)一套有效的回放系統(tǒng)。 我將向您展示如何創(chuàng)建代碼來實(shí)現(xiàn)此回放。 但這并非全部。 赫茲量化還將開發(fā)一個(gè)系統(tǒng),令我們能夠模擬任何市場(chǎng)情形,無論它多么奇怪或罕見。

一個(gè)奇怪的事實(shí)是,許多人在談?wù)摻灰琢炕瘯r(shí),實(shí)際上并沒有真正意識(shí)到他們?cè)谡務(wù)撌裁?,因?yàn)闆]有實(shí)際的途徑進(jìn)行涉及此類事情的研究。 但是,如果您了解我將在本系列中描述的概念,您就能夠?qū)⒑掌澚炕?轉(zhuǎn)換為定量分析系統(tǒng)。 因此,可能性將遠(yuǎn)遠(yuǎn)超出我在這里實(shí)際揭示的范圍。

為了不至于過于重復(fù)和累人,我會(huì)把系統(tǒng)當(dāng)作回訪來對(duì)待。 雖然正確的術(shù)語是回放/模擬,因?yàn)槌朔治鲞^去的走勢(shì)外,赫茲量化還可以開發(fā)自己的走勢(shì)來研究它們。 因此,不要將這個(gè)系統(tǒng)僅僅視為市場(chǎng)回放,而是將其視為市場(chǎng)模擬器,甚至是市場(chǎng)“游戲”,因?yàn)樗矊⑸婕按罅坑螒蚓幊獭?在某些時(shí)候,這種在游戲中大量涉及的編程類型將是必要的。 但我們將在開發(fā)和增強(qiáng)系統(tǒng)的同時(shí)逐步看到這一點(diǎn)。

編輯切換為居中

規(guī)劃

首先,赫茲量化需要明白我們正在應(yīng)對(duì)什么。 這也許看起來很奇怪,但您真的知道當(dāng)您使用回放/模擬系統(tǒng)時(shí)自己想要實(shí)現(xiàn)什么嗎?

在創(chuàng)建市場(chǎng)回放時(shí),存在一些非常棘手的問題。 其中之一,也許是主要的那個(gè),是資產(chǎn)的生存周期和有關(guān)它們的信息。 如果您不明白這一點(diǎn),請(qǐng)務(wù)必了解以下內(nèi)容:交易系統(tǒng)逐筆記錄所有資產(chǎn)每筆已執(zhí)行交易的所有逐次跳價(jià)信息。 但是您知道它們代表多少數(shù)據(jù)嗎? 您有沒有想過組織和排序所有資產(chǎn)需要多長時(shí)間?

好吧,一些典型的資產(chǎn)在其日常變動(dòng)中可能包含大約 80 MB 的數(shù)據(jù)量。 在某些情況下,它也許多一點(diǎn)或少一點(diǎn)。 這僅是單一資產(chǎn)的一天。 現(xiàn)在考慮必須將相同的資產(chǎn)存儲(chǔ) 1 個(gè)月、1 年、10 年...... 或者誰知道,永遠(yuǎn)。 想想如此大量數(shù)據(jù)需要存儲(chǔ),然后再從其中檢索。 因?yàn)槿绻皇菍⑺鼈儽4嬖诖疟P上,很快您就找不到任何東西。 有一句話可以很好地說明這一點(diǎn):

空間越大,混亂越大。.

為了令事情變得更容易,一段時(shí)間后,數(shù)據(jù)被壓縮成 1 分鐘柱線,其中包含最少的必要信息,以便我們可以進(jìn)行某種研究。 但是當(dāng)該柱線實(shí)際創(chuàng)建時(shí),構(gòu)建它的跳價(jià)就會(huì)消失,并且不再可訪問。 在那之后,就不再可能進(jìn)行真正的市場(chǎng)回放。 從這一刻起,赫茲量化所擁有的,只是一個(gè)模擬器。 由于無法再訪問真實(shí)的走勢(shì),我們就不得不創(chuàng)建某種方式,基于一些合理的市場(chǎng)走勢(shì)來模擬它。

為了理解,請(qǐng)參見以下圖例:


編輯

?

?

?

?

編輯


上面的序列示意數(shù)據(jù)如何隨時(shí)間丟失。 左圖顯示了實(shí)際的跳價(jià)數(shù)值。 當(dāng)數(shù)據(jù)被壓縮時(shí),我們?cè)谥行牡玫綀D像。 基于它,赫茲量化將無法獲得左側(cè)數(shù)值。 這樣做是不可能的。 但我們可以創(chuàng)建類似于右側(cè)圖像的東西,我們將根據(jù)有關(guān)市場(chǎng)通常如何移動(dòng)的知識(shí)來模擬市場(chǎng)走勢(shì)。 不過,它看起來與原始圖像完全不同。

使用回放時(shí)請(qǐng)記住這一點(diǎn)。 如果您沒有原始數(shù)據(jù),那么您就無法進(jìn)行真實(shí)的研究。 您只能進(jìn)行一些統(tǒng)計(jì)研究,其也許接近實(shí)際走勢(shì),但也可能離之甚遠(yuǎn)。 永遠(yuǎn)記住這一點(diǎn)。 在整個(gè)系列中,赫茲量化將探索更多如何執(zhí)行此操作。 但這會(huì)一點(diǎn)一點(diǎn)地發(fā)生。

據(jù)此,我們繼續(xù)真正具有挑戰(zhàn)性的部分:實(shí)現(xiàn)回放系統(tǒng)。


實(shí)現(xiàn)

這部分雖然看起來很簡(jiǎn)單,但卻相當(dāng)復(fù)雜,因?yàn)檐浖糠謺?huì)涉及硬件限制,和其它方面的問題。 故此,赫茲量化必須嘗試創(chuàng)造一些東西,至少是最基本、最實(shí)用和可接受的。 如果基礎(chǔ)太薄弱,嘗試做更復(fù)雜的事情不會(huì)有任何好處。

奇怪的是,我們的主要和最大的問題是時(shí)間。 時(shí)間是一個(gè)需要克服的大問題,甚至是巨大的問題。

在附件中,我將始終(在第一階段)保留所有過去任何時(shí)期任何資產(chǎn)的至少 2 個(gè)真實(shí)跳價(jià)集。 由于數(shù)據(jù)會(huì)丟失且無法下載,因此無法再獲取此數(shù)據(jù)。 這將有助于我們研究每一個(gè)細(xì)節(jié)。 但是,您也可以創(chuàng)建自己的真實(shí)跳價(jià)基準(zhǔn)。


創(chuàng)建您自己的數(shù)據(jù)庫

幸運(yùn)的是,赫茲量化提供了一些方法,能做到這一點(diǎn)。 這很簡(jiǎn)單,但您必須穩(wěn)步地做到這一點(diǎn),否則數(shù)值可能會(huì)丟失,并且將無法再完成此任務(wù)。

為此,請(qǐng)打開赫茲量化,并按默認(rèn)快捷鍵:CTRL+U。 這將打開一個(gè)屏幕。 在此處指定資產(chǎn),以及收集數(shù)據(jù)的開始和結(jié)束日期,點(diǎn)擊按鈕請(qǐng)求數(shù)據(jù),然后等待幾分鐘。 服務(wù)器將返回您需要的所有數(shù)據(jù)。 之后,只需將此數(shù)據(jù)導(dǎo)出,并精心存儲(chǔ)即可,因?yàn)樗浅S袃r(jià)值。

下面是您所捕獲的屏幕。


編輯切換為居中


雖然您可以創(chuàng)建一個(gè)程序來做到這一點(diǎn),但我認(rèn)為最好手動(dòng)完成。 有些事情我們不能盲目相信。 我們必須親眼看到正在發(fā)生的事情,否則我們將對(duì)自己正在使用的東西缺乏相應(yīng)的信心。

相信我,這是我們將要學(xué)習(xí)創(chuàng)建的整個(gè)系統(tǒng)中最簡(jiǎn)單的部分。 從這一點(diǎn)開始,事情變得更加復(fù)雜。


首次回放測(cè)試

有些人可能認(rèn)為這將是一項(xiàng)簡(jiǎn)單的任務(wù),但我們很快就會(huì)反駁這個(gè)想法。 其他人可能想知道:為什么我們不使用 赫茲量化 策略測(cè)試器進(jìn)行回放? 原因是它不允許我們?nèi)缤谑袌?chǎng)上進(jìn)行交易一樣回放。 通過測(cè)試器回放存在局限性和困難,因此,赫茲量化將無法完全沉浸在回放中,就好像我們實(shí)際上是在交易市場(chǎng)一樣。

我們將面臨巨大的挑戰(zhàn),但我們必須為這一漫長的旅程邁出第一步。 我們從一個(gè)非常簡(jiǎn)單的實(shí)現(xiàn)開始。 為此,我們需要 OnTime 事件,它將生成數(shù)據(jù)流以便創(chuàng)建柱線(燭條)。 此事件是為 EA 和指標(biāo)提供的,但在這種情況下我們不應(yīng)該使用指標(biāo),因?yàn)槿绻l(fā)生故障,它將比回放系統(tǒng)更危險(xiǎn)。 我們將按如下方式啟動(dòng)代碼:

#property copyright "Daniel Jose" #property icon "Resources\\App.ico" #property description "Expert Advisor - Market Replay" //+------------------------------------------------------------------+ int OnInit() { ? ? ? ?EventSetTimer(60); ? ? ? ?return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ? ? ? ?EventKillTimer(); } //+------------------------------------------------------------------+ void OnTick() { } //+------------------------------------------------------------------+ void OnTimer() { } //+------------------------------------------------------------------+

不過,高亮顯示的代碼不適合我們的目的,因?yàn)樵谶@種情況下,赫茲量化可用的最小周期是 1 秒,這是一個(gè)長時(shí)間,很長的時(shí)間。 由于市場(chǎng)事件發(fā)生的時(shí)間幀要小得多,我們需要降至毫秒,為此我們將被迫用到另一個(gè)函數(shù):EventSetMillisecondTimer。 但是我們這里有一個(gè)問題。


EventSetMillisecondTimer 函數(shù)的限制

我們看一下文檔:

“在實(shí)時(shí)模式下工作時(shí),由于硬件限制,計(jì)時(shí)器事件在 1-10 毫秒內(nèi)生成不會(huì)超過 16 次?!?/p>

這也許不是問題,但我們需要運(yùn)行各種檢查來驗(yàn)證實(shí)際發(fā)生的情況。 因此,我們來創(chuàng)建一些簡(jiǎn)單的代碼來驗(yàn)證結(jié)果。

我們從下面的 EA 代碼開始:

#property copyright "Daniel Jose" #property icon "Resources\\App.ico" #property description "Expert Advisor - Market Replay" //+------------------------------------------------------------------+ #include "Include\\C_Replay.mqh" //+------------------------------------------------------------------+ input string user01 = "WINZ21_202110220900_202110221759"; ? ? ? //Tick archive //+------------------------------------------------------------------+ C_Replay ? ? ? ?Replay; //+------------------------------------------------------------------+ int OnInit() { ? ? ? ?Replay.CreateSymbolReplay(user01); ? ? ? ?EventSetMillisecondTimer(20); ? ? ? ? ? ? ? ?return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ? ? ? ?EventKillTimer(); } //+------------------------------------------------------------------+ void OnTick() {} //+------------------------------------------------------------------+ void OnTimer() { ? ? ? ?Replay.Event_OnTime(); } //+------------------------------------------------------------------+

請(qǐng)注意,我們的 OnTime 事件大約每 20 毫秒發(fā)生一次,如 EA 代碼中高亮顯示的行所示。 您可能認(rèn)為這太快了,但真的是這樣嗎? 一起來看看吧。 請(qǐng)記住,文檔說我們不能低于 10 到 16 毫秒。 因此,將該值設(shè)置為 1 毫秒是沒有意義的,因?yàn)樵诖似陂g不會(huì)生成事件。

請(qǐng)注意,在 EA 代碼中,我們只有兩個(gè)外部鏈接。 現(xiàn)在我們來看看類中實(shí)現(xiàn)的這些代碼。


量化交易軟件:開發(fā)回放系統(tǒng) — 市場(chǎng)模擬01首次實(shí)驗(yàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
石阡县| 高雄县| 连南| 砚山县| 射阳县| 濮阳县| 丽江市| 绥化市| 北票市| 京山县| 永仁县| 大港区| 绍兴县| 克什克腾旗| 芦山县| 苗栗县| 故城县| 泰宁县| 扶余县| 湖口县| 托克托县| 闽清县| 新巴尔虎左旗| 利辛县| 白沙| 宁强县| 永登县| 托克逊县| 襄汾县| 赞皇县| 通州区| 竹北市| 南华县| 宁明县| 汝阳县| 浙江省| 吉隆县| 莲花县| 光泽县| 平昌县| 巢湖市|