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

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

量化交易軟件:交易報(bào)告及短信通知的創(chuàng)建和發(fā)布

2023-08-02 15:14 作者:bili_45793681098  | 我要投稿

簡介

本文會(huì)講述如何生成一份 HTML 文件格式的交易結(jié)果報(bào)告(利用“EA 交易”、指標(biāo)或腳本),并通過 FTP 將其上傳到 WWW 服務(wù)器。赫茲量化還會(huì)考慮以短消息形式向手機(jī)發(fā)送交易事件通知。

想要更自如地閱讀本文內(nèi)容,建議讀者熟悉 HTML (超文本標(biāo)記語言)知識(shí)。

要實(shí)施報(bào)告上傳,赫茲量化需要一個(gè)可以通過 FTP 接受數(shù)據(jù)的 WWW 服務(wù)器(可以是任何計(jì)算機(jī))。而要實(shí)現(xiàn)接收短消息形式的交易事件通知,我們需要一個(gè)電子郵箱 - 短消息的網(wǎng)關(guān)(大多數(shù)移動(dòng)運(yùn)營商和第三方組織都提供該服務(wù))。

1. 創(chuàng)建報(bào)告并通過 FTP 發(fā)送

我們來創(chuàng)建一個(gè) MQL5 程序,并利用它來生成一份交易報(bào)告,再將報(bào)告通過 FTP 協(xié)議發(fā)送出去。首先,赫茲量化將其制作為腳本。將來我們能用它作為一個(gè)成品塊,插入到“EA 交易”和指標(biāo)中。比如說,在“EA 交易”中,您可以將此程序塊作為?Trade?或?Timer?事件處理程序,于交易請(qǐng)求后運(yùn)行此塊,或是為?ChartEvent?事件設(shè)定一些動(dòng)作。而在指標(biāo)中,您則可以將此塊加入到?Timer?或?ChartEvent?事件處理程序中。

程序創(chuàng)建的報(bào)告示例,如圖 1、2、3 所示?;蛘撸部梢酝ㄟ^本文末尾處的鏈接下載該報(bào)告。



圖 1. 報(bào)告示例 - 交易與倉位表



圖 2. 報(bào)告示例 - 平衡圖


圖 3. 報(bào)告示例 - 當(dāng)前工具的價(jià)格圖表

交易與倉位表(圖 1)中,為方便起見,所有交易都被劃分成倉位。該表的左側(cè),會(huì)顯示進(jìn)入市場(持倉和添加)的交易量、時(shí)間和價(jià)格。表右側(cè)顯示的則是退出市場(部分或完全平倉)的上述參數(shù)。根據(jù) in/out (買入/賣出),交易為分兩個(gè)部分 - 一個(gè)平倉,下一個(gè)開倉。

交易與倉位表的下方是平衡圖表(橫軸 - 時(shí)間),而其底部則是當(dāng)前工具價(jià)格圖表。

該程序會(huì)在?MetaTarder5_istall_dir\MQL5\Files?文件夾中創(chuàng)建 "report.html"、"picture1.gif" 和 "picture2.gif" 文件(html 格式報(bào)告文件、平衡圖表與價(jià)格圖表的圖像文件)。而且終端設(shè)置中的 FTP 發(fā)布已啟用 - 它會(huì)向指定服務(wù)器發(fā)送上述三種文件。此外,赫茲量化還需要兩種文件 - 帶有指向持倉方向箭頭的圖像 - 買入或賣出("buy.gif" 與 "sell.gif")。您可以采用這些圖像(下載鏈接在文末),也可以利用任何圖形編輯器自行繪制。而這兩個(gè)文件也要放到 WWW 服務(wù)器中與 "report.html" 文件相同的文件夾。

作為輸入?yún)?shù),該程序接受報(bào)告生成周期的開始與結(jié)束時(shí)間。本例中,報(bào)告周期的結(jié)束為當(dāng)前時(shí)間,用戶選擇報(bào)告周期的變體:整個(gè)周期、昨天、上周、上月或去年。

簡單說說我們創(chuàng)建報(bào)告的方式。所有可用的交易歷史都會(huì)請(qǐng)求交易服務(wù)器。獲取到的成交會(huì)被一個(gè)接一個(gè)地處理。deal_status[] 數(shù)組會(huì)存儲(chǔ)交易是否被處理的相關(guān)信息。該數(shù)組的元素索引,就是從交易服務(wù)器交易列表中接收到的交易編號(hào)。而元素的值則如下闡釋:0 - 交易尚未處理,1 - 交易已被部分處理 (in/out),127 - 交易處理完畢(其它值未被使用,留作后用)。

symb_list[] 數(shù)組包含交易得以執(zhí)行的金融工具名稱的列表,而 lots_list[] 數(shù)組則包含交易處理時(shí)每個(gè)工具的開倉交易量。交易量正值對(duì)應(yīng)的是買入持倉,而負(fù)值則對(duì)應(yīng)著賣出持倉。如果交易量等于零,則意味著該工具沒有敞口倉位。如果交易處理期間出現(xiàn)了未于列表中(symb_list[] 數(shù)組中)出現(xiàn)的金融工具 - 則將其添加到那里,且金融工具的編號(hào)(symb_total 變量)以 1 為增量增長。

根據(jù)每個(gè)交易處理過程,每一個(gè)后續(xù)交易都利用相同的金融工具進(jìn)行分析,直到平倉或買入/賣出。只有 deal_status[] 數(shù)組值小于 127 的那些交易會(huì)被分析。交易處理之后,對(duì)應(yīng)的 deal_status[] 數(shù)組元素即被賦值為 127,如果交易為倉位 in/out,則賦值 1。如果開倉時(shí)間匹配報(bào)告周期(由 StartTime 和 EndTime 變量定義) - 則此倉位被記錄到報(bào)告中(所有的輸入和輸出)。

除交易表外,還有一個(gè)新的當(dāng)前金融工具圖表被打開。此圖表的所有必要屬性均已提供,并用?ChartScreenShot()?函數(shù)做了一個(gè)屏幕截圖 - 這樣我們就能獲取帶有當(dāng)前工具價(jià)格圖表的圖像文件了。接下來,此圖表上的價(jià)格圖表會(huì)被隱藏,余額變動(dòng)圖表會(huì)被繪制,然后再創(chuàng)建另一個(gè)屏幕截圖。

兩個(gè)帶有圖表的圖像文件和帶有報(bào)告的 HTML 文件創(chuàng)建之后,通過 FTP 發(fā)送文件的功能即被勾選。如果允許 - 則會(huì)根據(jù)赫茲量化中指定的設(shè)置,利用?SendFTP()?函數(shù)發(fā)送 "report.html"、"picture1.gif" 和 "picture2.gif" 文件。

啟動(dòng) MetaQuotes Language Editor (語言編輯器),開始創(chuàng)建一個(gè)腳本。定義常量 - 圖表刷新超時(shí)(以秒計(jì))、價(jià)格圖表的寬度和高度以及平衡圖表的最大寬度。顯示余額變動(dòng)曲線的圖表周期,根據(jù)報(bào)告周期的期限和圖表的最大寬度進(jìn)行選擇。圖表的寬度調(diào)整為平衡圖所需的尺寸。

圖表的高度自動(dòng)計(jì)算為寬度的一半。赫茲量化還要將縱軸的寬度指定為常量 - 即圖形面積相比圖像寬度因縱軸而縮減的像素?cái)?shù)。

#define timeout 10 ? ? ? ? ? // 圖表刷新時(shí)間 #define Picture1_width 800 ? // 報(bào)告中圖表最大寬度 #define Picture2_width 800 ? // 報(bào)告中價(jià)格圖表寬度 #define Picture2_height 600 ?// 報(bào)告中價(jià)格圖表高度 #define Axis_Width 59 ? ? ? ?// 縱軸寬度 (以像素為單位)

指定將從用戶請(qǐng)求的輸入?yún)?shù)。

// 請(qǐng)求輸入?yún)?shù) #property script_show_inputs

創(chuàng)建報(bào)告周期的枚舉。

// 報(bào)告周期的枚舉 enum report_periods ?{ ? All_periods, ? Last_day, ? Last_week, ? Last_month, ? Last_year ?};

就報(bào)告周期詢問用戶(默認(rèn)為整個(gè)周期)。

// 詢問報(bào)告周期 input report_periods ReportPeriod=0;

編寫?OnStart()?函數(shù)的主體。

