Скачать MetaTrader 5

AccountFreeMargin() и AccountBalance()

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши программы на заказ. Зарабатывай с помощью сервиса Фриланс!
Forex Trader
114255
Forex Trader 2005.09.15 15:15 
Если в советнике есть условие

If (OrdersTotal()<1) // не более одной открытой позиции

Тогда при открытии: AccountFreeMargin() == AccountBalance() // если я не ошибаюсь

Но почему-то результат расчета лота для EURUSD в следующих операциях разный.

Lots=NormalizeDouble((AccountFreeMargin()*MaximumRisk)/(StopLoss*10),1);
0.3 =NormalizeDouble((890*0.2)/(40*10),1); // не понятно почему

Lots=NormalizeDouble((AccountBalance()*MaximumRisk)/(StopLoss*10),1);
0.4 =NormalizeDouble((890*0.2)/(40*10),1);

Подскажите, почему так?
Forex Trader
114255
Forex Trader 2005.09.15 17:22  
(OrdersTotal()<1 означает, что нет ордеров ни открытых ни отложнных.
Forex Trader
114255
Forex Trader 2005.09.15 17:38  
(OrdersTotal()<1 означает, что нет ордеров ни открытых ни отложнных.


это понятно, если так, то AccountFreeMargin() == AccountBalance() ???
Forex Trader
114255
Forex Trader 2005.09.15 18:14  
По идее - да. В терминале так и пишет.
Ты воткни тупо проверку AccountFreeMargin() == AccountBalance()
Если сойдется - пляшем дальше.
Forex Trader
114255
Forex Trader 2005.09.15 18:52  
Ввел дополнительное условие
If (OrdersTotal()<1 && AccountFreeMargin() == AccountBalance() )

Эксперт совершил одну сделку, после условия нарушились. Это странно, у меня на терминале нет открытых позиций и БАЛАНС == СРЕДСТВА && СРЕДСТВА == СВОБОДНО
Forex Trader
114255
Forex Trader 2005.09.16 16:52  
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением
Forex Trader
114255
Forex Trader 2005.09.16 18:28  
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением


пробовал ...... ,0) одна сделка
Forex Trader
114255
Forex Trader 2005.09.16 18:33  
//+------------------------------------------------------------------+
//|                                                          525.mq4 |
//|                                                             Oleg |
//|                                                                  |
//+------------------------------------------------------------------+

extern int       StopLoss=40;
extern int       TakeProfit=40;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   
   if(OrdersTotal()<1  &&   NormalizeDouble(AccountFreeMargin(),0) == NormalizeDouble(AccountBalance(),0) ) 
     {
      
     
             
     
 int     ticket=OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,4),2,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",4254,0,White);
      return;
     
    }
   
     return;
  }


Forex Trader
114255
Forex Trader 2005.09.16 21:33  
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением

пробовал ...... ,0) одна сделка

дык не 0, а 2 ;)
Forex Trader
114255
Forex Trader 2005.09.18 17:10  
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением

пробовал ...... ,0) одна сделка

дык не 0, а 2 ;)


Суть не меняется. После первой сделки равенство нарушается. Причем намного

Lots=NormalizeDouble((AccountFreeMargin()*MaximumRisk)/(StopLoss*10),1);
0.3 =NormalizeDouble((890*0.2)/(40*10),1); // не понятно почему

Lots=NormalizeDouble((AccountBalance()*MaximumRisk)/(StopLoss*10),1);
0.4 =NormalizeDouble((890*0.2)/(40*10),1);
Forex Trader
114255
Forex Trader 2005.09.18 17:33  
Если количество открытых ордеров больше нуля, то равенство, естественно, сразу нарушается.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий