[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 521

 
Roger :

Nasıl kontrol edecektim?

Teşekkür ederim.

Ancak genel olarak, danışmanı yeniden başlatmadan MaxEquity ayarının örneğin 500 kez çalışmasını sağlamak mümkün müdür.

örneğin, sayaçta 500 sayısını yazarsanız, şöyle sonuçlansın: diyelim ki ilk özkaynak 10.000,

daha sonra 10.000'lik ilk öz sermaye artışından sonra (ayarlarda belirtilir), büyük eksiler kapatılır.

Ve böylece 500 kez (örneğin) (sonuçta, başlangıçtaki eşitliği 500 kez çoğaltmak hala mümkün değil).

Yani, fark sizin seçeneğiniz ile ortaya çıkacaktır - yani ilk öz sermayeye 10.000'lik bir artıştan sonra = 10.000 -

danışmanın yeniden başlatılmasına gerek yoktur ve döngü devam edecektir - 20.000'e 10.000'e, 30.000 + 10.000'e ve bu şekilde 500 kez (örneğin) daha 10.000 eklenecektir. İyi

ve her artıştan sonra = 10.000, en büyük eksi ile kaybeden sipariş kapatılacak mı (veya birkaç sipariş - ayarlarda belirtilir)?

 
alex12 :

Teşekkür ederim.

Ancak genel olarak, danışmanı yeniden başlatmadan MaxEquity ayarının örneğin 500 kez çalışmasını sağlamak mümkün müdür.

örneğin, sayaçta 500 sayısını yazarsanız, şöyle sonuçlansın: diyelim ki ilk özkaynak 10.000,

daha sonra 10.000'lik ilk öz sermaye artışından sonra (ayarlarda belirtilir), büyük eksiler kapatılır.

Ve böylece 500 kez (örneğin) (sonuçta, başlangıçtaki eşitliği 500 kez çoğaltmak hala mümkün değil).

Yani, fark sizin seçeneğiniz ile ortaya çıkacaktır - yani ilk öz sermayeye 10.000'lik bir artıştan sonra = 10.000 -

danışmanın yeniden başlatılmasına gerek yoktur, ancak döngü devam edecektir - 20.000'e 10.000'e, 30.000'e + 10.000'e ve bu şekilde 500 kez daha eklenecektir (örneğin). İyi

ve her artıştan sonra = 10.000, en büyük eksi ile kaybeden sipariş kapatılacak mı (veya birkaç sipariş - ayarlarda belirtilir)?


Herhangi bir yeniden başlatma yapmanız gerekmez. Pozisyonları kapattıktan sonra ilk özkaynak verilerini güncellemek ve yeni başlangıç özkaynaklarından özkaynak artışını beklemek gerekir.
 
artmedia70 :
Herhangi bir yeniden başlatma yapmanız gerekmez. Pozisyonları kapattıktan sonra ilk özkaynak verilerini güncellemek ve yeni başlangıç özkaynaklarından özkaynak artışını beklemek gerekir.
ama anladığım kadarıyla hepsi program kodunda yapılıyor. Programlama gücüm yok)
 
alex12 :
ama anladığım kadarıyla hepsi program kodunda yapılıyor. Programlama gücüm yok)
Doğal olarak. Öz sermayeyi sürekli olarak izleyecek ve belirtilen değer aşılırsa kârsız pozisyonları kapatmak için bir komut gönderecek tek bir işleve ihtiyaç vardır. Ayrıca, tüm bu pozisyonların başarılı bir şekilde kapatılmasından sonra, yeni eşitlik durumunu ezberleyin ve daha fazla takip etmeye devam edin.
 
artmedia70 :
Doğal olarak. Öz sermayeyi sürekli olarak izleyecek ve belirtilen değer aşılırsa kârsız pozisyonları kapatmak için bir komut gönderecek tek bir işleve ihtiyaç vardır. Ayrıca, tüm bu pozisyonların başarılı bir şekilde kapatılmasından sonra, yeni eşitlik durumunu ezberleyin ve daha fazla takip etmeye devam edin.
Teşekkür ederim.
 
tol64 :

Söyle bana sorun ne olabilir?


Sorumda bana yardımcı olacak yeterli bilgi yok sanırım.)) Sorumu ekleyeceğim. Aşağıda, Uzman Danışmanımın ana işlevlerini içeren bir yapı sunuyorum. Belki vurguladığım sorunun ne olduğunu ortaya çıkarır.

 // ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ С ФУНКЦИЯМИ
// ВНЕШНИЕ ПАРАМЕТРЫ
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ

Init()
{
   // ПРОВЕРКА: ПРАВИЛЬНО ЛИ ВВЕДЕНЫ ЗНАЧЕНИЯ ТАЙМФРЕЙМОВ ВО ВНЕШНИХ ПАРАМЕТРАХ.
}

Deinit()
{
   return ( 0 );
}

Start()
{
   // ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ
   // ИНДИКАТОРЫ
   // УСЛОВИЯ
   // ФУНКЦИИ ВИЗУАЛИЗАЦИИ
   // ФУНКЦИЯ УДАЛЕНИЯ ОРДЕРОВ ПРИ ИСПОЛНЕНИИ ОПРЕДЕЛЁННОГО УСЛОВИЯ
  
//--- ВЫЗОВ ФУНКЦИИ УПРАВЛЕНИЯ КАПИТАЛОМ ------------------------------------------------------------------//  
   if (Money_Management_OnOff == TRUE)
      {  
         MM_FxProp(Delta,Start_Lot,Start_Deposit,Step_Lot,Stop_Trade, Symbol ());
         Lots = NormalizeDouble ( GlobalVariableGet ( "fxprop_lot" ), 2 );

       //--- ПРОВЕРКА: ИЗМЕНИЛОСЬ ЛИ ЗНАЧЕНИЕ ЛОТА С ЦЕЛЬЮ ПЕРЕУСТАНОВКИ ОТЛОЖЕННЫХ ОРДЕРОВ ----------------//
         Re_Set_All_Orders_by_Lots(dgt, Lots);
      }
   else   Lots = 0.1 ;

   // ФУНКЦИЯ ИНФОРМАЦИОННОЙ ПАНЕЛИ
   // ПРОВЕРКА НА НОВЫЙ БАР
   // ПРОВЕРКА НА КОЛ-ВО БАРОВ НА ГРАФИКЕ
   // ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ
   // УСТАНОВКА ФЛАГОВ, ЕСЛИ ИСПОЛНЯЮТСЯ УСЛОВИЯ ДЛЯ ЗАКРЫТИЯ ОПРЕДЕЛЁННЫХ ПОЗИЦИЙ
   // ФУНКЦИИ ЗАКРЫТИЯ ПОЗИЦИЙ ПО ОПРЕДЕЛЁННЫМ УСЛОВИЯМ
   // ФУНКЦИЯ ТРЕЙЛИНГ СТОПА
   // ФУНКЦИЯ МОДИФИКАЦИИ ОТЛОЖЕННЫХ ОРДЕРОВ
   // ФУНКЦИЯ УСТАНОВКИ ОТЛОЖЕННЫХ ОРДЕРОВ
   // ФУНКЦИЯ ОТКРЫТИЯ ПОЗИЦИИ ПО ОПРЕДЕЛЁННЫМ УСЛОВИЯМ
   // УДАЛЕНИЕ ОТЛОЖЕННЫХ ОРДЕРОВ ПО ОПРЕДЕЛЁННЫМ УСЛОВИЯМ
  
//--- ЗАНОСИТЬ ДАННЫЕ В ОТЧЁТ ТОЛЬКО, ЕСЛИ КОЛ-ВО ЗАКРЫТЫХ ПОЗИЦИЙ ИЗМЕНИЛОСЬ
   Amount_Positions = 0 ;
   
   for (count = 0 ; count < OrdersHistoryTotal (); count++)
      {
         OrderSelect (count, SELECT_BY_POS, MODE_HISTORY);

         if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
            {
               Amount_Positions++;
            }
      }

   if (Amount_Close_Deals != Amount_Positions)
      {  
         if (Short_Trade_Report == TRUE)
            {  
               // ФУНКЦИЯ ФОРМИРУЮЩАЯ ОТЧЁТ
            }
         Amount_Close_Deals = Amount_Positions;
      }
}

Şu anda, Raporun doğru bir şekilde oluşturulabilmesi için Expert Advisor'ın parametrelerinde para yönetimi fonksiyonunu etkinleştirdikten/devre dışı bıraktıktan sonra Expert Advisor'ı her seferinde yeniden derlemeniz gerekiyor.

Not Belki de bu, global uçbirim değişkeni fxprop_lot'tan kaynaklanmaktadır ?

 
tol64 :


Sorumda bana yardımcı olacak yeterli bilgi yok sanırım.)) Sorumu ekleyeceğim. Aşağıda, Uzman Danışmanımın ana işlevlerini içeren bir yapı sunuyorum. Belki vurguladığım sorunun ne olduğunu ortaya çıkarır.

Şu anda, Raporun doğru bir şekilde oluşturulabilmesi için Expert Advisor'ın parametrelerinde para yönetimi fonksiyonunu etkinleştirdikten/devre dışı bıraktıktan sonra Expert Advisor'ı her seferinde yeniden derlemeniz gerekiyor.

Not Belki de bu, global uçbirim değişkeni fxprop_lot'tan kaynaklanmaktadır ?


Bunun yeterli olduğunu düşünüyorsanız, görünüşe göre - evet. Cevap beklemek kalır. Bende yok
 
Vinin :

Bunun yeterli olduğunu düşünüyorsanız, görünüşe göre - evet. Cevap beklemek kalıyor. Bende yok


Ne yazık ki, şu ana kadarki deneyimim, sağlanan bilgilerin belirli bir sorunu çözmek için yeterli olup olmadığına karar vermeme izin vermiyor. Bunu bilerek yapmadım ve eğer varsa özür dilerim.)) Gerçek şu ki, bahsettiğim problemde, bence kilit nokta, Expert Advisor yeniden derlendiğinde her şeyin doğru çalışmasıdır. Ama yine, bu benim olgunlaşmamış deneyimimden kaynaklanıyor. Lütfen bu sorunu çözmek için hangi bilgileri sağlamanız gerektiğini söyleyin. Sorun açıkça para yönetimi işlevini veya bir rapor oluşturma işlevini içerir. Bu nedenle, bir para yönetimi işlevi sağlayacağım:

 double MM_FxProp( double Delta, double Start_Lot, double Start_Deposit, double Step_Lot, double Stop_Trade, string fSymbol) 
{
   if (Delta < Step_Lot || Start_Lot < Step_Lot                          ||     // если Delta <, чем 0.01 или Start_Lot <, чем 0.01 или
       Start_Deposit <= MarketInfo (fSymbol, MODE_MARGINREQUIRED) / 10.0   ||     // Start_Depo <=, чем размер свободных средств, ...
                                                                               // ...необходимых для открытия 1 лота на покупку (разделить на 10) или
       AccountFreeMarginCheck (fSymbol, OP_BUY, Start_Lot) <= Stop_Trade  ||     // размер свободных средств после BUY <= Stop_Trade или
       AccountFreeMarginCheck (fSymbol, OP_SELL, Start_Lot) <= Stop_Trade ||     // размер свободных средств после SELL <= Stop_Trade или
       Start_Lot < MarketInfo (fSymbol, MODE_MINLOT)                      ||     // Start_Lot <, чем минимальный возможный или
                
       (fSymbol != "GBPUSD" && fSymbol != "EURUSD" && fSymbol != "USDCHF" && fSymbol != "USDJPY" &&     // нет ни одного инструмента из ниже перечисленных, то
        fSymbol != "AUDUSD" && fSymbol != "USDCAD" && fSymbol != "EURCHF" && fSymbol != "EURGBP" && 
        fSymbol != "EURJPY" && fSymbol != "EURCAD" && fSymbol != "EURAUD" && fSymbol != "GBPCHF" &&
        fSymbol != "GBPJPY" && fSymbol != "CHFJPY" && fSymbol != "NZDUSD" && fSymbol != "USDSEK" && 
        fSymbol != "USDDKK" && fSymbol != "USDNOK" && fSymbol != "USDSGD" && fSymbol != "USDZAR" && 
        fSymbol != "EURNZD" && fSymbol != "AUDJPY" && fSymbol != "AUDNZD" && fSymbol != "AUDCAD" && 
        fSymbol != "AUDCHF" && fSymbol != "CADCHF" && fSymbol != "CADJPY" && fSymbol != "NZDJPY" && fSymbol != "XAUUSD" )) 
       {
         Print ( "Расчет лота функцией MM_FxProp() невозможен из-за некорректности значений переданных ей аргументов." );
         return ( 0 );
       }
   
   double S_D     = Start_Deposit;
   double S_L     = Start_Lot;
   double Stp_L   = Step_Lot;
   double stepUP  = 0 ;
   double stepDW  = 0 ;
   
   if ( AccountBalance () >= Start_Deposit) //если текущий баланс >= значению Start_Depo, то
   {
       while ( AccountBalance () > S_D + Delta * ( 10.0 * S_L)) //пока текущий баланс >, чем результат формулы
      {
         S_D += Delta * ( 10.0 * S_L);
         S_L += Stp_L;
      }
      stepUP = S_D + Delta * ( 10.0 * S_L);
      stepDW = S_D;
   }
   
   if ( AccountBalance () < Start_Deposit) 
   {
       while ( AccountBalance () < S_D) 
      {
         if (S_L > Stp_L) S_L -= Stp_L;
         else S_L = Stp_L;
         S_D -= Delta * ( 10.0 * S_L);
      }
      stepDW = S_D;
      stepUP = S_D + Delta * ( 10.0 * S_L);
   }
   
   if ( AccountFreeMarginCheck (fSymbol, OP_BUY, S_L) <= Stop_Trade  ||   // если размер свободных средств после BUY <= Stop_Trade или
       AccountFreeMarginCheck (fSymbol, OP_SELL, S_L) <= Stop_Trade ||   // размер свободных средств после SELL <= Stop_Trade или
       GetLastError () == 134 /* NOT_ENOUGH_MONEY */                  ||   // не хватает средств для операции или
       S_L < MarketInfo (fSymbol, MODE_MINLOT))                           // расчитанный объём лота <, чем минимальный возможный, то
       {
         while ( AccountFreeMarginCheck (fSymbol, OP_BUY, S_L) <= Stop_Trade || // пока размер свободных средств после BUY <= Stop_Trade или
                 AccountFreeMarginCheck (fSymbol, OP_SELL, S_L) <= Stop_Trade)   // размер свободных средств после SELL <= Stop_Trade, то
                {
                  S_L -= Stp_L;     // считаем так.
                   if (S_L < MarketInfo (fSymbol, MODE_MINLOT))   // если же расчитанный объём лота <, чем минимальный возможный, то
                     {
                         Print ( "Объём средств на счете не позволяет открыть позицию минимального объёма." );
                         return ( GlobalVariableSet ( "fxprop_lot" , 0 ));
                     }
                }
       } 
   else {
             GlobalVariableSet ( "fxprop_lot" , S_L);
             Comment ( "Средств на счете: " , DoubleToStr ( AccountBalance (), 2 ), ", лот: " , S_L, ", лот + " , Stp_L, "при >=" , stepUP, ", лот - " , Stp_L, "при <" , stepDW); return ;
        }
   return ( 0.0 );
}
Ve bir sonraki gönderide, rapor oluşturma işlevi...
 
void Short_Trade_Report( int Mgc_Src_LP_TS№ 1 , int Mgc_LP01_TS№ 1 , int Mgc_LP02_TS№ 1 , int Mgc_LP03_TS№ 1 , int Mgc_LP04_TS№ 1 , int Mgc_LP05_TS№ 1 , int Mgc_LP06_TS№ 1 ,
                         int Mgc_Src_SP_TS№ 1 , int Mgc_SP01_TS№ 1 , int Mgc_SP02_TS№ 1 , int Mgc_SP03_TS№ 1 , int Mgc_SP04_TS№ 1 , int Mgc_SP05_TS№ 1 , int Mgc_SP06_TS№ 1 ,
                        
                         int Mgc_Src_LP_TS№ 2 , int Mgc_LP01_TS№ 2 , int Mgc_LP02_TS№ 2 , int Mgc_LP03_TS№ 2 , int Mgc_LP04_TS№ 2 , int Mgc_LP05_TS№ 2 , int Mgc_LP06_TS№ 2 ,
                         int Mgc_Src_SP_TS№ 2 , int Mgc_SP01_TS№ 2 , int Mgc_SP02_TS№ 2 , int Mgc_SP03_TS№ 2 , int Mgc_SP04_TS№ 2 , int Mgc_SP05_TS№ 2 , int Mgc_SP06_TS№ 2 ,
                        
                         int Mgc_Src_LP_TS№ 3 , int Mgc_LP01_TS№ 3 , int Mgc_LP02_TS№ 3 , int Mgc_LP03_TS№ 3 , int Mgc_LP04_TS№ 3 , int Mgc_LP05_TS№ 3 , int Mgc_LP06_TS№ 3 ,
                         int Mgc_Src_SP_TS№ 3 , int Mgc_SP01_TS№ 3 , int Mgc_SP02_TS№ 3 , int Mgc_SP03_TS№ 3 , int Mgc_SP04_TS№ 3 , int Mgc_SP05_TS№ 3 , int Mgc_SP06_TS№ 3 )
{
#define  RA 10000        // Range Array - Размер массива для отчёта
      
double    Acc_Bal_Close[RA];   // Массив для баланса на закрытии сделки(-ок)
double    Acc_Bal_Open[RA];     // Массив для баланса на открытии сделки(-ок)

double    Price_Open_Pos[RA];
double    Price_Stop_Loss[RA];

double    TS№ 1 _DS[RA], TS№ 2 _TA[RA], TS№ 3 _SBH[RA];

int       pos, handle, dgt, Magic, sign, index;

double    Swap_P;
double    Profit_P;
double    Commission;
double    Open_Price;
double    Stop_Loss;
      
string    Type_Pos;
string    comment;
string    Str_Stop_Loss;
      
//--- ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ ДЛЯ РАСЧЁТА ОТСТУПА В СТРОКАХ КОММЕНТАРИЕВ --------------------------------//
int digit_string;
int digit = MarketInfo ( Symbol (),MODE_DIGITS);
   
switch (digit)
      {   case 2 : digit_string = 4 ; dgt = 100 ;     break ;
         case 3 : digit_string = 5 ; dgt = 100 ;     break ;
         case 4 : digit_string = 6 ; dgt = 10000 ;   break ;
         case 5 : digit_string = 7 ; dgt = 10000 ;   break ;
         default : Print ( "Неизвестный символ! Количество знаков = " ,digit); return ( 0 );  }

handle = FileOpen ( "ShortReport.csv" , FILE_CSV | FILE_WRITE );
      
if (handle > 0 ) //1
   {
       FileWrite (handle, "Time Close" + "," + "Symbol" + "," + "Type" + "," + "Lots" + "," + "Balance($)" + "," + "Stop Loss(p)" + "," + "Profit(p)" + "," + "TS#1_DS(p)" + "," + "TS#2_TA(p)" + "," + "TS#3_SBH(p)" );

       for (pos = 0 ; pos < OrdersHistoryTotal (); pos++) // 2
         {  
             OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY);
                  
            Commission =   OrderCommission ();
            Swap_P     = ( OrderSwap ()/ 10 )/ OrderLots ();
            Profit_P   = ( OrderProfit ()/ 10 )/ OrderLots ()+( OrderSwap ()/ 10 )/ OrderLots ();
            Open_Price =   NormalizeDouble ( OrderOpenPrice (), Digits );
            
            index = StringFind ( OrderComment (), "[sl]" , 0 );
            
             if (index != - 1 )   {  comment = StringSubstr ( OrderComment (), 0 , StringLen ( OrderComment ())- 4 );   }
             else   {  comment = StringSubstr ( OrderComment (), 0 , StringLen ( OrderComment ()));  }
            
             if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && 
                                 ( OrderMagicNumber () == Mgc_Src_LP_TS№ 1 || OrderMagicNumber () == Mgc_Src_SP_TS№ 1 || 
                                   OrderMagicNumber () == Mgc_LP01_TS№ 1    || OrderMagicNumber () == Mgc_LP02_TS№ 1    || OrderMagicNumber () == Mgc_LP03_TS№ 1 || 
                                   OrderMagicNumber () == Mgc_LP04_TS№ 1    || OrderMagicNumber () == Mgc_LP05_TS№ 1    || OrderMagicNumber () == Mgc_LP06_TS№ 1 ||
                                   OrderMagicNumber () == Mgc_SP01_TS№ 1    || OrderMagicNumber () == Mgc_SP02_TS№ 1    || OrderMagicNumber () == Mgc_SP03_TS№ 1 ||
                                   OrderMagicNumber () == Mgc_SP04_TS№ 1    || OrderMagicNumber () == Mgc_SP05_TS№ 1    || OrderMagicNumber () == Mgc_SP06_TS№ 1 ))
               {     
                  TS№ 1 _DS[pos]         = Profit_P + Swap_P + Commission;
                  Acc_Bal_Close[pos]   = AccountBalance ();
                  Str_Stop_Loss        = StringSubstr (comment, StringLen (comment)-digit_string,digit_string);
                  Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt);
               }

             if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && 
                                 ( OrderMagicNumber () == Mgc_Src_LP_TS№ 2 || OrderMagicNumber () == Mgc_Src_SP_TS№ 2 || 
                                   OrderMagicNumber () == Mgc_LP01_TS№ 2    || OrderMagicNumber () == Mgc_LP02_TS№ 2    || OrderMagicNumber () == Mgc_LP03_TS№ 2 || 
                                   OrderMagicNumber () == Mgc_LP04_TS№ 2    || OrderMagicNumber () == Mgc_LP05_TS№ 2    || OrderMagicNumber () == Mgc_LP06_TS№ 2 ||
                                   OrderMagicNumber () == Mgc_SP01_TS№ 2    || OrderMagicNumber () == Mgc_SP02_TS№ 2    || OrderMagicNumber () == Mgc_SP03_TS№ 2 ||
                                   OrderMagicNumber () == Mgc_SP04_TS№ 2    || OrderMagicNumber () == Mgc_SP05_TS№ 2    || OrderMagicNumber () == Mgc_SP06_TS№ 2 ))
               {  
                  TS№ 2 _TA[pos]         = Profit_P + Swap_P + Commission;
                  Acc_Bal_Close[pos]   = AccountBalance ();
                  Str_Stop_Loss        = StringSubstr (comment, StringLen (comment)-digit_string,digit_string);
                  Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt);
               }

             if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && 
                                 ( OrderMagicNumber () == Mgc_Src_LP_TS№ 3 || OrderMagicNumber () == Mgc_Src_SP_TS№ 3 || 
                                   OrderMagicNumber () == Mgc_LP01_TS№ 3    || OrderMagicNumber () == Mgc_LP02_TS№ 3    || OrderMagicNumber () == Mgc_LP03_TS№ 3 || 
                                   OrderMagicNumber () == Mgc_LP04_TS№ 3    || OrderMagicNumber () == Mgc_LP05_TS№ 3    || OrderMagicNumber () == Mgc_LP06_TS№ 3 ||
                                   OrderMagicNumber () == Mgc_SP01_TS№ 3    || OrderMagicNumber () == Mgc_SP02_TS№ 3    || OrderMagicNumber () == Mgc_SP03_TS№ 3 ||
                                   OrderMagicNumber () == Mgc_SP04_TS№ 3    || OrderMagicNumber () == Mgc_SP05_TS№ 3    || OrderMagicNumber () == Mgc_SP06_TS№ 3 ))
               {  
                  TS№ 3 _SBH[pos]        = Profit_P + Swap_P + Commission;
                  Acc_Bal_Close[pos]   = AccountBalance ();
                  Str_Stop_Loss        = StringSubstr (comment, StringLen (comment)-digit_string,digit_string);
                  Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt);
               }
                  
             if ( OrderType () == OP_BUY)   {  Type_Pos = "buy" ;   }
             if ( OrderType () == OP_SELL)  {  Type_Pos = "sell" ;  }
                  
             if ( OrderType () < 2 )
               {  
                   FileWrite (handle, TimeToStr ( OrderCloseTime (),TIME_DATE|TIME_MINUTES)+ "," + Symbol ()+ "," +Type_Pos+ ","
                                                                                           
                                  + DoubleToStr ( OrderLots (), 2 )+ "," + DoubleToStr (Acc_Bal_Close[pos], 2 )+ "," + DoubleToStr (Price_Stop_Loss[pos], 2 )+ ","
                                       
                                  + DoubleToStr (Profit_P+Swap_P+Commission, 2 )+ "," + DoubleToStr (TS№ 1 _DS[pos], 2 )+ "," + DoubleToStr (TS№ 2 _TA[pos], 2 )+ "," + DoubleToStr (TS№ 3 _SBH[pos], 2 ));  }
      }   FileClose (handle); // 2\
   } //1
}
Lütfen sorunu çözmeme yardım edin.
 

Başlatma sırasında para yönetimi işlevini çağırmaya çalıştım:

 int init()
  {

   ...
   
   if (! GlobalVariableCheck ( "fxprop_lot" ))
      {
       //--- ВЫЗОВ ФУНКЦИИ УПРАВЛЕНИЯ КАПИТАЛОМ ----------------------------------------//
         if (Money_Management_OnOff == TRUE)
            {  
               MM_FxProp(Delta,Start_Lot,Start_Deposit,Step_Lot,Stop_Trade, Symbol ());
               Lots = NormalizeDouble ( GlobalVariableGet ( "fxprop_lot" ), 2 );
            }
         else   Lots = 0.1 ;
      }

   return ( 0 );
  }
Ama bu sorunu çözmüyor...