[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 336

 

Und Barma, stellen Sie sicher, dass

//--------------------------------------------------------------- 5 --
// торговые критерии
if(vverh>0)
  {
   Opn_B=true;
   Cls_S=true;
   Opn_S=false;
   Cls_B=false;
  }
if(vverh>0)
  {
   Opn_S=true;
   Cls_B=true;
   Opn_B=false;
   Cls_S=false;
  }
  
//--------------------------------------------------------------- 6 --
wenn Sie die Bedingungen richtig geschrieben haben
 

Meine Herren! Guten Abend (in der Nacht, am Morgen, am Nachmittag)!

Könnten Sie mir bitte eine Antwort auf eine einfache Frage geben?

Welche Funktion liefert den Eröffnungskurs eines Auftrags, der:

- zuletzt geschlossen

- mit einem Stop Loss geschlossen.

Ich danke Ihnen für Ihre Hilfe.

 
solnce600:

Meine Herren! Guten Abend (in der Nacht, am Morgen, am Nachmittag)!

Bitte sagen Sie mir die Antwort auf eine einfache Frage.

Welche Funktion liefert den Eröffnungskurs des Auftrags, der:

- zuletzt geschlossen

- Mit einem Stop Loss geschlossen.

Ich danke Ihnen für Ihre Hilfe.



eine solche Funktion gibt es nicht - es muss ein kleiner Code geschrieben werden
 
artmedia70:

Variablen können nur beim Testen der Strategie im Tester verwendet werden.

In der realen Welt muss jeder Wert, der für die Ausführung der Logik benötigt wird, zum richtigen Zeitpunkt berechnet werden, da die Werte dieser Variablen sehr leicht verloren gehen können, zum Beispiel bei einem Neustart.



Artem, und ist es möglich, ein Beispiel zu nennen? Schließlich ist es sogar möglich, eine Variable durch eine Funktion zu ersetzen. Und man kann eine Funktion nicht durch eine Variable ersetzen :)

 

solnce600:


Meine Herren! Guten Abend (oder Nacht, oder Morgen) an alle!

Bitte sagen Sie mir die Antwort auf eine einfache Frage an Sie.

Welche Funktion liefert den offenen Preis des Auftrags, der :

- zuletzt geschlossen

- Mit einem Stop Loss geschlossen.

Ich danke Ihnen für Ihre Hilfe.



Esgibt einen solchen Zweig, in dem es eine Menge interessanter Dinge gibt.

Diese Funktion gibt das Flag zum Schließen der letzten Position auf der Haltestelle zurück

 

Vielen Dank für den Hinweis.

Dies ist genau die Funktion, die ich verwende.

Nachdem eine Stop-Order geschlossen wurde, muss ich die Eröffnung von Marktorders zum Preis von

des letzten zum Stop geschlossenen Auftrags.

Ich habe versucht, den Eröffnungskurs der letzten bei Stop geschlossenen Order in der Variablen zu speichern
if (isCloseLastPosByStop()==True)                                            //если посл.орд.SELL  закрылся по стопу(стоп данного ордера SELL = 295 п.)

double PrStop = (Bid - 0.0295);                                              // от цены срабатывания СТОП-ЛОССА вычитаем 295 п. 
                                                                             // и запоминаем это значение,(т.е. цену открытия ордера)в переменной  PrStop         
if (Bid == PrStop )                                                          //если цена Bid будет равна значению PrStop
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );//открыть ордер.

Wenn der Preis jedoch gleich dem Wert von PrStop ist, wird der Auftrag nicht erteilt.

Ich habe auch versucht, einen Auftrag zu erteilen, wenn der Preis niedriger ist als der Wert von PrStop.

Aber es wurde nicht wieder eine Bestellung aufgegeben.

if (Bid < PrStop ) 

Ich denke, der Grund kann sein, dass bis zum nächsten Auftrag schließt NICHT auf STOP LOSS.

isCloseLastPosByStop () gibt bei jedem Tick True zurück und die Variable PrStop erhält

BEI JEDEM TICKEN EINEN NEUEN WERT.

Ich habe mir alle Funktionen von Kim genau angesehen, aber ihre Namen scheinen für die Lösung meines Problems ungeeignet zu sein.

Ich wäre denjenigen sehr dankbar, die mich in die richtige Richtung führen.

 

Bitte geben Sie mir einen Hinweis! Ich fange gerade an, meine ersten Schritte im Programmieren zu machen.

Wie würde eine Funktion schneller arbeiten? (Die Funktion wird 2 Mal aufgerufen)

- wenn es aus der Bibliothek aufgerufen wird

- wenn sie außerhalb der Funktion start() direkt im EA beschrieben wird.

- wenn sie in der Funktion start() selbst enthalten ist

 

solnce600, Andrei, Sie haben die letzte geschlossene Position auf SL in Ihren Händen! Und wer hindert Sie daran, alles herauszufinden, was Sie wissen wollen, indem Sie die Funktion ein wenig verändern:

double GetOOPCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t; 
  double   ocp, osl, OOP;
  double p = 0;
  int    i, j=-1, k=OrdersHistoryTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (op<0 || OrderType()==op) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
//            p = OrderProfit()+OrderCommission()+OrderSwap();
            OOP = OrderOpenPrice();
  } } } } }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    ocp=NormalizeDouble(OrderClosePrice(), 5);
    osl=NormalizeDouble(OrderStopLoss(), 5);
//    if (ocp==osl) return(p);
    if (ocp==osl) return(OOP);
  }
  return(0);
}
Ich habe die beiden Zeilen mit dem Schlussgewinn auskommentiert und zwei Zeilen hinzugefügt, um den Eröffnungskurs der geschlossenen Position zu erhalten. Ich habe es nicht getestet, aber es sollte funktionieren, da alles funktioniert, wenn ich ersetze, was ich brauche! Probieren Sie es aus!
 
borilunad:

solnce600, Andrei, Sie haben die letzte geschlossene Position auf SL in Ihren Händen! Und wer hindert Sie daran, alles darüber herauszufinden, was Sie wollen, indem Sie die Funktion ein wenig verändern:

Ich habe die beiden Zeilen, die mir den Schlussgewinn anzeigen, auskommentiert und zwei Zeilen hinzugefügt, um den Eröffnungskurs der geschlossenen Position zu erhalten. Ich habe es nicht getestet, aber es sollte funktionieren, da alles funktioniert, wenn ich das eingebe, was ich brauche! Probieren Sie es aus!

Vielen Dank für Ihre schnelle Hilfe.

Ich wäre Ihnen auch sehr dankbar, wenn Sie mir einen Überblick über..... geben könnten.

Meine Strategie ist sehr einfach.

Wenn sich der Kurs von der Eröffnung (iOpen (Symbol (),0,0) ) schneller nach oben bewegt (300 Pips) als eine kleinere Strecke (10 Pips) in die entgegengesetzte Richtung

-Nachdem der Kurs sich umkehrt und in die entgegengesetzte Richtung geht, eröffnen Sie Marktaufträge zum Eröffnungskurs jeder Kerze ( iOpen (Symbol (),0,0) .

Zur Umsetzung dieser Idee fällt mir als Erstes Folgendes ein

1. zum Eröffnungskurs jeder Kerze eine Marktorder mit einem großen Stop und einem kleinen Gewinn platzieren.

Wenn der Auftrag schneller über dem Stop als über dem Gewinn geschlossen wurde, setzen Sie einen Marktauftrag zum Eröffnungskurs des Auftrags, der über dem Stop geschlossen wurde.

Mit dieser Methode können Sie Candlesticks zu ihren Eröffnungskursen erkennen, die später als Marktaufträge eingestellt werden sollen.....Aber dazu muss ich den Markt

Aufträge mit großen Stopps und kleinen Gewinnen bei der Eröffnung eines jeden Stroms.

Und ich muss keine Orders bei der Eröffnung jeder Kerze im echten Handel platzieren.

Das erste, was mir dazu einfällt, ist

- Wir sollten eine Order bei der Eröffnung jeder Kerze in einem Demokonto eröffnen, an dessen Chart ein EA angehängt ist.

- Und ich sollte Orders nur unter den oben beschriebenen Bedingungen auf einem echten Konto mit einem anderen EA öffnen, der an den Chart angehängt ist.

Aber es scheint mir, dass der Handel mit zwei Konten und zwei EAs auch nicht die bequemste und optimalste Variante ist. Ich würde gerne mit einem Konto und einem EA handeln.

FRAGE: Wie kann ich sonst die oben beschriebenen Bedingungen für die Positionseröffnung finden, ohne bei der Eröffnung jeder Kerze Marktaufträge zu eröffnen?

Ich danke Ihnen.

 
solnce600:

Vielen Dank für Ihre schnelle Hilfe.

Ich wäre Ihnen auch sehr dankbar, wenn Sie mir einen Überblick über..... geben könnten.

Meine Strategie ist sehr einfach

Wenn der Preis von Beginn einer Kerze (iOpen (Symbol (),0,0) stieg (unten) mehr Abstand (300 Pips) schneller als eine geringere Entfernung(10 Pips) in die entgegengesetzte Richtung

-dann, wenn der Kurs sich umdreht und in die entgegengesetzte Richtung geht, eröffnen Sie bei der Eröffnung jeder Kerze Marktaufträge zum Preis der Kerze ( iOpen (Symbol (),0,0) .

Um diese Idee umzusetzen, fällt mir als erstes ein

1. Platzieren Sie zum Eröffnungskurs jeder Kerze eine Marktorder mit einem großen Stop und einem kleinen Gewinn.

2. wenn der Auftrag schneller zum Stop als zum Gewinn geschlossen wird, setzen Sie einen Marktauftrag zum Eröffnungskurs des Auftrags, der zum Stop geschlossen wurde.

Mit dieser Methode können Sie Candlesticks zu ihren Eröffnungskursen erkennen, die später als Marktaufträge eingestellt werden sollen.....Aber dazu muss ich den Markt

Aufträge mit großen Stopps und kleinen Gewinnen bei der Eröffnung eines jeden Stroms.

Und ich muss keine Orders bei der Eröffnung jeder Kerze im echten Handel platzieren.

Das erste, was mir dazu einfällt, ist

- Wir sollten eine Order bei der Eröffnung jeder Kerze auf einem Demokonto eröffnen, an dessen Chart ein EA angehängt sein wird.

- Und ich sollte Orders nur unter den oben beschriebenen Bedingungen auf einem echten Konto mit einem anderen EA öffnen, der an den Chart angehängt ist.

Aber es scheint mir, dass der Handel mit zwei Konten und zwei EAs auch nicht die bequemste und optimalste Variante ist. Ich würde gerne mit einem Konto und einem EA handeln.

F: Wie kann ich sonst die Bedingungen für die Positionseröffnung erkennen, ohne die Marktorder bei der Eröffnung jeder Kerze zu öffnen?

Ich danke Ihnen.

Nun, natürlich haben Sie eine so große Sache daraus gemacht, als ob Sie es wirklich gesehen hätten, was ich bezweifle! Ich verstehe Ihre Idee nicht ganz, aber ich schlage vor, dass Sie versuchen, die Candlesticks in den Bedingungen zu verfolgen und, wenn diese Bedingungen mit den Ihren übereinstimmen, die schwebenden Orders in den gewünschten Abständen von der Eröffnungs-Nullkerze zu setzen, während Sie Stops und Profits setzen und sie sofort nach dem Setzen ändern, indem Sie auf die gleiche Weise eine andere Funktion von Kim anwenden, um die Daten der zuletzt gesetzten Order zu bestimmen! Prüfen Sie Ihre Logik sorgfältig, experimentieren Sie und machen Sie weiter! Viel Glück!