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

 
VladimirR:

Auch diese Option funktioniert nicht.



Ich frage mich, wonach Sie suchen. Es gibt noch weitere Möglichkeiten, die maximale Fläche zu ermitteln. Zum Beispiel analytisch
 
Vinin:

Ich frage mich, warum die Zählerwerte in der Schleife zweimal geändert werden müssen. Und aus irgendeinem Grund gibt es keine (vorläufige) Zuordnung von S2. Dieser Wert ist zu Beginn 0, und erst bei der zweiten Iteration (genauer gesagt bei der dritten) erfolgt ein echter Wertvergleich (je nachdem, wie man von Null oder von Eins aus zählt).
Es gibt keine Zuweisung, da die Aufzählung mit dem Mindestwert der Fläche beginnt, der streng positiv ist, so dass 0 ausreicht. Wo ändern sich die Zählerstände zum zweiten Mal?
 
Vinin:

Ich frage mich auch, wonach Sie suchen. Es gibt noch weitere Möglichkeiten, die maximale Fläche zu ermitteln. Wie der analytische.
Das ist überhaupt nicht das Problem. Es handelt sich um eine einfache Aufgabe, die als Beispiel für die Funktionsweise des Unterbrechungsoperators dient. Ich muss wissen, warum man nicht for(int i=1, j=499; i<500; i++,j--) schreiben kann, wenn man die Variablen i,j nicht vor der Schleife festlegt, um später korrekte Programme zu schreiben!
 
VladimirR:
Das ist überhaupt nicht das Problem. Dies ist eine einfache Aufgabe, die als Beispiel dafür dient, wie der Unterbrechungsoperator funktioniert. Ich muss wissen, warum man nicht for(int i=1, j=499; i<500; i++,j--) schreiben kann, wenn man die Variablen i,j nicht vor der Schleife festlegt, um später die richtigen Programme zu schreiben!

Es handelt sich wahrscheinlich um einen Fehler im Compiler.

So lässt es sich nicht kompilieren:

for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

Und so wird es kompiliert:

int i, j;
for( i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

Und so wird es kompiliert:

int i=1, j=499;
for( ; i<500; i++,j--) //последовательный перебор значений площади
 

Hallo zusammen!!!

Bitte helfen Sie mir, die RiskReward-Nummer aus dem Indikator herauszubekommen. Ich kann sie nicht in meinen Expert Advisor einfügen.

Dateien:
 
demlin:

Hallo zusammen!!!

Bitte helfen Sie mir, die RiskReward-Nummer aus dem Indikator herauszubekommen. Ich kann sie nicht in meinen Expert Advisor einfügen.


Wo ist der Quellcode?
 

Leute, warum ist es so schwer, mir zu antworten, oder wollt ihr es einfach nicht? Du sortierst hier so einen Mist aus, bist aber zu faul, einen Teil des Codes mitzuschreiben. Ich werde versuchen, Sie noch einmal zu bitten, wenn Sie mir nicht helfen, werde ich in Kurse gehen, ich bin es leid, Sie hier anzuflehen.


Noch einmal: Nachdem der EA mit dem ersten Tick an den Chart angehängt wurde, legt er den Ask-Kurs fest. Dann, während des Handels, sobald der Kurs um, sagen wir, 10% steigt (es ist klar, dass das nicht sein kann, es ist bildlich), sollte der EA einen Händler mit der Nachricht "Der Kurs ist um 10% gestiegen" benachrichtigen.

 
demlin:

Hallo zusammen!!!

Bitte helfen Sie mir, die RiskReward-Nummer aus dem Indikator herauszubekommen. Ich kann es nicht in meinen Expert Advisor einfügen.

Gehen Sie alle Objekte im Diagramm durch, suchen Sie ein Objekt namens lbl, entnehmen Sie daraus die Zeichenkette FXRanger: Risk:Reward=x.xxx, analysieren Sie sie und wandeln Sie x.xxx in Double um.
 

Hilfe beim Öffnen von Aufträgen mit SL, und wenn es zwei entgegengesetzte Aufträge gibt, wird für den zweiten Auftrag SL.... entfernt, aber das ist nicht notwendig

Danke

void Trailing()
{
//-----
  double Up = iCustom(NULL,0,"NLO",TrailPeriod,0,1);
  double Dn = iCustom(NULL,0,"NLO",TrailPeriod,1,1);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && Up > OrderOpenPrice()
      && OrderStopLoss() != Up && (OrderStopLoss() == 0 || Up > OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Up,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && Dn < OrderOpenPrice()
      && OrderStopLoss() != Dn && (OrderStopLoss() == 0 || Dn < OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Dn,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}
 

Hallo. Wieder einmal kann ich das Beispiel aus dem Tutorium nicht lösen.

Aufgabe 17. Auf dem ersten Hof gibt es 1.000 Schafe. Jeden Tag steigt die Zahl der Schafe auf dem ersten Hof um 1 %. An dem Tag, an dem die Zahl der Schafe auf dem ersten Betrieb 50.000 erreicht, werden 10 % der Schafe auf den zweiten Betrieb übertragen. Wie lange wird es dauern, bis die Zahl der Schafe auf dem zweiten Betrieb 35.000 erreicht hat? (Es wird davon ausgegangen, dass der Monat 30 Arbeitstage hat).

//--------------------------------------------------------------------
// othersheep.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                               // Специальная ф-ия start()
  {
//--------------------------------------------------------------------
   int
   day,                                   // Текущий день месяца
   Mons;                                  // Искомое количест. месяцев
   double
   One_Farm    =1000.0,                   // Количество на 1 ферме
   Perc_day    =1,                        // Ежедневный подъём, %
   One_Farm_max=50000.0,                  // Пороговое значение
   Perc_exit   =10,                       // Разовый вывод, %
   Purpose     =35000.0,                  // Необх. колич. на 2 ферме
   Two_Farm;                              // Количество на 2 ферме
//--------------------------------------------------------------------
   while(Two_Farm < Purpose)              // До достижения цели
     {                                    // Начало тела внешн. цикла
      //--------------------------------------------------------------
      for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 
        {
         One_Farm=One_Farm*(1+Perc_day/100);//Накопл. на 1 ферме
         if (One_Farm < One_Farm_max)     // Если меньше допустимого,.
            continue;                     // .. то овец не переводим
         Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Накопл. на 2 ферме
         One_Farm=One_Farm*(1-Perc_exit/100);     //Остаток на 1 ферме
        }
      //--------------------------------------------------------------
      if (Two_Farm>=Purpose)              // Если цель достигнута,..
         continue;                        // .. то месяцы не считаем
      Mons++;                             // Считаем месяцы
     }                                    // Конец тела внешнего цикла
//--------------------------------------------------------------------
   Alert("Цель будет достигнута через ",Mons," мес. и ",day," дн.");
   return;                                // Выход из функции start()
  }
//-------------------------------------------------------------------

In diesem Beispiel wird der Ausgang aus der Schleife

 for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 

Der "zusätzliche Tag" wird immer hinzugefügt, d. h. ein Tag, für den keine Berechnung durchgeführt wird, wird hinzugefügt, aber da der Zyklus verschachtelt ist, bleibt der "zusätzliche Tag" bestehen.

jedes Mal, wenn die Kontrolle zu ihr zurückkehrt, werden die Tage erneut gezählt, so dass dies nicht unbedingt erforderlich ist. Aber wenn die Schleife verlassen wird

while(Two_Farm < Purpose)              // До достижения цели

der "zusätzliche Tag" bleibt. Infolgedessen wird die falsche Antwort gedruckt.

Können Sie mir sagen, ob meine Überlegungen richtig sind oder ob ich etwas falsch verstanden habe?