Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 115

 
gyfto:
Kann AccountNumber() aus der DLL gelesen werden und wie? Geben Sie mir wenigstens einen Hinweis, wo ich graben soll. Ich meine, ohne den Funktionswert an die DLL zu übergeben, d. h. von der dynamischen Bibliothek selbst.
Aus der Kopfzeile des MT4-Fensters, kann aber leicht ersetzt werden. Ich muss mir überlegen, wie ich die Substitution nachvollziehen kann.
 
pako:

Ich verstehe nicht, warum es so kompliziert sein muss.
Würde das die Sache nicht einfacher machen?

Äh... Wenn ich nur selbst entscheiden könnte, wie ich es mache... Wenn mein Kunde die Take-Points aller Positionen neu berechnen muss (außerdem können die nächsten Mittelwertpositionen mit noch größeren Lots eröffnet werden, und der Gesamt-Take wird erneut berechnet) und genau durch Stop-Orders schließt, anstatt durch den Expert Advisor, dann sollten wir das tun.
 
Zhunko:
Aus der Kopfzeile des MT4-Fensters, die jedoch leicht manipuliert werden kann. Wir müssen uns überlegen, wie wir das Spoofing aufspüren können.

Aber bei einer Sache bin ich mir ziemlich sicher: Es gibt in Windows keinen Hinweis darauf, wann das letzte Mal auf den Fensterpuffer zugegriffen wurde.
 
gyfto:
Aber bei einer Sache bin ich mir ziemlich sicher: Es gibt in Windows keinen Hinweis darauf, wann das letzte Mal auf den Fensterpuffer zugegriffen wurde.
Wir müssen die Nachrichten abfangen.
 

Ich brauche Hilfe, ich werde nicht schlau daraus.

Die Idee ist, dass die Eule den Trend ausfüllt, wenn sich das Signal wiederholt. Die Frage ist also, wie bringe ich der Bruchfunktion bei, das erste Signal zu überspringen?

Zum Beispiel, es gab ein Kaufsignal, die Eule kauft und beim nächsten Tick wird die Funktion des Skalierens in aufgerufen (weil es eine offene Order gibt), das Einstiegssignal ist immer noch in Kraft und die Funktion füllt erfolgreich aus (was falsch ist).

Die Funktion selbst wird nur aufgerufen, wenn ein offener Auftrag vorliegt.

Ich muss nur den aktuellen Takt auslassen. Wie kann man es in MQL implementieren?

 
MarkTrade:

Ich brauche Hilfe, ich werde nicht schlau daraus.

Die Idee ist, dass die Eule den Trend ausfüllt, wenn sich das Signal wiederholt. Die Frage ist also, wie bringe ich der Bruchfunktion bei, das erste Signal zu überspringen?

Zum Beispiel, es gab ein Kaufsignal, die Eule kauft und beim nächsten Tick wird die Funktion des Skalierens in aufgerufen (weil es eine offene Order gibt), das Einstiegssignal ist immer noch in Kraft und die Funktion füllt erfolgreich aus (was falsch ist).

Die Funktion selbst wird nur aufgerufen, wenn ein offener Auftrag vorliegt.

Ich muss nur den aktuellen Takt auslassen. Wie kann man es in MQL implementieren?

Was zum Teufel rauchen Sie da? Von welchen Plantagen beziehen Sie die Zigaretten? Eule ging in den Laden und kaufte ein paar... Und dann kam so ein Funk daher und machte alles kaputt.

Schade...

 

Verwenden Sie die Funktion, die Ihnen die Anzahl der Bars nach der letzten Positionseröffnung zurückgibt:

//+----------------------------------------------------------------------------+
int BarsAfterOpenLastPos(int op, int mn) {
   datetime t=0;
   int      i, k=OrdersTotal();

   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS)) {
         if (OrderSymbol()!=Symbol())  continue;
         if (OrderType()!=op)          continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
   return((TimeCurrent()-t)/60/Period());
}
//+----------------------------------------------------------------------------+

So prüfen Sie eine Kaufposition mit Magic

if (BarsAfterOpenLastPos(OP_BUY, Magic)>1) {// доливаем}
 
artmedia70:

Scheiße... was rauchst du da? Woher beziehen Sie Ihre Zigaretten? Eule ging in den Laden und kaufte ein paar... Und dann kam so ein Funk daher und machte alles kaputt.

Oh, das ist schade...



:) Wie auch immer, so ist es nun mal.

if (OrdersCount()==0)
{CheckBuy();
CheckSell();}
if (OrdersCount()==1) DolivkaBuy();
if (OrdersCount()==-1) DolivkaSell();

Was soll ich in Dolivka...() schreiben, damit es den Balken überspringt, an dem der erste Handel eröffnet wurde?

Ich habe den Quellcode nicht, ich erinnere mich nur...

 
О! Während ich schreibe, gibt es bereits eine Antwort. Ich danke Ihnen!
 
artmedia70:
Äh... Wenn ich nur selbst entscheiden könnte, wie ich es mache... Wenn der Kunde den Take aller Positionen neu berechnen muss (zumal die nächsten Mittelwertpositionen mit noch größeren Lots eröffnet werden können und der Gesamt-Take erneut berechnet wird) und genau durch Stop-Orders und nicht durch den Expert Advisor schließen muss, dann ist es das, was ich tun muss.


Array der Positionsdaten