赫茲股票量化交易:根據(jù)指定的分布法則為自定義品種的時間序列建模

簡介
赫茲股票交易終端允許在操作中創(chuàng)建和使用自定義品種。 交易者有能力測試自己的貨幣對和其它金融產(chǎn)品。 本文提出了根據(jù)指定的分布法則創(chuàng)建和刪除自定義品種,生成逐筆報價和柱線的方法。
它還提出了模擬趨勢和各種圖表形態(tài)的方法。 提到的現(xiàn)成腳本可用來操作最小設(shè)置的自定義品種,沒有 MQL5 編程技能的交易者也能夠充分發(fā)揮自定義品種的潛力。

編輯切換為居中
創(chuàng)建和刪除自定義品種
這篇早期的 文章 提出了一種基于現(xiàn)有品種在赫茲股票交易的“品種”窗口中創(chuàng)建自定義品種的方法。 赫茲股票交易建議依據(jù)最小配置的簡單設(shè)置自動執(zhí)行此過程。 該腳本有四個輸入?yún)?shù):
自定義品種的名稱,
貨幣對或金融產(chǎn)品的簡稱,
貨幣對或金融產(chǎn)品的全稱,
如果品種是基于基準(zhǔn)品種創(chuàng)建的,此為基準(zhǔn)貨幣或金融產(chǎn)品的簡稱,
這是腳本的代碼(腳本位于文章附帶的 CreateSymbol.mq5 文件中): //+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CreateSymbol.mq5 | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Aleksey Zinovik | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ #property copyright "Aleksey Zinovik" #property script_show_inputs #property version "1.00" //+------------------------------------------------------------------+ //| 腳本程序開始函數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ input string SName="ExampleCurrency"; input string CurrencyName="UCR"; input string CurrencyFullName="UserCurrency"; input string BaseName="EURUSD"; //+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ void OnStart() ? { ? ?ResetLastError(); // 創(chuàng)建品種 if(!CustomSymbolCreate(SName,"\\Forex")) ? ? ?{ ? ? ? if(SymbolInfoInteger(SName,SYMBOL_CUSTOM)) ? ? ? ? ?Print("Symbol ",SName," already exists!"); ? ? ? else Print("Error creating symbol. Error code: ",GetLastError()); ? ? ?} ? ?else ? ? ?{ ? ? ? if(BaseName=="")// create new ? ? ? ? { ? ? ? ? ?// 字符串類型屬性 if((SetProperty(SName,SYMBOL_CURRENCY_BASE,CurrencyName,"")) && // 基準(zhǔn)貨幣 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_CURRENCY_PROFIT,"USD",""))&& ? ? ? ? ? ? ? ? ? ? ? ? // 盈利貨幣 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_CURRENCY_MARGIN,"USD",""))&& ? ? ? ? ? ? ? ? ? ? ? ? // 保證金貨幣 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_DESCRIPTION,CurrencyName,""))&& ? ? ? ? ? ? ? ? ? ? ?// 品種的字符串描述(全名) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_BASIS,"","")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 自定義品種的底層資產(chǎn)的名稱 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_FORMULA,"","")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 自定義品種的定價公式 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_ISIN,"","")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// ISIN 系統(tǒng)中交易品種的名稱 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_PAGE,"","")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 包含品種信息的網(wǎng)頁 // 整數(shù)類型屬性 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_CHART_MODE,SYMBOL_CHART_MODE_BID,"")) && ? ? ? ? ? ? // 按競買價繪制圖表 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SPREAD,3,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 點差 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SPREAD_FLOAT,true,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 浮動點差 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_DIGITS,5,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 精度 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TICKS_BOOKDEPTH,10,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? // 預(yù)置訂單深度 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_BACKGROUND_COLOR,White,""))&& ? ? ? ? ? ? ? ? ? ? ? ?// 市場觀察中品種所用的背景顏色 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_MODE,SYMBOL_TRADE_MODE_FULL,""))&& ? ? ? ? ? ? // 訂單執(zhí)行類型:完全訪問權(quán)限 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_EXEMODE,SYMBOL_TRADE_EXECUTION_INSTANT,""))&& ?// 成交執(zhí)行模式:即時執(zhí)行 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_ORDER_GTC_MODE,SYMBOL_ORDERS_GTC,""))&& ? ? ? ? ? ? ?// 止損和止盈訂單限期:最佳直至取消 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_FILLING_MODE,SYMBOL_FILLING_FOK,""))&& ? ? ? ? ? ? ? // 訂單執(zhí)行模式:填單或終止 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_EXPIRATION_MODE,SYMBOL_EXPIRATION_GTC,""))&& ? ? ? ? // 訂單限期模式:無限定時間,直至明確取消 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_ORDER_MODE,127,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 訂單類型:所有訂單類型 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_CALC_MODE,SYMBOL_CALC_MODE_FOREX,""))&& ? ? ? ?// 計算合約價值的方法 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_MARGIN_HEDGED_USE_LEG,false,""))&& ? ? ? ? ? ? ? ? ? // 使用較大的分支計算對沖保證金 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SWAP_MODE,SYMBOL_SWAP_MODE_POINTS,""))&& ? ? ? ? ? ? // 掉期利率計算模型:以點數(shù)為單位計算掉期利率 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SWAP_ROLLOVER3DAYS,WEDNESDAY,"")) && ? ? ? ? ? ? ? ? // 掉期日:周三 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_OPTION_MODE,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 期權(quán)類型 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_OPTION_RIGHT,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 期權(quán)加權(quán) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_STOPS_LEVEL,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ?// 設(shè)置止損訂單與當(dāng)前收盤價的最小間距 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_FREEZE_LEVEL,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? // 交易操作的凍結(jié)間距(以點數(shù)為單位) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_START_TIME,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 該品種交易開始日期(通常用于期貨) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_EXPIRATION_TIME,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 該品種交易結(jié)束日期(通常用于期貨) // 雙精度類型屬性 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_OPTION_STRIKE,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 期權(quán)執(zhí)行價格 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SESSION_PRICE_LIMIT_MAX,0,"")) && ? ? ? ? ? ? ? ? ? ?// 時段的最低允許價格數(shù)值 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SESSION_PRICE_LIMIT_MIN,0,"")) && ? ? ? ? ? ? ? ? ? ?// 時段的最高允許價格數(shù)值 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SESSION_PRICE_SETTLEMENT,0,"")) && ? ? ? ? ? ? ? ? ? // 當(dāng)前時段的結(jié)算價格 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_ACCRUED_INTEREST,0,"")) && ? ? ? ? ? ? ? ? ? ? // 應(yīng)計利息(債券) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_FACE_VALUE,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? // 面值(債券) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_LIQUIDITY_RATE,0,"")) && ? ? ? ? ? ? ? ? ? ? ? // 流動資金率(用于抵押品種) ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_TICK_SIZE,0.00001,"")) && ? ? ? ? ? ? ? ? ? ? ?// 最低價格變化 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_TICK_VALUE,1,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? // 逐筆報價值 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_TRADE_CONTRACT_SIZE,100000,"")) && ? ? ? ? ? ? ? ? ? // 交易合約規(guī)模 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_POINT,0.00001,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 點數(shù)值 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_VOLUME_MIN,0.01,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 成交執(zhí)行的最小交易量 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_VOLUME_MAX,500.00,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 成交執(zhí)行的最大交易量 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_VOLUME_STEP,0.01,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 成交執(zhí)行的最小交易量變動間距 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_VOLUME_LIMIT,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 此品種單向(買入或賣出)持倉和掛單的最大允許總交易量 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_MARGIN_INITIAL,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 初始保證金 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_MARGIN_MAINTENANCE,0,"")) && ? ? ? ? ? ? ? ? ? ? ? ? // 維持保證金 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_MARGIN_HEDGED,100000,"")) && ? ? ? ? ? ? ? ? ? ? ? ? // 一個品種的一手反向持倉的合約或保證金大小 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SWAP_LONG,-0.7,"")) && ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 多頭的掉期利率 ? ? ? ? ? ? (SetProperty(SName,SYMBOL_SWAP_SHORT,-1,""))) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 空頭的掉期利率 Print("Symbol ",SName," created successfully"); ? ? ? ? ?else Print("Error setting symbol properties. Error code: ",GetLastError()); ? ? ? ? } ? ? ? else// 依據(jù)基準(zhǔn)品種創(chuàng)建 ? ? ? ? { ? ? ? ? ?if((SetProperty(SName,SYMBOL_CURRENCY_BASE,CurrencyName,"")) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_CURRENCY_PROFIT,"",BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_CURRENCY_MARGIN,"",BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_DESCRIPTION,CurrencyFullName,"")) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_BASIS,"",BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_FORMULA,"",BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_ISIN,"",BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_PAGE,"",BaseName)) && ? ? ? ? ? ? ? (SetProperty(SName,SYMBOL_CHART_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SPREAD,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SPREAD_FLOAT,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_DIGITS,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TICKS_BOOKDEPTH,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_BACKGROUND_COLOR,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_EXEMODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_ORDER_GTC_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_FILLING_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_EXPIRATION_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_ORDER_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_CALC_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_MARGIN_HEDGED_USE_LEG,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SWAP_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SWAP_ROLLOVER3DAYS,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_OPTION_MODE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_OPTION_RIGHT,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_STOPS_LEVEL,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_FREEZE_LEVEL,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_START_TIME,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_EXPIRATION_TIME,0,BaseName)) && ? ? ? ? ? ? ? (SetProperty(SName,SYMBOL_OPTION_STRIKE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SESSION_PRICE_LIMIT_MAX,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SESSION_PRICE_LIMIT_MIN,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SESSION_PRICE_SETTLEMENT,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_ACCRUED_INTEREST,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_POINT,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_CONTRACT_SIZE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_FACE_VALUE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_LIQUIDITY_RATE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_TICK_SIZE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_TRADE_TICK_VALUE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_VOLUME_MIN,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_VOLUME_MAX,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_VOLUME_STEP,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_VOLUME_LIMIT,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_MARGIN_INITIAL,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_MARGIN_MAINTENANCE,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_MARGIN_HEDGED,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SWAP_LONG,0,BaseName)) && ? ? ? ? ? ? ?(SetProperty(SName,SYMBOL_SWAP_SHORT,0,BaseName))) ? ? ? ? ? ? Print("Symbol ",SName," created successfully"); ? ? ? ? ?else Print("Error setting symbol properties. Error code: ",GetLastError()); ? ? ? ? } ? ? ? if(SymbolSelect(SName,true)) ? ? ? ? ?Print("Symbol ",SName," selected in Market Watch"); ? ? ? else Print("Error selecting symbol in Market Watch. Error code: ",GetLastError()); ? ? ?} ? } // 用于設(shè)置品種屬性的函數(shù) bool SetProperty(string SymName,ENUM_SYMBOL_INFO_STRING SProp,string PropValue,string BaseSymName) ? { ? ?ResetLastError(); ? ?if(BaseSymName=="") ? ? ?{ ? ? ? if(CustomSymbolSetString(SymName,SProp,PropValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",SProp,". Error code: ",GetLastError()); ? ? ?} ? ?else ? ? ?{ ? ? ? string SValue=SymbolInfoString(BaseSymName,SProp); ? ? ? if(CustomSymbolSetString(SymName,SProp,SValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",SProp,". Error code: ",GetLastError()); ? ? ?} ? ?return false; ? } //+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ bool SetProperty(string SymName,ENUM_SYMBOL_INFO_INTEGER IProp,long PropValue,string BaseSymName) ? { ? ?ResetLastError(); ? ?if(BaseSymName=="") ? ? ?{ ? ? ? if(CustomSymbolSetInteger(SymName,IProp,PropValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",IProp,". Error code: ",GetLastError()); ? ? ?} ? ?else ? ? ?{ ? ? ? long IValue=SymbolInfoInteger(BaseSymName,IProp); ? ? ? if(CustomSymbolSetInteger(SymName,IProp,IValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",IProp,". Error code: ",GetLastError()); ? ? ?} ? ?return false; ? } //+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ bool SetProperty(string SymName,ENUM_SYMBOL_INFO_DOUBLE DProp,double PropValue,string BaseSymName) ? { ? ?ResetLastError(); ? ?if(BaseSymName=="") ? ? ?{ ? ? ? if(CustomSymbolSetDouble(SymName,DProp,PropValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",DProp,". Error code: ",GetLastError()); ? ? ?} ? ?else ? ? ?{ ? ? ? double DValue=SymbolInfoDouble(BaseSymName,DProp); ? ? ? if(CustomSymbolSetDouble(SymName,DProp,DValue)) ? ? ? ? ?return true; ? ? ? else Print("Error setting symbol property: ",DProp,". Error code: ",GetLastError()); ? ? ?} ? ?return false; ? } //+------------------------------------------------------------------+