как добавить в советник функцию? - страница 2

 
А когда закроются, будет 0. Т.е. он нужен только когда есть открытые ордера?
 
Roger:
А когда закроются, будет 0. Т.е. он нужен только когда есть открытые ордера?

да так и есть. помоему удобно.
 

В первом посте Вы писали:

Отображает стартовое эквити на графике.

просьба кто понимает в кодах.

надо добавть чтобы после закрытия серии всех ордеров стартовое эквити менялось на текущее. может быть вот эта функция?
 

 
Roger:

В первом посте Вы писали:

Отображает стартовое эквити на графике.

просьба кто понимает в кодах.

надо добавть чтобы после закрытия серии всех ордеров стартовое эквити менялось на текущее. может быть вот эта функция?


я так понимаю стартовое эквити это то эквити с которого советник начнёт отсчёт прибыли или убытка.можете поменять для себя в комментарии на Comment("Начальное Эквити = ", DoubleToStr( Equity,2)); проблема в том что советник закрывает только один раз после запуска.потому что не идёт отсчёт с новым эквити. если удалить советник а потом присоеденить к графику то тогда будет текущее эквити.
 

Честно говоря, я не понял причину, по которой советник перестает работать, но этот вариант у меня работает

extern string rem0 = "- в валюте депозита -";
extern double Profit = 1;
extern double Loss = 4;
double Last_Equity;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  Last_Equity = AccountEquity( );   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
   {
double Equity,Diff_Profit,Diff_Loss;
  Equity = AccountEquity( );
  Diff_Profit = Equity - Last_Equity;
  Diff_Loss = Last_Equity - Equity;
  if(Diff_Profit > Profit || Diff_Loss > Loss) 
    for (int i= OrdersTotal()-1;i>=0; i++)                                                        
      {                                                                                          
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
          if(OrderType()==0){ OrderClose(OrderTicket(),OrderLots(),Bid,5);Last_Equity = AccountEquity( );return(0);}
          else {OrderClose(OrderTicket(),OrderLots(),Ask,5);Last_Equity = AccountEquity( );return(0);}
        }
      }
//----
       Comment("Профит = ", DoubleToStr(Equity - Last_Equity,2)," эквити =  ",Last_Equity);                                       
   return(0);
  }
//+------------------------------------------------------------------+
 
Roger:

Честно говоря, я не понял причину, по которой советник перестает работать, но этот вариант у меня работает

здравствуйте. теперь советник не закрывает все ордера а только тот который с профитом или лосем.посмотрите как это исправить. спасибо что уделяете столько время.
 
extern string rem0 = "- в валюте депозита -";
extern double Profit = 1;
extern double Loss = 4;
double Last_Equity;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  Last_Equity = AccountEquity( );   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
   {
double Equity,Diff_Profit,Diff_Loss;
  Equity = AccountEquity( );
  Diff_Profit = Equity - Last_Equity;
  Diff_Loss = Last_Equity - Equity;
  if(Diff_Profit > Profit || Diff_Loss > Loss) 
    for (int i= OrdersTotal()-1;i>=0; i++)                                                        
      {                                                                                          
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
          if(OrderType()==0){ OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5);Last_Equity = AccountEquity( );return(0);}
          else {OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5);Last_Equity = AccountEquity( );return(0);}
        }
      }
//----
       Comment("Профит = ", DoubleToStr(Equity - Last_Equity,2)," эквити =  ",Last_Equity);                                       
   return(0);
  }
//+------------------------------------------------------------------+
 
Roger:

не понятно как он закрывает ордера остаются в рынке.
 
rusa:

осталось совсем немного исправить чтобы советник работал правильно .постарайтесь пожалуйста.
 

Ve4erom posle raboti zdelayu.

Причина обращения: