現(xiàn)貨期權(quán)交易所開發(fā)源碼,現(xiàn)貨期權(quán)交易所系統(tǒng)開發(fā)詳細(xì)方案及邏輯
量化合約指的是目標(biāo)或任務(wù)具體明確,可以清晰度量。根據(jù)不同情況,表現(xiàn)為數(shù)量多少,具體的統(tǒng)計(jì)數(shù)字,范圍衡量,時(shí)間長度等等。所謂量化就是把經(jīng)過抽樣得到的瞬時(shí)值將其幅度離散,即用一組規(guī)定的電平,把瞬時(shí)抽樣值用最接近的電平值來表示。經(jīng)過抽樣的圖像,只是在空間上被離散成為像素(樣本)的陣列。而每個(gè)樣本灰度值還是一個(gè)由無窮多個(gè)取值的連續(xù)變化量,必須將其轉(zhuǎn)化為有限個(gè)離散值,賦予不同碼字才能真正成為數(shù)字圖像。這種轉(zhuǎn)化稱為量化。 交易策略可以分為三個(gè)部分:指標(biāo)、信號(hào)和規(guī)則。 1.指標(biāo)用于產(chǎn)生交易信號(hào)。指標(biāo)的計(jì)算方法有很多,可以是經(jīng)濟(jì)數(shù)據(jù)或估值指標(biāo)(如PE和EBITDA)、技術(shù)指標(biāo)(如MACD、RSI、MA)或時(shí)間序列模型(ARIMA、GARCH)。技術(shù)指標(biāo)在外匯交易中被廣泛使用。它們是價(jià)格或成交量的函數(shù),主要用于檢測(cè)趨勢(shì)方向,衡量超買超賣狀態(tài),判斷趨勢(shì)反轉(zhuǎn)。 2.價(jià)格和指數(shù)之間的相互作用形成了一個(gè)信號(hào)。開發(fā)方案I35技術(shù)7O98詳細(xì)O7I8 以均線穿越為例,5日均線穿越10日均線時(shí)買入,5日均線穿越10日均線時(shí)賣出。信號(hào)不限于買賣,還包括篩子,篩子的主要功能是消除噪音。在均線穿越中,交易者可以加入一個(gè)趨勢(shì)篩:只有當(dāng)價(jià)格高于200日均線(上升趨勢(shì))且5日均線穿越10日均線時(shí),如果價(jià)格低于200日均線,則黃金穿越被視為虛假信號(hào)。著名的篩子包括趨勢(shì)篩子、時(shí)間篩子、周轉(zhuǎn)篩子和波動(dòng)篩子,它們是信號(hào)的重要組成部分。 CTA回測(cè) (一).準(zhǔn)備階段: 以分析DoubleMA Strategy的IF數(shù)據(jù)為例. 修改vnpy.trader.setting.py文件的米筐的用戶名和密碼. 選擇時(shí)間段,點(diǎn)擊下載數(shù)據(jù)。等待數(shù)據(jù)下載完,然后點(diǎn)擊開始回測(cè)。看回測(cè)結(jié)果. (二).回測(cè)頁面初始化,開發(fā)需求:MrsFu123 由vnpy.app.cta_backtester.CtaBacktesterApp類來處理,對(duì)應(yīng)的界面代碼為vnpy.app.cta_backtester.ui.widget.BacktesterManager類.在該類的構(gòu)造函數(shù)中依次執(zhí)行 1.調(diào)用init_strategy_settings()獲取各種交易策略,設(shè)置交易策略的默認(rèn)參數(shù). 2.調(diào)用init_ui()初始化界面,添加各個(gè)界面上的控件.比如合約符號(hào),時(shí)間間隔,開始和結(jié)束時(shí)間,滑點(diǎn),開始回測(cè),下載數(shù)據(jù),參數(shù)優(yōu)化,委托記錄,成交記錄,每日盈虧,K線圖表等按鈕.如果是下載數(shù)據(jù),進(jìn)入BacktesterManager.start_downloading()方法.如果是開始回測(cè),進(jìn)入start_backtesting()方法.繼續(xù)添加回測(cè)成交記錄,回測(cè)委托記錄,回測(cè)每日盈虧等結(jié)果的對(duì)話框.添加K線圖的處理類cta_backtester.ui.widget.CandleChartDialog. 3.調(diào)用register_event()注冊(cè)日志信號(hào),回測(cè)完成信號(hào),優(yōu)化完成信號(hào)的處理函數(shù)。如果是回測(cè)完成,進(jìn)入BacktesterManager.process_backtesting_finished_event()函數(shù)處理. 4.調(diào)用init_engine()方法初始化引擎,打印"初始化CTA回測(cè)引擎"的日志.日志也是作為事件來處理.創(chuàng)建vnpy.app.cta_strategy.backtesting.BacktestingEngine回測(cè)引擎類.調(diào)用init_rqdata()方法初始化rqdata米筐的sdk. (三).下載數(shù)據(jù) 由vnpy.app.cta_backtester.ui.widget.BacktesterManager.start_downloading()方法處理.首先獲取界面上輸入的合約種類,合約周期,開始和結(jié)束時(shí)間.然后進(jìn)入vnpy.app.cta_backtester.engine.BacktesterEngine.start_downloading()方法中,開啟新線程下載.具體下載方法為vnpy.app.cta_backtester.engine.BacktesterEngine.run_downloading().主要邏輯是調(diào)用vnpy.trader.rqdata.RqdataClient.query_history()根據(jù)合約信息下載對(duì)應(yīng)的K線數(shù)據(jù).請(qǐng)求的接口是米筐的rqdatac.services.get_price.get_price()的sdk方法.下載完成后,調(diào)用vnpy.trader.database.database_sql.SqlManager.save_bar_data()保存K線數(shù)據(jù).默認(rèn)K線數(shù)據(jù)保存在SQLite數(shù)據(jù)庫中.數(shù)據(jù)庫的配置信息在vnpy/trader/setting.py中.默認(rèn)路