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

歡迎光臨散文網 會員登陸 & 注冊

期貨量化交易軟件:基于大眾交易系統(tǒng)和交易機器人優(yōu)化點金術的Expert Advisor(續(xù))

2023-08-17 17:17 作者:bili_45793681098  | 我要投稿

簡介

我收到上一篇文章的一位讀者的提議,對回測過程稍加自動化,以實現(xiàn)同時獲得所有優(yōu)化結果的可能性。此外,手動改變測試周期不是很方便,該過程也應該自動化。這個想法非常棒。而且,赫茲期貨量化完全可以實現(xiàn)。所以,我將從問題的解決方法開始講述。

編輯切換為居中


回測自動化

要完成該任務我們需要:

1.在所需的 Expert Advisor 標頭下面寫入一行,內容如下:

//+==================================================================+ //| Custom BackTesting function ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+==================================================================+ #include <IsBackTestingTime.mqh>


使用該指令,將 IsBackTestingTime() 函數加入 EA 代碼。不要忘記將 IsBackTestingTime.mqh 文件放入 INCLUDE 文件夾。該函數:

bool IsBackTestingTime() { }


用于定義時間周期,在該時間內進行回測優(yōu)化或回測。在該時間周期內,函數始終返回‘真’,在其他時間則返回‘假’。除了這個函數,通過以下指令將外部 EA 變量添加到 EA 代碼:

//---- Declaration of external variables for backtesting extern datetime Start_Time = D'2007.01.01'; // start time of zero optimization extern int Opt_Period = 3; // optimization period in months, if less than zero, parameters are in days extern int Test_Period = 2; // testing period in months extern int Period_Shift = 1; // step of optimization period shift in months extern int Opt_Number = 0; // optimization number


希望這些變量的含義對于讀了我上一篇文章的人都很清楚,這里就不再解釋。

2.在 EA 代碼前的開始函數程序塊設置調用 IsBackTestingTime() 函數的最簡單的通用代碼,根據回測優(yōu)化的數量將 EA 運行限制在特定的時間范圍。

//----+ Execution of backtesting conditions ? if (!IsBackTestingTime()) ? ? ? ? ? ? ? ? ? ? ? return(0);


它的示意圖如下:

//+==================================================================+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Exp_BackTest.mq4 | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? Copyright ? 2008, ? Nikolay Kositsin | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Khabarovsk, ? farria@mail.redcom.ru | //+==================================================================+ #property copyright "Copyright ? 2008, Nikolay Kositsin" #property link "farria@mail.redcom.ru" //+==================================================================+ //| Custom BackTesting function ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+==================================================================+ #include <IsBackTestingTime.mqh> //---- INPUT PARAMETERS OF THE EA //---- GLOBAL VARIABLES OF THE EA //+==================================================================+ //| USER-DEFINED FUNCTIONS OF THE EA ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+==================================================================+ //+==================================================================+ //| Custom Expert initialization function ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+==================================================================+ int init() ?{ //----+ +------------------------------------------------------------+ ? ? //---- CODE FOR THE EA INITIALIZATION //----+ +------------------------------------------------------------+ ? ? ? ? ? ? ? ? //---- end of initialization ? return(0); ?} //+==================================================================+ //| Custom Expert iteration function ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | //+==================================================================+ int start() ?{ ? //----+ Execution of backtesting conditions ? if (!IsBackTestingTime()) ? ? ? ? ? ? ? ? ? ? ? return(0); ? ? ? ? ? ? ? //----+ +---------------------------------------------------------+ ? ? ? //----+ CODE OF THE EA ALGORITHM ? //----+ +---------------------------------------------------------+ //----+ ? ? ? ?return(0); ?} //+------------------------------------------------------------------+


如果你對現(xiàn)成 EA 示例上的詳細問題解決方案感興趣,查看 EA 代碼 Exp_5_1.mq4,源于上一篇文章中的 Exp_5.mq4,經修改后用于回測。實際上,與簡單的 Expert Advisor 相比,這種 EA 的優(yōu)化沒有多大不同。但是,我認為除了 Opt_Number 變量外,回測變量應該進行優(yōu)化,不過你可能有不同的看法。

重要的是記?。涸跍y試優(yōu)化后,赫茲期貨量化得到的不是優(yōu)化期間的結果,而是在其之后(右側邊界之外)的結果。使用遺傳算法在一次運行內進行所有的回測優(yōu)化并非最好的決定,在沒有優(yōu)化輸入變量 Opt_Number 的情況下,單獨深入分析每個回測優(yōu)化更加有趣。

但即使在這種情況下,這種方法也促進了對 EA 行為的理解。應該記住,外部變量 Opt_Number 的值可以從零變化到某個最大值,該最大值可以使用以下方式定義:從執(zhí)行所有回測優(yōu)化的總周期(月數)減去回測優(yōu)化周期的月數(Opt_Period)和減去回測周期(Test_Period)。獲得的值加一。如果 Period_Shift 等于一,獲得的結果將是 Opt_Number 變量的最大值。



基于兩條移動線交叉的交易系統(tǒng)

這種交易系統(tǒng)的變體非常普遍。赫茲期貨量化來分析奠定這種策略的算法。對于做多頭寸,輸入的算法如下:


編輯


對于做空頭寸,則如下:


編輯


可以使用在指標中定義平均線的具有不同參數的兩條相同移動線。假設定義 MovA 移動平均線的參數始終小于 MovB 移動平均線的同一參數。這樣,在該交易系統(tǒng)中,MovA 是快速移動線,MovB 是慢速線。下面是基于兩條 JMA 移動線的交易系統(tǒng)的實現(xiàn)變體:

//+==================================================================+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Exp_6.mq4 | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? Copyright ? 2007, ? Nikolay Kositsin | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Khabarovsk, ? farria@mail.redcom.ru | //+==================================================================+ #property copyright "Copyright ? 2007, Nikolay Kositsin" #property link "farria@mail.redcom.ru" //----+ +-------------------------------------------------------------------------------+ //---- EA INPUT PARAMETERS FOR BUY TRADES extern bool ? Test_Up = true;//filter of trade calculations direction extern int ? ?Timeframe_Up = 240; extern double Money_Management_Up = 0.1; extern int ? ?LengthA_Up = 4; ?// smoothing depth of the quick moving extern int ? ?PhaseA_Up = 100; // parameter changing in the range ? ? ? ? ?//-100 ... +100, influences the quality of transient process of quick moving extern int ? ?IPCA_Up = 0;/* Selecting prices, on which the indicator will be calculated by the quick moving (0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW, 11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.) */ extern int ? ?LengthB_Up = 4; // smoothing depth increment of slow moving to quick one extern int ? ?PhaseB_Up = 100; // parameter changing in the range ? ? ? ? ?//-100 ... +100, influences the quality of transient process of slow moving; extern int ? ?IPCB_Up = 0;/* Selecting prices, on which the indicator will be calculated by the slow moving (0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW, 11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.) */ extern int ? ?STOPLOSS_Up = 50; ?// stop loss extern int ? ?TAKEPROFIT_Up = 100; // take profit extern bool ? ClosePos_Up = true; // forced position closing allowed //----+ +-------------------------------------------------------------------------------+ //---- EA INPUT PARAMETERS FOR SELL TRADES extern bool ? Test_Dn = true;//filter of trade calculations direction extern int ? ?Timeframe_Dn = 240; extern double Money_Management_Dn = 0.1; extern int ? ?LengthA_Dn = 4; ?// smoothing depth of the quick moving extern int ? ?PhaseA_Dn = 100; // parameter changing in the range ? ? ? ? // -100 ... +100, influences the quality of transient process of quick moving; extern int ? ?IPCA_Dn = 0;/* Selecting prices, on which the indicator will be calculated by the quick moving (0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW, 11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.) */ extern int ? ?LengthB_Dn = 4; // smoothing depth increment of slow moving to quick one extern int ? ?PhaseB_Dn = 100; // parameter changing in the range ? ? ? ? // -100 ... +100, influences the quality of transient process of slow moving; extern int ? ?IPCB_Dn = 0;/* Selecting prices, on which the indicator will be calculated by the slow moving(0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW, 11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.) */ extern int ? STOPLOSS_Dn = 50; ?// stop loss extern int ? TAKEPROFIT_Dn = 100; // take profit extern bool ? ClosePos_Dn = true; // forced position closing allowed //----+ +-------------------------------------------------------------------------------+ //---- Integer variables for the minimum of calculation bars int MinBar_Up, MinBar_Dn; //+==================================================================+ //| Custom Expert functions ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+==================================================================+ #include <Lite_EXPERT1.mqh> //+==================================================================+ //| Custom Expert initialization function ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+==================================================================+ int init() ?{ //---- Checking the correctness of Timeframe_Up variable value ? if (Timeframe_Up != 1) ? ?if (Timeframe_Up != 5) ? ? if (Timeframe_Up != 15) ? ? ?if (Timeframe_Up != 30) ? ? ? if (Timeframe_Up != 60) ? ? ? ?if (Timeframe_Up != 240) ? ? ? ? if (Timeframe_Up != 1440) ? ? ? ? ? Print(StringConcatenate("Parameter Timeframe_Up cannot ", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"be equal to ", Timeframe_Up, "!!!"));


期貨量化交易軟件:基于大眾交易系統(tǒng)和交易機器人優(yōu)化點金術的Expert Advisor(續(xù))的評論 (共 條)

分享到微博請遵守國家法律
平泉县| 齐齐哈尔市| 平湖市| 阳朔县| 和林格尔县| 呼玛县| 台东市| 浠水县| 巴塘县| 莱阳市| 贡嘎县| 乌审旗| 洞口县| 西青区| 襄樊市| 天等县| 乌拉特后旗| 乐东| 平顺县| 大同市| 水城县| 威海市| 蕉岭县| 霞浦县| 利辛县| 上高县| 鞍山市| 云南省| 通渭县| 六盘水市| 郸城县| 龙门县| 富民县| 公主岭市| 天台县| 安达市| 翁牛特旗| 邯郸市| 城固县| 浠水县| 海城市|