Скачать MetaTrader 5

Проверка доступной маржи для открытия позиции

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью и заслужи признание тысячи трейдеров!
Vladislav Andruschenko
91848
Vladislav Andruschenko 2013.07.25 19:32 

Собственно тему написал по своему запросу - статьи читал, Мат часть учил. Гугл не забанил :-)

 

появилась проблемка

 

пытаюсь перед открытием сделать проверку на доступную маржу:

      double margin;
        
        bool check = OrderCalcMargin(request.type,request.symbol,request.volume,request.price,margin); 

      if(check && margin<AccountInfoDouble(ACCOUNT_FREEMARGIN))OrderSend(request,result);

В тестере при таком коде - Доступная маржа = 0

 

по завершению тестера все ок:

 



 

 

Vladislav Andruschenko
91848
Vladislav Andruschenko 2013.07.25 19:34  
кто как проверяет доступность маржи?
Vladislav Andruschenko
91848
Vladislav Andruschenko 2013.07.25 19:35  
Print(check," ",margin," ",GetLastError());

вернул такое:

2013.07.25 20:34:21 2013.02.04 08:00:00   true 3.0 4753

Vladislav Andruschenko
91848
Vladislav Andruschenko 2013.07.25 19:56  

ничего не понятно, пр икоде: 

        Print(margin,"---",AccountInfoDouble(ACCOUNT_FREEMARGIN));

 запись:

2013.07.25 20:55:36 2013.01.18 13:00:00   27.0---1000.0

 

Т.е. получается что терминал вернее эксперт получает что да, все ок.  

Andrey Khatimlianskii
56176
Andrey Khatimlianskii 2013.07.26 22:52  

У меня так:

//--- проверка маржи
        double need_margin = 0.0;

        ResetLastError();
        if ( !OrderCalcMargin( ORDER_TYPE_BUY, pSymbol, Volume, SymbolInfoDouble( pSymbol, SYMBOL_ASK ), need_margin ) )
        {
                Print( "| OrderCalcMargin error #", GetLastError(), "!" );
                return(false);
        }
        else
        {
                double free_margin = AccountInfoDouble( ACCOUNT_FREEMARGIN );
                if ( free_margin < need_margin )
                {
                        Print( "| Not enough money for open BUY ", DoubleToString( Volume, 2 ), " lots ", pSymbol, " (free = ", DoubleToString( free_margin, 2 ), ", need = ", DoubleToString( need_margin, 2 ), ")!" );
                        return(false);
                }
        }
Vladislav Andruschenko
91848
Vladislav Andruschenko 2013.07.27 07:46  
komposter:

У меня так:

Спасибо. Значит все ок. Отлично.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий