[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 521

 
Roger:

Wie würde ich das überprüfen?

Ich danke Ihnen.

Ist es möglich, die MaxEquity-Einstellung zum Beispiel 500 Mal zu verwenden, ohne den EA neu zu starten?

Wenn ich z. B. 500 in den Zähler schreibe, sieht das folgendermaßen aus: Angenommen, das Anfangskapital beträgt 10 000,

Nach Aufstockung des Anfangskapitals von 10.000 (durch Angabe in den Einstellungen) werden große Defizite geschlossen.

Es wird (zum Beispiel) 500 Mal durchgeführt (es ist ohnehin unmöglich, das ursprüngliche Eigenkapital 500 Mal zu multiplizieren).

Das ist der Unterschied, der sich bei Ihrer Version herausstellen wird - dass nach Erhöhungen von 10 000 auf das ursprüngliche Eigenkapital = 10 000 -

Der EA muss nicht neu gestartet werden, und der Zyklus wird fortgesetzt - zu 20 000 werden weitere 10 000 hinzugefügt, zu 30 000 + 10 000 und so weiter 500 Mal (zum Beispiel). Quelle:

und nach jedem Inkrement = 10 000, wird der Verlustauftrag mit dem größten Minus (oder mehrere Aufträge - in den Einstellungen festzulegen) geschlossen ?

 
alex12:

Ich danke Ihnen.

Ist es möglich, die MaxEquity-Einstellung zum Beispiel 500 Mal zu verwenden, ohne den EA neu zu starten?

Wenn ich zum Beispiel 500 in den Zähler schreibe, funktioniert das so: Nehmen wir an, das Anfangskapital beträgt 10 000,

Nach Aufstockung des Anfangskapitals von 10.000 (durch Angabe in den Einstellungen) schließen sich die großen Nachteile.

Auf die gleiche Weise, sagen wir zum Beispiel 500-mal (es ist ja unmöglich, das ursprüngliche Kapital 500-mal zu multiplizieren).

Mit anderen Worten, die Differenz wird in Ihrer Version erscheinen: nach Hinzufügung von 10 000 zum ursprünglichen Eigenkapital = 10 000.

Der Expert Advisor muss nicht neu gestartet werden, und der Zyklus wird fortgesetzt - zu 20 000 werden 10 000 hinzugefügt, zu 30 000 + 10 000 und so weiter (zum Beispiel) 500 Mal. Zum Beispiel:

Und nach jedem Inkrement, das 10 000 entspricht, wird der Verlustauftrag mit dem größten Verlust geschlossen (oder mehrere Verlustaufträge, je nach Einstellung)?


Ein Neustart ist nicht erforderlich. Sie müssen die ursprünglichen Eigenkapitaldaten nach dem Schließen der Positionen aktualisieren und warten, bis sich das Eigenkapital aus dem neuen ursprünglichen Eigenkapital erhöht.
 
artmedia70:
Ein Neustart ist nicht erforderlich. Sie müssen die ursprünglichen Eigenkapitaldaten nach dem Schließen der Positionen aktualisieren und warten, bis sich das Eigenkapital aus dem neuen ursprünglichen Eigenkapital erhöht.
Aber soweit ich weiß, wird das alles im Programmiercode erledigt. Ich habe keine Programmierkenntnisse)
 
alex12:
Aber so wie ich das verstehe, wird das alles im Programmiercode gemacht. Ich habe nicht die Macht zu programmieren.)
Natürlich wissen Sie das. Alles, was wir brauchen, ist eine Funktion, die das Eigenkapital kontinuierlich überwacht und einen Befehl zum Schließen unrentabler Positionen sendet, wenn der angegebene Wert überschritten wird. Nachdem alle Positionen erfolgreich geschlossen wurden, müssen wir den neuen Aktienwert aufzeichnen und weiter verfolgen.
 
artmedia70:
Natürlich. Es gibt nur eine Funktion, die das Eigenkapital kontinuierlich überwacht und einen Befehl zum Schließen unrentabler Positionen sendet, wenn der angegebene Wert überschritten wird. Nachdem alle Positionen erfolgreich geschlossen wurden, muss der neue Eigenkapitalstatus erfasst und weiter überwacht werden.
Ich danke Ihnen.
 
tol64:

Können Sie mir sagen, was das Problem sein könnte?


Ich gehe davon aus, dass meine Frage nicht genügend Informationen enthält, um mir zu helfen). Ich werde meine Frage vervollständigen. Nachfolgend stelle ich eine Struktur mit den Hauptfunktionen meines Expert Advisors zur Verfügung. Vielleicht wird dadurch das von mir geschilderte Problem deutlich.

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

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;
      }
}

Im Moment muss ich den EA jedes Mal neu kompilieren, nachdem ich die Geldmanagementfunktion in den EA-Parametern aktiviert/deaktiviert habe, damit der Bericht korrekt erstellt wird.

P.S. Vielleicht hat es etwas mit der globalen Variable terminal fxprop_lot zu tun?

 
tol64:


Ich gehe davon aus, dass meine Frage nicht genügend Informationen enthält, um mir zu helfen). Ich werde meine Frage vervollständigen. Im Folgenden stelle ich die Struktur mit den grundlegenden Funktionen meines EA vor. Vielleicht wird es auf diese Weise möglich sein, das von mir hervorgehobene Problem zu identifizieren.

Im Moment muss ich den EA jedes Mal neu kompilieren, nachdem ich die Geldmanagementfunktion in den EA-Parametern aktiviert/deaktiviert habe, damit der Bericht korrekt erstellt wird.

P.S. Vielleicht hat es mit der globalen Variable terminalfxprop_lot zu tun?


Wenn Sie meinen, dass das ausreicht, dann ist es wohl so. Wir müssen einfach auf eine Antwort warten. Ich habe keins.
 
Vinin:

Wenn Sie glauben, dass das ausreicht, dann ja. Ich warte auf eine Antwort. Ich habe keins.


Meine bisherigen Erfahrungen erlauben es mir leider nicht zu beurteilen, ob die bereitgestellten Informationen ausreichen, um ein bestimmtes Problem zu lösen. Ich tue das nicht absichtlich und entschuldige mich, wenn Sie es tun). Die Sache ist, meiner Meinung nach, der wichtigste Punkt in das Problem, das ich hervorgehoben ist, dass alles richtig funktioniert, wenn die Neukompilierung der Expert Advisor. Aber das liegt wiederum an meiner unausgereiften Erfahrung. Bitte teilen Sie uns mit, welche Informationen wir benötigen, um dieses Problem zu lösen. Die Geldverwaltungsfunktion oder die Funktion zur Erstellung von Berichten taucht offensichtlich in dem Problem auf. Deshalb werde ich Ihnen die Funktion der Geldverwaltung geben:

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);
}
Und im nächsten Beitrag die Funktion zur Berichterstellung...
 
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
}
Bitte helfen Sie bei der Lösung des Problems.
 

Ich habe versucht, die Kapitalverwaltungsfunktion während der Initialisierung aufzurufen:

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);
  }
Aber das löst das Problem nicht...
Grund der Beschwerde: