[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 236

 
Roman.:

Die rechte Taste der Maus klicken Sie auf graue Farbe eines Indikators im Terminal, dann im Menü - "ändern" klicken Sie schon linke Maus, dann kompilieren Sie im Meta-Editor, dann starten Sie das Terminal neu und leben Sie glücklich...:-)


Das hat nicht geholfen. Alles erledigt, das Terminal neu gestartet, leider.

Der Quellcode scheint nichts damit zu tun zu haben, das Programm gehört mir.

Aus irgendeinem Grund geht es nur um den Namen, ich habe den ganzen Text gelöscht, einen einfachen Unsinn geladen, der stattdessen funktioniert, neu kompiliert, gleiches Ergebnis.

Wie auch immer, wenn niemand auf so etwas gestoßen ist, dann scheiß drauf. Ich werde diesen Namen vergessen, kein Problem.

 
ramses:


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

if (OrdersTotal()>0)
{ <-- diese Klammer ist überflüssig.

 
DhP:

Die Marge für einen 1-Lot-Auftrag ist gleich:

Von dort aus können Sie es herausfinden.

Und wir müssen auch prüfen, ob genügend Mittel zur Verfügung stehen:

Wo sind die Werte von AccountFreeMarginMode()? Das kann 0, 1, 2, 3, 4 sein (glaube ich).


Hier ist meine Funktion zur Bestimmung der Losgröße, aber ich habe verstanden, dass ich den AccountFreeMarginMode()nicht berücksichtigt habe

double GetLots() {
   double lot;
   double Step   =MarketInfo(Symbol(),MODE_LOTSTEP);
   if(MoneyManagement) {
      RefreshRates();                              // Обновление данных
      double
         TickValue = MarketInfo(Symbol(),MODE_TICKVALUE),
         Min_Lot=MarketInfo(Symbol(),MODE_MINLOT),           // Миним. колич. лотов 
         Max_Lot=MathFloor(MarketInfo(Symbol(),MODE_MAXLOT)),// Макс. колич. лотов 
         Free   =GetFreeMargin()-NotUsedPart,                // Свободн средства
         One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);   // Стоимость 1 лота
      //Print("Step=",Step);
      //GetFreeMargin();
      stimul = LossPercent*0.01;
      if (Free > MaxUsedPart) Free = MaxUsedPart;
      double free = AccountBalance() - AccountMargin();
      Print("free = ",free);
      if (Free > free) Free = free;
      lot = stimul*Free/(StopLoss*Cor*TickValue);
      if (lot >= 0) {
         if (stimul == 3*LossPercent*0.01) {
            Print("После убытка ЛОТ в пределах % утроенного риска от SL и равен ",MathFloor(lot/Step)*Step," или ",100*stimul,"% баланса");
         } else {
            if (stimul != LossPercent*0.01) {
               Print("После убытка ЛОТ в пределах % максимального риска от SL и равен ",MathFloor(lot/Step)*Step," или ",100*stimul,"% баланса");
             } else {
               Print("ЛОТ в пределах заданного % риска от SL и равен ",MathFloor(lot/Step)*Step," или ",100*stimul,"% баланса");
             }
         }

      }
      if (lot > Max_Lot && lot >= 0) {
         lot = Max_Lot;
         Print("ЛОТ ограничен максимумом и равен ",MathFloor(lot/Step)*Step);
      }
      //Print(lot,"*",One_Lot,"=",lot*One_Lot," > ",Free);
      //Print("AccountFreeMarginMode=",AccountFreeMarginMode()," AccountFreeMargin=",AccountFreeMargin()," Free=",Free);
      if (lot*One_Lot > stimul*Free && lot >= 0) {
         lot =stimul*Free/One_Lot;
         Print("ЛОТ ограничен свободными средствами и равен ",MathFloor(lot/Step)*Step);
      }
      int level=AccountStopoutLevel(); ///// ТОЛЬКО ЕСЛИ ВЫРАЖЕН В ПРОЦЕНТАХ!!!
      if (AccountStopoutMode() == 0 && lot >= 0) {
         if (lot > Free/(level*One_Lot/100.0 + StopLoss*Cor*TickValue)) {
            lot = Free/(level*One_Lot/100.0 + StopLoss*Cor*TickValue);
            Print("ЛОТ ограничен уровнем StopOut и равен ",MathFloor(lot/Step)*Step," или ",MathRound(100*lot*StopLoss*Cor*TickValue/Free),"% баланса");
         }
      }   
      if (lot < Min_Lot && lot >= 0) {
         if (2*lot > Min_Lot) {
            lot=Min_Lot;               // Не меньше минимальн
            Print("ЛОТ ограничен минимумом и равен ",MathFloor(lot/Step)*Step);
         } else lot=0;
      }
   } else lot=Lots;

   //if (Variant == 2)lot=0.5*lot;
   //if (Variant == 0)lot=0.2*lot;

   if (Accuracy == 0) 
      lot = MathFloor(lot/Step)*Step;
   else lot = NormalizeDouble(lot,Accuracy); 
   //Alert("lot=",lot);
   if (lot < 0) lot = 0;
   return(lot);
}
 

Können Sie mir sagen, ob eine weitere for-Schleife in eine for-Schleife eingefügt werden kann?

Geben Sie mir ein kleines Beispiel, wenn möglich

 
CLAIN:

Können Sie mir sagen, ob eine weitere for-Schleife in eine for-Schleife eingefügt werden kann?

Geben Sie mir ein kleines Beispiel, wenn Sie können

können Sie

for (int i = 0; i < 10; i++)
{
   for (int j = 0; j < 10; j++)
   {
      Print("i = " + i + ", j = " + j);
   }
}
 
CLAIN:

Können Sie mir sagen, ob eine weitere for-Schleife in eine for-Schleife eingefügt werden kann?

Geben Sie ein kleines Beispiel, wenn Sie können

können Sie.

         for (int j = i-1; j >= i-trend_bars; j--)
            if (Close[j] - Open[i] > ternd_level*body) {
               ObjectDelete("TrendUp");
               ObjectCreate("TrendUp",OBJ_ARROW,0,Time[i],Low[i]-50*Point);
               ObjectSet("TrendUp",OBJPROP_ARROWCODE,SYMBOL_ARROWUP);
               ObjectSet("TrendUp",OBJPROP_COLOR,Red);
               if (!Is_Pattern(i)) {
                  ObjectSet("TrendUp",OBJPROP_COLOR,Green);
                  //========процедура сдвига всего 2-x мерного массива buf на 1 индекс========
                  ArraySetAsSeries(Pattern,true); //"переворачиваем" массив
                  ArrayCopy(Pattern, Pattern, ArrayRange(Pattern,1), 0);
                  ArraySetAsSeries(Pattern,false);//возвращаем в исходное значение
                  for (int k = 0; k < pattern_bars; k++) {
                     Pattern[0][k] = pattern[k];
                  }
                  for (int m = 0; m <= size; m++) {
                     if (Pattern[m][0] == 0 && Pattern[m][1] == 0 && Pattern[m][2] == 0 && Pattern[m][3] == 0) {
                        break;
                     }   
                  }
                  pattern_count = m;
                  if (prn) 
                     if (MathMod(m, 100) == 0) Print("В работе ",m," паттернов на ",Bars," барах");
                  if (m > 0.1*Bars) {
                     for (int l = MathRound(0.1*Bars); l <= size; l++) {
                        for (int n = 0; n < 4; n++) {
                           Pattern[l][n] = 0;
                        }
                     }
                  }
               }
               lst_patt = i;
               break;
            }
 
Hallo, ich brauche ein wenig Hilfe))

Vielleicht finden Sie einen Expert Advisor in der Code-Ablage:

Ich brauche ihn, um Vorlagen für alle geöffneten Charts (die zum Zeitpunkt der Aktualisierung (wichtig! Nicht zum Zeitpunkt des Starts des EA) an sie angehängt sind) in einem bestimmten Intervall (z. B. alle 15 Minuten) zu aktualisieren.

Vielen Dank für jede Hilfe im Voraus)
 
Hm... Ich habe so etwas einmal auf ein Dutzend Karten gelegt und wusste nicht, wie ich es wieder loswerden sollte :))
 

Nun, ich habe nur 4 Diagramme, nur Vorlagen sind von Excel alle 10 Minuten generiert, dann füge ich sie manuell. aber es ist anstrengend, es manuell zu tun))

Können Sie mir bitte den Namen dieses Experten nennen?

 
w-knot:

Nun, ich habe nur 4 Diagramme, nur Vorlagen sind von Excel alle 10 Minuten generiert, dann füge ich sie manuell. aber es ist anstrengend, es manuell zu tun))

Können Sie mir bitte den Namen dieses Experten nennen?

Das ist Ihre eigene krude Selbstdarstellung. Wenn Sie es nicht programmieren, bestellen Sie es bei jemand anderem.
Grund der Beschwerde: