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

 
Entfernt Bars, fügte schwebende Aufträge in X Schritten von Preis, das einzige, was links ist, um geschlossene Aufträge sofort einzeln zu öffnen, anstatt zu warten, bis alle 4 Aufträge zu schließen und Lot-Berechnung in Abhängigkeit von % Eigenkapital, helfen Sie mir diese 2 Nuancen zu beheben
So sieht es jetzt aus:

//+------------------------------------------------------------------+
//| mo_bidir.mq4
//| Funktioniert am besten in einem Zeitrahmen von 5M
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010 - Monu Ogbe"

#define MAGIC 1234
#define IDENT "mo_bidir"

extern double lots = 1;
extern double stop_loss = 76; //
extern double take_profit = 750; //
extern int steps = 5; // Schritt der anstehenden Bestellung

int start(){

wenn (OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELL, lots,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
OrderSend(Symbol(), OP_BUYSTOP, 0.5*Lots,Ask+steps*Point, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELLSTOP, 0.5*Lots,Bid-steps*Point, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
}
zurück(0);
}
Dateien:
 
belck:
Auf der Suche nach einem Code Breakeven auf die Geschichte. haben kann. teilen.
Ich habe ein Breakeven-Code, aber es funktioniert von offenen Aufträgen.
Ich habe einen EA, der die verlustbringende an der gegenüberliegenden Signal schließt, und öffnet auf ein Signal. und jetzt müssen Sie diese Breakeven-Code zu erinnern, wie viel in Defizit und die Informationen weitergegeben, so dass die zweite, etc. Aufträge haben bereits auf dem Chart die Linie von Null Gewinn gesehen, unter Berücksichtigung der vergangenen Verluste. Der Expert Advisor verfügt nicht über einen Stop-Loss, d.h. die Schließung eines Verlustgeschäfts erfolgt nicht durch einen Stop-Loss.


Jedes Mal, wenn Sie sie auf den gewünschten Preis verschieben (Break-even mit einem Abschluss), und löschen Sie sie (die Linie) nicht, wenn Sie einen Auftrag schließen und den alten Preis im nächsten Auftrag sehen
 
belck:
Ich suche einen Code für den Break-Even in der Geschichte. Vielleicht hat jemand einen, bitte teilen.
Ich habe einen Breakeven-Code, aber er basiert auf offenen Aufträgen.
Ich habe einen gut funktionierenden Auftrag, wenn es einen Verlust bei einem Auftrag gibt, und er sollte sich öffnen, wenn der Auftrag den Break-even-Punkt erreicht. Die Aufträge haben bereits die Nulllinie auf der Gewinnlinie auf dem Chart gesehen, wobei die vorherigen Verluste berücksichtigt wurden. Der Expert Advisor verfügt nicht über einen Stop-Loss, d.h. ein Verlustgeschäft wird nicht durch einen Stop-Loss geschlossen.

Wenn ich richtig verstehe, ist ein Teil Ihrer Frage die Bilanzierung von Gesamtverlusten auf aufeinanderfolgenden Verlustgeschäften Ihres EA für einen weiteren Vergleich mit dem Gewinnniveau auf aktuellen Marktaufträgen, um die Break-even-Linie festzulegen?
 
FAQ:

Jedes Mal, wenn Sie ihn auf den gewünschten Preis (Break-even bei Börsenschluss) verschieben, und ihn (die Linie) nicht löschen, wenn Sie den Auftrag schließen und den alten Preis im nächsten Auftrag sehen

das ist nicht einfach.

Ich kann es nicht selbst umsetzen.

Ich möchte, dass die Linie bei Verlustgeschäften angezeigt wird, so dass ich schließen kann, wenn sie erreicht ist.

D.h. ich benötige eine Linie, die nur dann gezogen wird, wenn es Verlustaufträge gibt, aber diese Linie wird auf der Grundlage des Loses eines offenen Handels und der vorherigen Historie von Verlustgeschäften gezogen.
 
Roman.:
Wenn ich richtig verstehe, ist der Teil Ihrer Frage zu berücksichtigen, den Gesamtverlust der aufeinanderfolgenden Verlustgeschäfte Ihres EA und vergleichen Sie es mit dem Gewinnniveau der aktuellen Marktaufträge, um die Break-even-Linie zu setzen?

Ich habe keine Stop-Linien, d.h. keinen Stop-Loss und keinen Take-Profit.

Ich möchte die Preislinie sehen, zu der ich gehen muss, um das Geschäft so abzuschließen, dass sich die zuvor abgeschlossenen Aufträge überschneiden.

Ich benötige einen Block hinter dem Startblock, der Informationen zählt und an den Startblock übermittelt, und ich werde diese Informationen verwenden, um das Geschäft zu schließen, wenn es diese Preislinie erreicht.

 
Wenn Sie eine globale Variable benötigen, machen Sie sie zu einem globalen Terminal oder Diagrammobjekt - dann ist sie nur in diesem Diagramm sichtbar, schreiben Sie sie bei Bedarf in eine Datei, in die Registrierung oder direkt in den Speicher. Es gibt viele Möglichkeiten.
 
FAQ:
Wenn Sie eine globale Variable benötigen, machen Sie sie zu einem globalen Terminal oder Diagrammobjekt - dann ist sie nur in diesem Diagramm sichtbar, schreiben Sie sie bei Bedarf in eine Datei, in die Registrierung oder direkt in den Speicher. Es gibt viele Varianten.
Ist das Ihre Antwort an mich?
 
belck: Aber ich kann den Breakeven-Block nicht allein aus der Geschichte heraus schreiben.

Hier ist mein Code-Abschnitt - verantwortlich für die Bilanzierung des Gesamtverlustes von aufeinanderfolgenden Verlustgeschäften dieses speziellen EA (laut Magier). Ich habe es für meine Variante des Netzes Avalanche gemacht - Sie können es nach Ihren Bedürfnissen bearbeiten - der Code ist auskommentiert...

Globale Variablen

double Current_Loss, Sum_Loss;     // текущий и суммарный убыток
int start()    // -----------------------СТАРТ ЭКСПЕРТА---------------
{

//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;     
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 //Print("Iteration at History = ",  Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),
 //      " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
...
...
}// конец старт   

Nach diesem Code-Abschnitt durchlaufen Sie auch die offenen Aufträge dieses EAs und berechnen deren Gesamtgewinn. Dann vergleichen Sie diesen Wert mit der Variablen

Sum_Loss

und eine Entscheidung zu treffen.

 
belck:
Ich suche einen Code für den Break-Even in der Geschichte. Vielleicht hat jemand einen, bitte teilen.
Ich habe einen Breakeven-Code, aber er basiert auf offenen Aufträgen.
Ich habe einen gut funktionierenden Auftrag, wenn es einen Verlust bei einem Auftrag gibt, und er sollte sich öffnen, wenn der Auftrag den Break-even-Punkt erreicht. Die Aufträge haben bereits die Nulllinie auf der Gewinnlinie auf dem Chart gesehen, wobei die vorherigen Verluste berücksichtigt wurden. Der Expert Advisor verfügt nicht über einen Stop-Loss, d.h. die Schließung eines Verlustgeschäfts erfolgt nicht durch einen Stop-Loss.

Berechnen Sie den Gesamtgewinn aller geschlossenen Geschäfte und speichern Sie ihn in einer Variablen, zum Beispiel TotalCloseProfit. Und dann verwenden Sie den folgenden Code, ohne Grafiken oder andere Hilfsmittel:

if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}
 
utyff:


Ich habe einen Blick in das Protokoll geworfen.

Das scheint der Grund zu sein, aber ich weiß nicht, was das bedeutet. Kann das jemand erklären? Und wie kann man sie beheben?

Das ist kein Fehler. Fehler im Protokoll sind mit roten, nicht mit gelben Symbolen gekennzeichnet.