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

 
Stereosin:
Einen guten Tag an alle. Die Idee besteht darin, für jede offene Marktorder (Gewinnmitnahme und Stop-Loss) eine Pending-Order in die entgegengesetzte Richtung zu platzieren, wenn der Stop-Loss ausgelöst wird (wenn Kauforder, dann Pending-Order senden). Ich kann keine Syntax-Sequenz finden, um ein Skript zu schreiben, das die schwebende Order löscht, wenn die aktuelle Order bei Take Profit geschlossen wird? Vielleicht gibt es ein geschriebenes Skript unter den freien, aber die Suche hat kein Glück ( . Ich würde gerne selbst eine schreiben, um damit umgehen zu können, aber ich verstehe die Syntaxfolge nicht. Lassen Sie mich an einem anderen Beispiel erklären - ich will ein Eis - die Syntaxfolge - 1) - aufstehen von der Couch 2) anziehen 3) zum Laden gehen 4) Eis kaufen. Ist es möglich, dies auch für meine Aufgabe zu tun?

Wenn der aktuelle Auftrag geschlossen wird, verringert sich die Anzahl der Kaufaufträge oder sie fehlen ganz (hängt vom Algorithmus ab), Sie führen diese Prüfung durch und löschen die ausstehenden Aufträge

etwa so (in diesem Fall werden im Gegenteil die ausstehenden Aufträge gelöscht, wenn ein früherer Kauf mit Gewinn abgeschlossen wurde):

 for(int m=OrdersTotal()-1;m>=0;m--)
   if(OrderSelect(m,SELECT_BY_POS,MODE_TRADES)) 
     if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic) {  
    
      if(OrderType()==OP_BUY)  sBuy++; 
      if(OrderType()==OP_SELL) sSell++;
       
      if(OrderType()==OP_BUYLIMIT)
       if(sBuy==0 || sSell>0) OrderDelete(OrderTicket());
      if(OrderType()==OP_SELLLIMIT) 
       if(sSell==0 || sBuy>0) OrderDelete(OrderTicket());
  }
 
Ratmirf:

Das ist also richtig?

if (OrderOpenTime()+7200+15*60 <=TimeCurrent()) Cls_Buy=true;

if (OrderOpenTime()+7200+900 <=TimeCurrent()) Cls_Buy=true;

und so zu enden?

if (OrderOpenTime()+8100 <=TimeCurrent()) Cls_Buy=true;

Nun, das ist Highschool-Mathe... Seien Sie ein wenig selbstbewusster.
 
harbor:

Wenn der aktuelle Auftrag geschlossen wird, verringert sich die Anzahl der Kaufaufträge oder sie fehlen ganz (hängt vom Algorithmus ab), Sie führen diese Prüfung durch und löschen die ausstehenden Aufträge

etwa so (in diesem Fall werden im Gegenteil die ausstehenden Aufträge gelöscht, wenn ein früherer Kauf mit Gewinn abgeschlossen wurde):

Ich danke Ihnen vielmals. Ich werde mir das heute Abend ansehen.
 

In diesem Fall erhöhe ich den Stop Loss auf die gewünschte Größe. Ich setze keinen Schwellenwert, sondern lasse ihn virtuell im Programm und eröffne eine Order. Das Ergebnis ist, dass nur eine von 15 bis 20 Orders geöffnet wird. Was muss ich tun, um alle Orders zu öffnen?

RefreshRates();


     double bid = MarketInfo(symbol,MODE_BID);
     double ask = MarketInfo(symbol,MODE_ASK);

    

     double stoplevel =  NormalizeDouble(stoplevelTemp * tickTemp,digitsTemp)+tickTemp;

     if(digitsTemp == 5 )
          stoplevel+=(700 * tickTemp);
     
     if(spreadOrdDangBr < stoplevel)                                                                           //если спред меньше стоплевела - перебиваем
         spreadOrdDangBr=stoplevel;
         
     double lotDB = calculationLot(spreadOrdDangBr,0.0025);                                                      //расчитываем лот - четверть процента свободных денег
     


         slODB=ask-spreadOrdDangBr;                                                                              
         tpODB= ask+ spreadOrdDangBr;

         orderTicketODB=OrderSend(symbol,OP_BUY,lotDB,ask,3,slODB,0,("dangBr" +spreadOrdDangBr));



und infolgedessen im Terminal


 
Hallo zusammen) Wie kann man den Höchstpreis eines ausgewählten Balkens (z.B. 100. Balken) ermitteln?
 

Hilfe, bitte! Ich möchte eine Kaufposition eröffnen, und wenn der Preis um 100 % steigt
Pips, wird mein Stop-Loss im Verhältnis zum vorherigen Stop-Loss gleich Null.

Mache ich es richtig?


if(Bid-OrderOpenPrice()>Point*100)

{

OrderModify(OrderTicket(),OrderOpenPrice(), 0,TakeProfit,0,);

zurück(0);

}

Ich danke Ihnen!

 
Tema97:
Hallo zusammen, wie kann man den Höchstpreis eines ausgewählten Balkens (z.B. 100.) ermitteln?)
High[100] wird nicht helfen
 

Ich fand eine Funktion, die den maximalen und minimalen Preis für 100 Bars definiert und zeichnet horizontale Linien (bitte helfen Sie mir, um die ersten 15 Bars passieren und nur dann prüfen, für 100 (wie mache ich diese Verschiebung?) und ein weiteres Problem mit Linien - es zeichnet nur 1 Mal - das heißt - wenn wir gehen weitere 100 Punkte mit neuen Hochs und Tiefs - die Linien nicht gezeichnet werden) jemand wissen, bitte schreiben Sie - hier ist der Code

extern inttern Quant_Bars=100; // Anzahl der Balken

//--------------------------------------------------------------------

int start() // Sonderfunktion start

{

int i; // Taktnummer

double Minimum=Bid; // Mindestpreis

Maximum=Bid; // Maximaler Preis

for(i=0;i<=Quant_Bars-1;i++) // Von Null (!) bis

{ // ...Quant_Bars-1 (!)

if (Low[i]< Minimum) // if < bekannt

Minimum=Low[i]; // dies ist der Mindestwert

if (High[i]> Maximum) // if > bekannt

Maximum=High[i]; // es wird das Maximum sein.

}

Alert("Für die letzten ",Quant_Bars, // Anzeige

"Min= ",Minimum," Max= ",Maximum);

double linia1=ObjectCreate("highLine",OBJ_HLINE,0,0,Maximum);

double linia2=ObjectCreate("lowLine",OBJ_HLINE,0,0,Minimum);

return(0); //beenden start()

}

 
Tema hat die Unterlagen endlich gelesen. Man kann dort so viele interessante Dinge finden... Zum Beispiel gibt iHighest den Index des größten gefundenen Wertes (Verschiebung relativ zum aktuellen Balken) des entsprechenden Diagramms zurück. Und iHigh gibt den Wert des Höchstpreises des (durch den Shift-Parameter angegebenen) Balkens des entsprechenden Diagramms zurück. Wenn Sie diese beiden Funktionen verstanden haben, können Sie Ihr Problem leicht lösen, ohne auf Funktionen zurückgreifen zu müssen, die nicht immer von anderen geschrieben werden.
 
Leute, wenn der Indikator nicht standardmäßige grafische Objekte zeichnet, ist es dann möglich, auf diese zuzugreifen? Das Problem ist, dass sie nicht in der Liste der Objekte angezeigt werden (wenn die Schaltfläche Alle gedrückt wird) und die Funktion ObjectsTotal() sie nicht sieht. Beim Versuch, auf Objekte über ihren Namen zuzugreifen, gibt GetLastError() den Fehler 4202 zurück(ObjectFind() Funktion)