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

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

量化交易軟件:將您的線性交易系統(tǒng)提升為冪交易系統(tǒng)

2023-07-27 15:38 作者:bili_45793681098  | 我要投稿

簡介

今天的文章為中級 MQL5 編程人員講解如何通過輕松實施所謂的冪的技術(shù)從他們的線性交易系統(tǒng)(固定手數(shù))中獲利更多。本文中使用的泛稱取冪是指那些使市場中下達的倉位的規(guī)?;驍?shù)量與其風險相適應的貨幣管理模型。這是因為結(jié)果資產(chǎn)凈值曲線呈拋物線形式,以幾何級數(shù)或指數(shù)增長。術(shù)語“線性”也用于本文的上下文中,是一個介于數(shù)學和編程之間的術(shù)語。具體而言,赫茲量化將實施一個由 Ralph Vince 開發(fā)的固定分數(shù)倉位大小的實際 MQL5 變體。


編輯


圖 1. 數(shù)學拋物線

現(xiàn)在,讓我們快速回顧一下資金管理模型,看看赫茲量化可以如何實現(xiàn) Ralph Vince 的固定分數(shù)倉位規(guī)模的變體。準備好了嗎?不要錯過從您的交易策略獲利更多的機會!

編輯切換為居中

1. 什么是資金管理模型?

一言以蔽之,資金管理模型是概念框架,在此框架下您作出與您的倉位規(guī)模、止損的使用以及預付款計算和交易成本相關(guān)的決策。網(wǎng)絡上有大量的資金管理模型可用!如果您愿意,您可以搜索固定手數(shù)、固定分數(shù)、固定比率、Kelly 的百分比或?qū)嶋H成本加深您對這些經(jīng)典框架的了解。正如我說的,本文僅涉及固定分數(shù)的一種變體。

1.2. 固定分數(shù)

本資金管理模型背后的理念是根據(jù)與操作相關(guān)的估計風險對操作進行分級。風險是每項交易凈額的相同部分。

固定分數(shù)倉位規(guī)模中合約數(shù)量的方程如下:

N = f * Equity / Trade Risk

N 是合約數(shù)量,f 是固定分數(shù)(介于 0 和 1 之間的數(shù)),Equity 是賬戶資產(chǎn)凈值的當前值,Trade Risk 是計算合約數(shù)量的每份合約的風險。請閱讀 Michael R. Bryant 的《固定分數(shù)倉位規(guī)?!?/span>一文,以更深入地了解此模型。

固定分數(shù)模型的一個有趣屬性是,由于操作的規(guī)模保持與賬戶的凈余額成比例,從理論上說不可能損失所有的資金。破產(chǎn)的風險為零。從另一方面來說,由于風險資金的百分比較低,連贏或連輸操作不會對利潤曲線造成顯著影響。


2. 將固定分數(shù)添加至您的交易系統(tǒng)

2.1. 獲得您的線性交易系統(tǒng)

當然,首先您需要一個線性交易系統(tǒng)以體驗低風險指數(shù)冪!可以這么說,這個系統(tǒng)將作為冪底。但我所指的線性系統(tǒng)是經(jīng)證明在某個時間區(qū)間內(nèi)是贏家且其資產(chǎn)凈值曲線看上去像一條直線的交易系統(tǒng)。例如,HawaiianTsunamiSurfer 就是代碼庫中提供的所謂的線性交易系統(tǒng)。其資產(chǎn)凈值曲線在從 2012 年 1 月到 2012 年 3 月的時間區(qū)間內(nèi)看起來像一條直線。


編輯切換為居中


圖 2. HawaiianTsunamiSurfer 從 2012 年 1 月到 2012 年 3 月的資產(chǎn)凈值曲線

本文的目的不是從頭開發(fā)一個線性交易系統(tǒng),而是為您提供必要的工具,以便您可以從您的系統(tǒng)中獲益更多。所以從現(xiàn)在開始,我假設(shè)您已經(jīng)在面向?qū)ο蠓妒较麻_發(fā)了一個類似于這個系統(tǒng)的交易系統(tǒng)。在這種情況下,您應添加我在下文中說明的面向?qū)ο髩K。

2.2. 使用 MQL5 的核心類 - CEvolution - 將您的系統(tǒng)提升為冪級

所以,赫茲量化再次采取面向?qū)ο蟮姆椒▉砭帉懳覀兊?EA 的代碼。我建議您首先閱讀《另一個 MQL5 OOP 類》《建立自動新聞交易者》這兩篇文章,獲得以此面向?qū)ο蟮姆绞焦ぷ鞯募夹g(shù)基礎(chǔ)。如果您已經(jīng)完成這一步,記住在那些文章中討論的設(shè)計包含了名為 CEvolution 的非常重要的元素。這允許我們對一些重要的臨時信息保持追蹤,例如自動交易在給定時刻的狀態(tài)、執(zhí)行的操作的歷史數(shù)據(jù)等。

這一次,赫茲量化將在 CEvolution 中編寫管理我們的資金所需的邏輯的代碼。由于風險固定分數(shù)與資產(chǎn)凈值保持比例,在此我們都同意它不是恒定的而是可變的,此邏輯必須在 CEvolution 中編寫代碼。或者簡單地說,由于資產(chǎn)凈值曲線的斜率隨時間而變化,所有這些問題必須在 CEvolution 中實現(xiàn)。這是赫茲量化面向?qū)ο笤O(shè)計的抽象概念。將下列面向?qū)ο箢惻c您的面向?qū)ο箫L格的交易系統(tǒng)集成起來的工作留給讀者作為練習。

類 CEvolution.mqh:

//+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CEvolution.mqh | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Copyright ? 2013, Jordi Bassaga?as | //+------------------------------------------------------------------+ #include <Mine\Enums.mqh> //+------------------------------------------------------------------+ //| CEvolution Class ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ class CEvolution ?{ protected: ? ENUM_STATUS_EA ? ? ? ? ? ? ? ? ? m_status; ? ? ? ? ? ?// The current EA's status ? ENUM_EXP_EQUITY_CURVE_LEVEL ? ? ?m_expEquityLevel; ? ?// The current exponential equity level ? double ? ? ? ? ? ? ? ? ? ? ? ? ? m_originalEquity; ? ?// The original equity value ? double ? ? ? ? ? ? ? ? ? ? ? ? ? m_lotSize; ? ? ? ? ? // The current lot size public: ? //--- Constructor and destructor methods ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CEvolution(ENUM_STATUS_EA status,ENUM_EXP_EQUITY_CURVE_LEVEL exp_equity_level); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~CEvolution(void); ? //--- Getter methods ? ENUM_STATUS_EA ? ? ? ? ? ? ? ? ? GetStatus(void); ? ENUM_EXP_EQUITY_CURVE_LEVEL ? ? ?GetExpEquityLevel(void); ? double ? ? ? ? ? ? ? ? ? ? ? ? ? GetOriginalEquity(void); ? double ? ? ? ? ? ? ? ? ? ? ? ? ? GetLotSize(void); ? //--- Setter methods ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? SetStatus(ENUM_STATUS_EA status); ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? SetExpEquityLevel(ENUM_EXP_EQUITY_CURVE_LEVEL exp_equity_level); ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? SetOriginalEquity(double equity); ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? SetLotSize(double size); ? //--- CEvolution specific methods ? double ? ? ? ? ? ? ? ? ? ? ? ? ? CalcEquityGrowth(double currentEquity); ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? RefreshExpEquityLevel(double currentEquity); ? void ? ? ? ? ? ? ? ? ? ? ? ? ? ? RefreshLotSize(); ?}; //+------------------------------------------------------------------+ //| Constructor ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ CEvolution::CEvolution(ENUM_STATUS_EA status,ENUM_EXP_EQUITY_CURVE_LEVEL exp_equity_level) ?{ ? m_status=status; ? m_expEquityLevel=exp_equity_level; ? RefreshLotSize(); ? m_originalEquity=AccountInfoDouble(ACCOUNT_EQUITY); ?} //+------------------------------------------------------------------+ //| Destructor ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ CEvolution::~CEvolution(void) ?{ ?} //+------------------------------------------------------------------+ //| GetStatus ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ ENUM_STATUS_EA CEvolution::GetStatus(void) ?{ ? return m_status; ?} //+------------------------------------------------------------------+ //| GetExpEquityLevel ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ ENUM_EXP_EQUITY_CURVE_LEVEL CEvolution::GetExpEquityLevel(void) ?{ ? return m_expEquityLevel; ?} //+------------------------------------------------------------------+ //| GetEquity ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ double CEvolution::GetOriginalEquity(void) ?{ ? return m_originalEquity; ?} //+------------------------------------------------------------------+ //| GetLotSize ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ double CEvolution::GetLotSize(void) ?{ ? return m_lotSize; ?} //+------------------------------------------------------------------+ //| SetStatus ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ void CEvolution::SetStatus(ENUM_STATUS_EA status) ?{ ? m_status=status; ?} //+------------------------------------------------------------------+ //| SetExpEquityLevel ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ void CEvolution::SetExpEquityLevel(ENUM_EXP_EQUITY_CURVE_LEVEL exp_equity_level) ?{ ? m_expEquityLevel=exp_equity_level; ?} //+------------------------------------------------------------------+ //| SetEquity ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ void CEvolution::SetOriginalEquity(double equity) ?{ ? m_originalEquity=equity; ?} //+------------------------------------------------------------------+ //| SetLotSize ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ void CEvolution::SetLotSize(double lot_size) ?{ ? m_lotSize=lot_size; ?} //+------------------------------------------------------------------+ //| CalcEquityGrowth ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ double CEvolution::CalcEquityGrowth(double currentEquity) ?{ ? return NormalizeDouble(currentEquity * 100 / m_originalEquity - 100,2); ?} //+------------------------------------------------------------------+ //| RefreshExpEquityLevel ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ void CEvolution::RefreshExpEquityLevel(double currentEquity) ?{ ? double growth = CalcEquityGrowth(currentEquity); ? //--- is the current equity less than 10% of the original amount? ? if(growth <= 10) ? { ? ? ?SetExpEquityLevel(LEVEL_ONE); ? } ? //--- is the current equity more than 10% of the original amount and less than 20%? ? else if(growth > 10 && growth <= 20) ? { ? ? ?SetExpEquityLevel(LEVEL_TWO); ? } ? //--- is the current equity more than 20% of the original amount and less than 30%? ? else if(growth > 20 && growth <= 30) ? { ? ? ?SetExpEquityLevel(LEVEL_THREE); ? } ? //--- is the current equity more than 30% of the original amount and less than 40%? ? else if(growth > 30 && growth <= 40) ? { ? ? ?SetExpEquityLevel(LEVEL_FOUR); ? } ? //--- is the current equity more than 40% of the original amount and less than 50%? ? else if(growth > 40 && growth <= 50) ? { ? ? ?SetExpEquityLevel(LEVEL_FIVE); ? } ? //--- is the current equity more than 50% of the original amount and less than 60%? ? else if(growth > 50 && growth <= 60) ? { ? ? ?SetExpEquityLevel(LEVEL_SEVEN); ? } ? //--- is the current equity more than 60% of the original amount and less than 70%? ? ? else if(growth > 60 && growth <= 70) ? { ? ? ?SetExpEquityLevel(LEVEL_EIGHT); ? } ? //--- is the current equity more than 70% of the original amount and less than 80%? ? ? else if(growth > 70 && growth <= 80) ? { ? ? ?SetExpEquityLevel(LEVEL_NINE); ? } ? //--- is the current equity more than 90% of the original amount? ? else if(growth > 90) ? { ? ? ?SetExpEquityLevel(LEVEL_TEN); ? } ?} //+------------------------------------------------------------------+ //| RefreshLotSize ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+------------------------------------------------------------------+ void CEvolution::RefreshLotSize() ?{ ? switch(m_expEquityLevel) ? { ? ? ?case LEVEL_ONE: ? ? ? ? SetLotSize(0.01); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_TWO: ? ? ? ? SetLotSize(0.02); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_THREE: ? ? ? ? SetLotSize(0.03); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_FOUR: ? ? ? ? SetLotSize(0.04); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_FIVE: ? ? ? ? SetLotSize(0.05); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_SIX: ? ? ? ? SetLotSize(0.06); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_SEVEN: ? ? ? ? SetLotSize(0.07); ? ? ? ? break; ? ? ?case LEVEL_EIGHT: ? ? ? ? SetLotSize(0.08); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_NINE: ? ? ? ? SetLotSize(0.09); ? ? ? ? break; ? ? ? ? ? ? ?case LEVEL_TEN: ? ? ? ? SetLotSize(0.1); ? ? ? ? break; ? } ?} //+------------------------------------------------------------------+


量化交易軟件:將您的線性交易系統(tǒng)提升為冪交易系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
高雄市| 读书| 新源县| 平原县| 大宁县| 乌什县| 黑龙江省| 张家口市| 微山县| 康马县| 乌审旗| 奉贤区| 长葛市| 襄汾县| 姜堰市| 耿马| 武隆县| 乐业县| 岢岚县| 平远县| 福泉市| 泊头市| 昆山市| 西峡县| 丰镇市| 延安市| 万全县| 临泽县| 新邵县| 礼泉县| 民县| 海南省| 什邡市| 石阡县| 满城县| 十堰市| 闽清县| 石景山区| 铅山县| 堆龙德庆县| 石河子市|