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

 
Alexey Viktorov:

Und dann verwenden Sie immer wieder die gleiche Formulierung.


))) Bei zwei Objekten, einem älteren und einem jüngeren, benötige ich den Punktwert des jüngeren (näheren) Objekts und erhalte den Punktwert des älteren (entfernteren) Objekts im Kommentar. Und warum? Wenn die vorherige, auskommentierte Schleife das am weitesten entfernte Objekt zurückgegeben hat, muss die aktuelle Schleife das am nächsten liegende zurückgeben - die vorletzte Schleife gibt das vorletzte zurück. Ich vermisse hier etwas.
 
PolarSeaman:
))) Bei zwei Objekten, einem älteren und einem jüngeren, benötige ich den Punktwert des jüngeren (näheren) Objekts und erhalte den Punktwert des älteren (entfernteren) Objekts im Kommentar. Und warum? Wenn die vorherige, auskommentierte Schleife das am weitesten entfernte Objekt zurückgegeben hat, muss die aktuelle Schleife das am nächsten liegende zurückgeben - die vorletzte Schleife gibt das vorletzte zurück. Ich vermisse hier etwas.

Erstens, und zweitens - um Objekte in der Schleife nach Zeit auszuwählen, müssen Sie zwei Zeiten vergleichen - das vorherige Objekt und das aktuelle. Wenn die aktuelle Zeit länger ist, wird sie in einer Variablen gespeichert, die beim nächsten Durchlauf der Schleife überprüft wird. Am Ende der Schleife enthält die Variable das zuletzt erstellte Objekt.

 
YanSay:

Ich habe es versucht, es funktioniert nicht, ich muss etwas falsch machen.

Der gröbste Fehler ist hier die Angabe des Wertes 100 anstelle von ticket im Argument der Funktion OrderDelete().

Der nächste Fehler ist nicht so grob, aber er hängt damit zusammen, dass der berechnete Wert des Stop-Loss anstelle seines tatsächlichen Wertes geprüft wird.

Auch die Auftragsart wird nicht geprüft. Was ist, wenn wir einen Marktauftrag gewählt haben? Wie kann ich sie löschen? Das Auftragssymbol wurde nicht geprüft.

Unter Berücksichtigung dieser Fehler erhalten wir den Code für die Löschung des schwebenden Auftrags, wenn der Kurs seinen Stop Loss erreicht:

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
Auch in Ihrem Code wird der Stop-Loss sofort nach dem Öffnen einer Order überprüft. Es scheint, dass dieser Code nach der Eröffnung eines schwebenden Auftrags nicht mehr ausgeführt wird. Das heißt, Sie müssen die Ausführungszweige trennen. Der eine ist für die Festlegung der Reihenfolge zuständig, der andere für die Begleitung der Reihenfolge.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

Hallo meine Damen und Herren!

Bitte sagen Sie mir, wie ich die Tastenkombinationen, z. B. Strg+1, erfassen kann. Ich weiß, wie man eine Taste auf der Tastatur drückt.

Aber ich brauche eine Kombination in mt4 - wie man es macht!

 
Игорь:

Hallo meine Damen und Herren!

Können Sie mir sagen, wie ich die Tastenkombinationen wie Strg+1 erfassen kann? Ich weiß, wie man eine Taste auf der Tastatur drückt.

Ich brauche eine Kombination von Mt4 - wie geht das?

Das Ereignis OnChartEvent, analysiert die Parameter lparam und sparam, da das Drücken von Ctrl+1 zwei Ereignisse darstellt.

 
Ihor Herasko:

OnChartEvent-Ereignis, analysieren Sie die Parameter lparam und sparam, da das Drücken der Taste Strg+1 zwei Ereignisse darstellt.

Nein, es funktioniert nicht, ich habe es ausprobiert!!!

Es wird nur die Strg-Taste angezeigt und alle anderen Plus 1's und Buchstaben funktionieren nicht!!!

 
Игорь:

Nein, es funktioniert nicht, ich habe es ausprobiert!!!

Es zeigt nur kntrl press an und alle anderen Plus 1's und Buchstaben funktionieren nicht!!!

Ich schrieb:

das Drücken von Strg+1 sind zwei Ereignisse

Fangen Sie zwei Ereignisse ein und analysieren Sie sie:

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

Dies ist eine Strg+1-Taste.

 
Ihor Herasko:

Ich schrieb:

Fangen Sie zwei Ereignisse ein und analysieren Sie sie:

Dies ist eine Strg+1-Taste.

Hier habe ich nur countercl oder 1 und kein Ereignis auf der anderen oder zeigen Sie Ihren Code!

Nach dem Drücken von ctrl keine weiteren Ereignisse, bis Sie ctrl loslassen!

Ich habe den Fehler gefunden, danke!

 
Die Duplikate wurden gelöscht.
 
Vitaly Muzichenko:

Mit einem Profil? =)

:)

Grund der Beschwerde: