проверьте пожалуйста советник - страница 2

 
rusa:

Закрывает все открытые ордера при изменении эквити на заданное значение.

Отображает стартовое эквити на графике. Автор утверждает что всё работает как было задумано. У меня почему то после закрытия всех ордеров с прибылью стартовое эквити не меняется .Может кто нибудь подскажет почему так работает?Очень нужен именно такой советник.

extern string rem0 = "- в валюте депозита -";
extern double Profit = 30;
extern double Loss = 1000;
double Last_Equity,
Equity,
Diff_Profit,
Diff_Loss;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Last_Equity = AccountEquity( );
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
Equity = AccountEquity( );
Diff_Profit = Equity - Last_Equity;
Diff_Loss = Last_Equity - Equity;
if(Diff_Profit > Profit || Diff_Loss > Loss)
{
while(OrdersTotal()>0)
{
for (int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
switch(OrderType())
{
case 0 : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
case 1 : OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
}
}
}
}
Last_Equity = Equity;
}
Comment("Начальное Эквити = ", DoubleToStr(Last_Equity,2));
//----
return(0);
}
//+------------------------------------------------------------------+

может кто нибудь посмотрит этот код. почему после закрытия ордеров эквити не меняется показывает старое число .Неужели всё так сложно?
 
rusa:
Неужели всё так сложно?
extern string rem0 = "- в валюте депозита -";
extern double Profit = 30;
extern double Loss = 1000;
double Last_Equity,
Equity,
Diff_Profit,
Diff_Loss;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Last_Equity = AccountEquity( ); 
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
Equity = AccountEquity( );
Diff_Profit = Equity - Last_Equity;
Diff_Loss = Last_Equity - Equity;
if(Diff_Profit > Profit || Diff_Loss > Loss)
{
while(OrdersTotal()>0)
{
for (int i=0; i < OrdersTotal(); i++) 
{ 
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
switch(OrderType())
{
case 0 : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
case 1 : OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
} 
}
}
}
Last_Equity = AccountEquity( );
} 
Comment("Начальное Эквити = ", DoubleToStr(Last_Equity,2)); 
//----
return(0);
}
//+------------------------------------------------------------------+