请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

程序库

HistoryPositionInfo 版本 2 - MetaTrader 5程序库

Vladimir Karputov | Chinese English Русский Español Deutsch 日本語 Português

显示:
1804
等级:
投票: 25
已发布:
2017.08.18 11:09
\MQL5\Include\HistorySelect_\

版本 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 Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/18721

Get_Rich_or_Die_Trying_GBP Get_Rich_or_Die_Trying_GBP

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

Trailing_Profit Trailing_Profit

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

SaveTicks SaveTicks

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

Omni_Trend Omni_Trend

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