(OrdersTotal()<1 означает, что нет ордеров ни открытых ни отложнных.
(OrdersTotal()<1 означает, что нет ордеров ни открытых ни отложнных.
это понятно, если так, то AccountFreeMargin() == AccountBalance() ???
По идее - да. В терминале так и пишет.
Ты воткни тупо проверку AccountFreeMargin() == AccountBalance()
Если сойдется - пляшем дальше.
Ты воткни тупо проверку AccountFreeMargin() == AccountBalance()
Если сойдется - пляшем дальше.
Ввел дополнительное условие
If (OrdersTotal()<1 && AccountFreeMargin() == AccountBalance() )
Эксперт совершил одну сделку, после условия нарушились. Это странно, у меня на терминале нет открытых позиций и БАЛАНС == СРЕДСТВА && СРЕДСТВА == СВОБОДНО
If (OrdersTotal()<1 && AccountFreeMargin() == AccountBalance() )
Эксперт совершил одну сделку, после условия нарушились. Это странно, у меня на терминале нет открытых позиций и БАЛАНС == СРЕДСТВА && СРЕДСТВА == СВОБОДНО
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением
пробовал ...... ,0) одна сделка
//+------------------------------------------------------------------+ //| 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; }
double AccountBalance( ) и double AccountFreeMargin( ) - попробуй нормализовать перед сравнением
пробовал ...... ,0) одна сделка
дык не 0, а 2 ;)
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);
Если количество открытых ордеров больше нуля, то равенство, естественно, сразу нарушается.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
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);
Подскажите, почему так?