void OnStart() ?{

確定報(bào)告周期的開頭和結(jié)尾。

?datetime StartTime=0; ? ? ? ? ? // 報(bào)告周期起始時(shí)間 ?datetime EndTime=TimeCurrent(); // 報(bào)告周期結(jié)束時(shí)間 ?// 計(jì)算報(bào)告周期起始時(shí)間 ?switch(ReportPeriod) ? ?{ ? ? case 1: ? ? ? ?StartTime=EndTime-86400; ? ?// 日 ? ? ? ?break; ? ? case 2: ? ? ? ?StartTime=EndTime-604800; ? // 周 ? ? ? ?break; ? ? case 3: ? ? ? ?StartTime=EndTime-2592000; ?// 月 ? ? ? ?break; ? ? case 4: ? ? ? ?StartTime=EndTime-31536000; // 年 ? ? ? ?break; ? ?} ?// 如果不是以上的選項(xiàng), 那么 StartTime=0 (整個(gè)周期)

聲明將在本程序內(nèi)使用的變量。變量的用途描述見評(píng)論。

? int total_deals_number; ?// 歷史數(shù)據(jù)中的交易總數(shù) ? int file_handle; ? ? ? ? // 文件句柄 ? int i,j; ? ? ? ? ? ? ? ? // 循環(huán)計(jì)數(shù)器 ? int symb_total; ? ? ? ? ?// 交易中的資產(chǎn)數(shù)量 ? int symb_pointer; ? ? ? ?// 當(dāng)前資產(chǎn)的指針 ? char deal_status[]; ? ? ?// 交易狀態(tài) (處理/未處理) ? ulong ticket; ? ? ? ? ? ?// 交易訂單號(hào) ? long hChart; ? ? ? ? ? ? // 圖表 id ? double balance; ? ? ? ? ? // 當(dāng)前余額值 ? double balance_prev; ? ? ?// 之前余額值 ? double lot_current; ? ? ? // 當(dāng)前交易交易量 ? double lots_list[]; ? ? ? // 根據(jù)資產(chǎn)種類的開放交易量列表 ? double current_swap; ? ? ?// 當(dāng)前交易的庫存費(fèi) ? double current_profit; ? ?// 當(dāng)前交易的利潤 ? double max_val,min_val; ? // 最大值和最小值 ? ? string symb_list[]; ? ? ? // 交易的資產(chǎn)種類列表 ? string in_table_volume; ? // 建倉交易量 ? string in_table_time; ? ? // 進(jìn)場時(shí)間 ? string in_table_price; ? ?// 進(jìn)場價(jià)格 ? string out_table_volume; ?// 出場交易量 ? string out_table_time; ? ?// 出場時(shí)間 ? string out_table_price; ? // 出場價(jià)格 ? string out_table_swap; ? ?// 出場庫存費(fèi) ? string out_table_profit; ?// 出場利潤 ? bool symb_flag; ? ? ? ? ? // 資產(chǎn)在列表中的標(biāo)志 ? datetime time_prev; ? ? ? ? ? // 前面的時(shí)間值 ? datetime time_curr; ? ? ? ? ? // 當(dāng)前時(shí)間值 ? datetime position_StartTime; ?// 建倉時(shí)間 ? datetime position_EndTime; ? ?// 最后一個(gè)退場時(shí)間 ? ? ENUM_TIMEFRAMES Picture1_period; ?// 余額圖表時(shí)段

打開一個(gè)新圖表并設(shè)置其屬性 - 這是一個(gè)價(jià)格圖表,會(huì)在報(bào)告底部輸出。

// 開啟一個(gè)新圖表并設(shè)置其屬性 hChart=ChartOpen(Symbol(),0); ChartSetInteger(hChart,CHART_MODE,CHART_BARS); ? ? ? ? ? ?// 柱狀圖 ChartSetInteger(hChart,CHART_AUTOSCROLL,true); ? ? ? ? ? ?// 啟用自動(dòng)滾動(dòng) ChartSetInteger(hChart,CHART_COLOR_BACKGROUND,White); ? ? // 背景色為白色 ChartSetInteger(hChart,CHART_COLOR_FOREGROUND,Black); ? ? // 線和標(biāo)簽為黑色 ChartSetInteger(hChart,CHART_SHOW_OHLC,false); ? ? ? ? ? ?// 不顯示OHLC ChartSetInteger(hChart,CHART_SHOW_BID_LINE,true); ? ? ? ? // 顯示 BID 線 ChartSetInteger(hChart,CHART_SHOW_ASK_LINE,false); ? ? ? ?// 隱藏 ASK 線 ChartSetInteger(hChart,CHART_SHOW_LAST_LINE,false); ? ? ? // 隱藏 LAST 線 ChartSetInteger(hChart,CHART_SHOW_GRID,true); ? ? ? ? ? ? // 顯示網(wǎng)格線 ChartSetInteger(hChart,CHART_SHOW_PERIOD_SEP,true); ? ? ? // 顯示時(shí)段分隔符 ChartSetInteger(hChart,CHART_COLOR_GRID,LightGray); ? ? ? // 網(wǎng)格線為淺灰色 ChartSetInteger(hChart,CHART_COLOR_CHART_LINE,Black); ? ? // 圖表線為黑色 ChartSetInteger(hChart,CHART_COLOR_CHART_UP,Black); ? ? ? // 向上的柱為黑色 ChartSetInteger(hChart,CHART_COLOR_CHART_DOWN,Black); ? ? // 向下的柱為黑色 ChartSetInteger(hChart,CHART_COLOR_BID,Gray); ? ? ? ? ? ? // BID 線為灰色 ChartSetInteger(hChart,CHART_COLOR_VOLUME,Green); ? ? ? ? // 交易量和訂單水平為綠色 ChartSetInteger(hChart,CHART_COLOR_STOP_LEVEL,Red); ? ? ? // SL 和 TP 水平為紅色 ChartSetString(hChart,CHART_COMMENT,ChartSymbol(hChart)); // 注釋包含資產(chǎn)種類

圖表截屏,并將其保存為 "picture2.gif"。

// 把圖表保存為圖像文件 ChartScreenShot(hChart,"picture2.gif",Picture2_width,Picture2_height);

請(qǐng)求現(xiàn)有賬戶整個(gè)時(shí)間段的交易歷史。

// 請(qǐng)求整個(gè)時(shí)段的交易歷史 HistorySelect(0,TimeCurrent());

打開 "report.html" 文件,并在其中寫入帶有報(bào)告的 HTML 頁面(ANSI 編碼)。

// 打開圖表文件 file_handle=FileOpen("report.html",FILE_WRITE|FILE_ANSI);

編寫 HTML 文檔的開頭部分:

  • html 文檔的開頭 (<html>)

  • 顯示于您瀏覽器窗口頂部的標(biāo)題 (<head><title>“EA 交易報(bào)告”</title></head>)

  • 帶有背景色的 html 文檔主體部分的開頭 (<body bgcolor='#EFEFEF'>)

  • 居中對(duì)齊 (<center>)

  • 交易與倉位表的標(biāo)題 (<h2>交易報(bào)告</h2>)

  • 交易與倉位表的開頭,帶有對(duì)齊、邊框?qū)挾?、背景顏色、邊框顏色、單元格間距及單元格填充 (<table align='center' border='1' bgcolor='#FFFFFF' bordercolor='#7F7FFF' cellspacing='0' cellpadding='0'>)

  • 表標(biāo)題

// 寫 HTML 開頭部分 ? FileWrite(file_handle,"<html>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? "<head>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<title>Expert Trade Report</title>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? "</head>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<body bgcolor='#EFEFEF'>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<center>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<h2>Trade Report</h2>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<table align='center' border='1' bgcolor='#FFFFFF' bordercolor='#7F7FFF' cellspacing='0' cellpadding='0'>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "<tr>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th rowspan=2>SYMBOL</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th rowspan=2>Direction</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th colspan=3>Open</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th colspan=3>Close</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th rowspan=2>Swap</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th rowspan=2>Profit</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "</tr>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "<tr>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Volume</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Time</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Price</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Volume</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Time</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"<th>Price</th>"+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "</tr>");

獲取列表中的交易數(shù)量。


量化交易軟件:交易報(bào)告及短信通知的創(chuàng)建和發(fā)布的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
万州区| 利川市| 永宁县| 呈贡县| 顺平县| 涟水县| 阳山县| 黄平县| 保德县| 密山市| 大丰市| 鹤岗市| 逊克县| 鄂尔多斯市| 视频| 广河县| 达日县| 景谷| 大港区| 屏东县| 静安区| 黔东| 平利县| 广南县| 驻马店市| 崇义县| 保德县| 兴和县| 南木林县| 措美县| 神农架林区| 龙南县| 庆元县| 镇宁| 施甸县| 灌南县| 昭通市| 浦江县| 博湖县| 汶上县| 阜康市|