Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

HistoryPositionInfo version 2 - biblioteca para MetaTrader 5

Visualizações:
1851
Avaliação:
(31)
Publicado:
2017.08.24 14:22
\MQL5\Include\HistorySelect_\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Versão 1.0: HistoryPositionInfo.

Novidades na versão 2:

A função GetProfitInPoints permanece, mas agora é recomendado usar a GetProfit:

   bool              GetProfit(double &profit_in_points,
                               double &commission,
                               double &swap,
                               double &profit_in_money);

Para a posição restaurada, a função GetProfit, além do lucro em pontos, retorna a comissão, o swap e lucro em dinheiro.

A classe CHistoryPositionInfo é projetada para obter o lucro da posição em pontos, a comissão, o swap e lucros em dinheiro com base no histórico de negociação. 

Descrição da classe 

A classe CHistoryPositionInfo fornece o lucro da posição em pontos, da comissão, do swap, e o lucro em dinheiro com base no histórico de negociação. 

Declaração

class CHistoryPositionInfo : public CArrayObj

Cabeçalho

#include <HistorySelect_\HistoryPositionInfo.mqh>

Métodos de classe por grupos

Inicialização
InitInicialização usando o identificador da posição
Acesso ao resultado dos cálculos  
GetProfitInPoints - método obsoleto. É recomendado usar a GetProfitObtenção do lucro da posição em pontos
GetProfitObtenção do lucro da posição em pontos, da comissão, do swap, e lucro em dinheiro
Definição de parâmetros 
LogErrorsAtivar/desativar o log de erros
PrintDeals(const bool value) Ativar/desativar o modo de saída de transações
Saída de transações 
PrintDeals(void)Saída das transações que formam a posição

Exemplo de trabalho com a classe CHistoryPositionInfo: solicitamos o histórico de negociação de cinco dias, formamos a matriz de todos os identificadores de posição encontrados, logo, no ciclo da matriz obtida, imprimimos o lucro da posição em pontos, da comissão, do swap, e o lucro em dinheiro com base no histórico de negociação:

//+------------------------------------------------------------------+
//|                                      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;  // from date (current time - 5 days)
input datetime to_date     =__DATE__+60*60*24;     // to date (current time + 1 days)
input bool     log_errors  = true;                 // logging errors
input bool     print_deals = true;                 // print deals
#include <HistorySelect_\HistoryPositionInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long arr_tickets[];
//--- request trade history 
   HistorySelect(from_date,to_date);
//---
   uint     total=HistoryDealsTotal();
   ulong    ticket=0;
   long     position_id=0;
//--- for all deals 
   for(uint i=0;i<total;i++)
     {
      //--- try to get deals ticket 
      if((ticket=HistoryDealGetTicket(i))>0)
        {
         //--- get deals properties 
         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("Search deals with POSITION_IDENTIFIER ",IntegerToString(arr_tickets[i]));

      CHistoryPositionInfo HistoryPositionInfo;
      //--- init position identifier
      HistoryPositionInfo.Init(arr_tickets[i]);
      //--- los errors
      HistoryPositionInfo.LogErrors(log_errors);
      //--- print deals
      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("Profit in points ",DoubleToString(profit_in_points,1),
               ", commission ",DoubleToString(commission,2),
               ", swap ",DoubleToString(swap,2),
               ", profit ",DoubleToString(profit,2));
     }
  }
//+------------------------------------------------------------------+



Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/18721

Get_Rich_or_Die_Trying_GBP Get_Rich_or_Die_Trying_GBP

Negociação em PERIOD_M1 (M1). Cálculo de barras de alta e baixa.

Trailing_Profit Trailing_Profit

Fechamento de todas as posições abertas concorde a porcentagem a partir do lucro.

SaveTicks SaveTicks

Este utilitário é projetado para gravar cotações de ticks no formato CSV e BIN, escolha conveniente de um conjunto de símbolos para gravação.

Omni_Trend Omni_Trend

Indicador de tendência do tipo NRTR com uso de média móvel e ATR.