Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1946

 
Alexey Viktorov #:

Alle Indikatoren funktionieren im gleichen Thread. Dementsprechend verbraucht jeder Indikator einige CPU-Ressourcen. Setzen Sie 100500 Indikatoren mit denselben Parametern ein, und was wird mit dem Terminal passieren? Wenn 300 Gramm Kartoffeln ausreichen, um Sie in den nächsten 20 Minuten glücklich zu machen, werden Sie einen Sack voll davon auf den Schultern haben. Wie gefällt Ihnen das?

Ich verstehe. Vielen Dank für die Erklärung.
 

Können Sie mir sagen, ob ich irgendwo in kodobase ein Unterfenster für einen Indikator in diesem Stil gesehen habe?

Kann es nicht finden


 
makssub #:

Guten Tag. Ich habe über Vail gelesen. Ich kann weder addieren noch subtrahieren.
Ich kann nichts über Geldmanagement sagen, ich habe es nicht ausprobiert.
Ich habe die neueste Version beigefügt. Aber ich habe bereits alles für mich selbst durcheinander gebracht)
Order1(2) der Gewinn der ausgewählten Order
Order1(3) das Lot der ausgewählten Order

Ich konnte den Code nicht verstehen.

Ich werde versuchen, das zu erklären. Ich hoffe, Sie kennen die Tickets der benötigten Bestellungen, das macht die Sache sehr einfach. Die Bedingungen. Es gibt einen Gewinnauftrag mit einem Gewinn größer als Null, es gibt einen Verlustauftrag mit einem Gewinn kleiner als Null und größer als der Gewinn, und es gibt eine Bedingung für die teilweise Schließung eines Verlustauftrags.

Im Allgemeinen können Sie Aufträge, die anders ausgerichtet sind, ohne weiteres mit OrderCloseBy schließen. Der kleinere Verlustauftrag wird genauso geschlossen wie der kleinere Gewinnauftrag. Wir brauchen nur 2 Tickets.

Wir können es komplizierter machen und OrderProfit() (das ist Geld) und OrderLots() (das ist das Volumen in Lots) von beiden Aufträgen erhalten. Berechnen Sie das Verhältnis zwischen Gewinn und Verlust und schließen Sie den gewinnbringenden Auftrag und diesen Teil in Losen des Verlustauftrags. Bevor die Gewinne und Lots einer Order ermittelt werden können, muss eine OrderLots() vorausgewählt werden.

// ticket1 тикет прибыльного ордера, ticket2 убыточного

bool sel1=OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
double profit1=OrderProfit();
double  Lts1=OrderLots();
double price1=0; if(OrderType()==0)price1=Bid; else price1=Ask;

bool sel2=OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
double profit2=OrderProfit();                     // profit1 < profit2 можно условием впереди поставить
double  Lts2=OrderLots();
double price2=0; if(OrderType()==0)price2=Bid; else price2=Ask;

double ratio=fabs(profit1/profit2); // или если ratio<1, и берем модуль, у нас один профит меньше нуля
double lotsl=Lts2*ratio;

 Alert("Попытка закрыть прибыльный ордер тикет1 ",ticket1,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
 bool    Ans1=OrderClose(ticket1,Lts1,price1,2);      // Закрытие прибыльного ордера
         if(Ans1==true) // Получилось :)
         Alert("Закрыт ордер тикет1 ",ticket1,". профит1 ",profit1); 
else Alert(" Ошибка при закрытии ордера  тикет1",ticket1," Код ошибки ",GetLastError());

Alert("Попытка закрыть часть ордера тикет2 ",ticket2,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
bool     Ans2=OrderClose(ticket2,lotsl,price2,2);      // Закрытие убыточного ордера частично
         if(Ans2==true) // Получилось :)
         Alert("Закрыт частично ордер тикет2 ",ticket2,". профит2 ",profit2); 
else Alert(" Ошибка при закрытии ордера  тикет2",ticket2," Код ошибки ",GetLastError());

 

  
 


Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
Vitaly Muzichenko #:

Können Sie mir sagen, ob ich irgendwo in kodobase ein Unterfenster für einen Indikator in diesem Stil gesehen habe?

Ich kann es nicht finden.


Siehe Indikatoren von Scriptor

Scriptor
Scriptor
  • 2019.02.10
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin #:

Siehe Indikatoren des Scriptors.

Danke, ich habe es gefunden, aber es ist ein bisschen anders, nur in einer Zeile

 
Vitaly Muzichenko #:

Danke, ich habe es gefunden, aber es ist ein bisschen anders, es ist nur für eine Zeile.

Ich glaube, es gibt auch mehrere Reihen.

 
Artyom Trishkin #:

Ich glaube, da sind auch ein paar Zeilen drin.

Es gibt über 1500 Codes, ich muss sie leider übersehen haben.

 
Vitaly Muzichenko #:

Danke, ich habe es gefunden, aber es ist ein bisschen anders, nur in einer Zeile.

Vitaly, du überraschst mich. Alle diese Indikatoren beruhen auf dem Aufbau von DRAW_ARROW mit dem entsprechenden Code. In Ihrer Zeichnung sind die Quadrate der Code 167

      ObjectSetInteger(0, up_arrow, OBJPROP_ARROWCODE, 167);    // установим код стрелки 

Und das Niveau der Serie ist wie Artyoms Katze oder Katze wünscht. Die Angabe kann in ganzen Zahlen oder in Zehnteln erfolgen.

Fangen Sie an und fragen Sie nach, was nicht funktioniert.

 
Vitaly Muzichenko #:

Können Sie mir sagen, ob ich irgendwo in kodobase ein Unterfenster für einen Indikator in diesem Stil gesehen habe?

Kann es nicht finden


DRAW_ARROW ist nicht gut?

8 Puffer beim Zeichnen mit einer Farbe, 16 beim Zeichnen mit zwei Farben.

oder DRAW_COLOR_LINE mit dickeren Linien.

Der Sinn ist, dass die Linien immer auf der gleichen Ebene sind (erste 1 zweite 2 usw.), nur die Farbe ändert sich.

 
Alexey Viktorov #:

Vitaly, du überraschst mich. Alle diese Indikatoren basieren auf der Zeichnung DRAW_ARROW mit einem entsprechenden Code. In Ihrem Bild sind die Quadrate der Code 167

Und das Niveau der Reihe wird nach Artyoms Katze oder Katzenwunsch eingestellt. Die Angabe kann in ganzen Zahlen oder in Zehnteln erfolgen.

Fangen Sie an und fragen Sie nach, was nicht funktioniert.

Ich verstehe das Prinzip des Einrückens von unten nicht, so dass es in mehreren Zeilen gleich ist.

Das ist der Punkt, an dem ich nicht ansetzen kann

Grund der Beschwerde: