MOEX.初学者的问题 - 页 14

 
Sergey Savinkin:
尝试在REAL交易2天,即使是手动交易1个合约,很多问题也会自行消失。
演示版不会有上述所有的魅力?
 
Renat Akhtyamov:
试用版会不会没有上述所有的魅力?

在演示中没有清算。并非总是正确的抵押品被正确地指出。不能确定是否有正确的堆栈。另外,你可以估计订单执行 的真实速度。你不会在一份合同上损失多少钱。))))

 
Sergey Savinkin:

在演示中没有清算。并非总是正确的抵押品被正确地指出。不能确定正确的堆栈。另外,你可以估计订单执行的真实速度。你不会在一份合同上损失多少钱。))))

我是说清算?

好吧,如果在演示中没有清除,那么我还不知道如何测试它。

 
Renat Akhtyamov:

我是说清算?

如果不是在演示中,那么我还不知道如何测试它。

为什么你需要为测试进行清算?一切都算作是实时的。清理只是确认一切正常。
 
Yuriy Asaulenko:
为什么你需要为测试进行清算?所有计数为实时。清理只是确认一切正常。

我原谅你;)

我想在尽可能接近真实的交易条件下测试该策略。

关键是,在现实中没有 "礼物"。

 
Renat Akhtyamov:

我原谅你;)

我想在交易条件下测试该策略,尽可能地接近真实条件。

关键是,在现实中没有 "礼物"。

真实上总是有礼物的。

 
Alexey Kozitsyn:

现实世界中总是有礼物。

你是说意外损失?
 
Renat Akhtyamov:
你是指意外损失吗?

大多数时候,是的,它是一种损失。但并不总是如此。就个人而言,我并不总是理解经纪人的佣金是如何收取的。某种风格的交易可能会对交易的 频率收取佣金。如果你不看博彩市场+以大手笔入场,确实可能会有损失。一般来说,当你从测试者/演示者切换到真实时,总会有一些特殊情况。而且总是会有礼物。

 
你好,你能给我建议吗?我通过MT5在Forts上交易,在我的账户上添加了监控***,但我面临的事实是,***不能正确计算交易结果,特别是如果头寸是通过清算转移的,即可能不能正确计算货币的利润/损失,或者监控中的一些交易报表没有。也许有人对这个问题有意见?
 
Вадим Мотеюнас:
你好,你能给我建议吗?我通过MT5在Forts上交易,在我的账户上添加了监控***,但我面临的事实是,***不能正确计算交易结果,特别是如果头寸是通过清算转移的,即可能不能正确计算货币的利润/损失,或者监控中的一些交易报表没有。也许有人对这个问题有意见?
//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  double price_out = 0;
  double volume_out = 0;
  double price = 0;
  double volume = 0;
//---  
  ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );
    
  if ( pos_id > 0 )
  {
      if ( HistorySelectByPosition( pos_id ) )
      {
        int deals = HistoryDealsTotal();
      
        for( int i = 0; i < deals; i++ )
        {
          ulong deal_ticket = HistoryDealGetTicket( i );
          ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );
        
          if ( order_ticket > 0 )
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) );
              
            if ( deal_entry == DEAL_ENTRY_IN )
            {
              price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_in += price * volume;
              volume_in += volume;  
            }
            else
            if ( deal_entry == DEAL_ENTRY_OUT )
            {
              price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_out += price * volume;
              volume_out += volume;  
            }
          }
        }
//---  
        price = price_in - price_out;
        volume = volume_in - volume_out;
//---
        if ( volume > 0 )
        {       
          return( NormalizeDouble( price / volume, _Digits ) );
        }
      }
      else
      {
        Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol );
    }
  return( 0 );
} 
原因: