- 显示:
- 2869
- 等级:
- 已发布:
- 2017.08.18 11:09
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
版本 1.0: HistoryPositionInfo.
版本 2 的新功能:
还有 GetProfitInPoints 函数, 但是推荐使用新的 GetProfit 函数:
bool GetProfit(double &profit_in_points, double &commission, double &swap, double &profit_in_money);
GetProfit 函数返回以下的仓位信息, 除了利润点数之外: 手续费,隔夜息以及利润钱数。
CHistoryPositionInfo 类是设计用于在交易历史中取得仓位的利润点数,手续费,隔夜息和利润钱数的。
类的描述
CHistoryPositionInfo 类可以从交易历史中取得仓位的利润点数,手续费,隔夜息和利润钱数。
声明
class CHistoryPositionInfo : public CArrayObj
头文件
#include <HistorySelect_\HistoryPositionInfo.mqh>
类方法分组
初始化 | |
---|---|
Init | 使用仓位ID初始化 |
访问计算结果 | |
GetProfitInPoints 是一个旧的方法,推荐使用 GetProfit | 取得仓位的利润点数 |
GetProfit | 取得仓位的利润点数,手续费,隔夜息和利润钱数 |
设置参数 | |
LogErrors | 启用/禁止错误记录 |
PrintDeals(const bool value) | 启用/禁止交易打印模式 |
打印交易 | |
PrintDeals(void) | 打印构成仓位的交易 |
一个使用 CHistoryPositionInfo 类的实例: 请求5天的交易历史,生成所有找到仓位的标示符的数组,然后在循环中打印如下信息: 交易历史中仓位的利润点数, 手续费,隔夜息和利润钱数。
//+------------------------------------------------------------------+ //| TestHistoryPositionInfo.mq5 | //| Copyright © 2017, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "2.000" #property script_show_inputs //--- input datetime from_date = __DATE__-60*60*24*5; // 开始的日期 (当前日期 - 5 天) input datetime to_date =__DATE__+60*60*24; // 结束日期 (当前日期 + 1 天) input bool log_errors = true; // 记录错误 input bool print_deals = true; // 打印交易 #include <HistorySelect_\HistoryPositionInfo.mqh> //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { //--- long arr_tickets[]; //--- 请求交易历史 HistorySelect(from_date,to_date); //--- uint total=HistoryDealsTotal(); ulong ticket=0; long position_id=0; //--- 对于所有交易 for(uint i=0;i<total;i++) { //--- 尝试取得交易单号 if((ticket=HistoryDealGetTicket(i))>0) { //--- 取得交易属性 position_id=HistoryDealGetInteger(ticket,DEAL_POSITION_ID); int arr_size=ArraySize(arr_tickets); bool search=false; for(int ii=0;ii<arr_size;ii++) { if(arr_tickets[ii]==position_id) { search=true; continue; } } if(!search) { ArrayResize(arr_tickets,arr_size+1,100); arr_tickets[arr_size]=position_id; } } } //--- int arr_size=ArraySize(arr_tickets); for(int i=0;i<arr_size;i++) { Print(""); Print("根据 POSITION_IDENTIFIER 搜索交易",IntegerToString(arr_tickets[i])); CHistoryPositionInfo HistoryPositionInfo; //--- 初始化仓位标识符 HistoryPositionInfo.Init(arr_tickets[i]); //--- 记录错误 HistoryPositionInfo.LogErrors(log_errors); //--- 打印交易 HistoryPositionInfo.PrintDeals(print_deals); //--- double profit_in_points=0.0; double commission=0.0; double swap=0.0; double profit=0.0; if(HistoryPositionInfo.GetProfit(profit_in_points,commission,swap,profit)) Print("利润点数 ",DoubleToString(profit_in_points,1), ", 手续费 ",DoubleToString(commission,2), ", 隔夜息 ",DoubleToString(swap,2), ", 利润 ",DoubleToString(profit,2)); } } //+------------------------------------------------------------------+
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/18721

在 PERIOD_M1 (M1) 上进行交易,计算上涨和下跌的烛形数量。

根据指定的利润百分比关闭所有开启的仓位。

这个工具程序以 CSV 和 BIN 格式记录分时报价,可以灵活设置需要写入的交易品种。

一个使用了 MA(移动平均) 和 ATR(平均波幅通道)的 NRTR(Nick Rypock 跟踪反转)类型的趋势指标。