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

 
Artyom Trishkin:

Sie können. Aber seien Sie vorsichtig. Bei einer offenen Position gibt sie den Schlusskurs zurück. Entsprechend: für Kaufen - Bid, für Verkaufen - Ask

o. Ich wusste nicht, dass es so verwendet werden kann.

Ich dachte, OrderClosePrice() kann nur von einer geschlossenen Position genommen werden.

die Hilfe sagt nichts darüber aus)
 
igrok333:
o. Ich wusste nicht, dass man es so verwenden kann.

Ich dachte, OrderClosePrice() könne nur von einer abgeschlossenen Transaktion übernommen werden.

in der Hilfe steht nichts darüber)

Undokumentierte Funktion. Aber es gibt einige Konventionen. Ich weiß im Moment nicht mehr, welche es waren. Sie müssen Alexey @Alexey Viktorov fragen - er hat kürzlich darüber geschrieben.

 
Artyom Trishkin:

Eine nicht dokumentierte Möglichkeit. Aber es gibt dort einige Konventionen. Ich kann mich im Moment nicht mehr erinnern, welche. Fragen Sie Alexey @Alexey Viktorov - er hat vor kurzem über sie geschrieben.

Was ist mit diesem Code?

Wird die Variable nicht sofort durch Null eingeleitet?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {   
         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  } 
 
igrok333:
Was ist mit diesem Code?

Die Variable wird nicht sofort mit Null initialisiert?

Verlassen Sie sich nicht auf die Standardeinstellungen. Es ist besser, sich bei der Deklaration einer lokalen Variablen um ihren Wert zu kümmern: bool pr=false;

Im Allgemeinen ist es natürlich unnötig, sie dort einzustellen. Es genügt zu prüfen, was die Funktion zurückgibt:

if(!OrderClose()) Print("Schade");

 

Wie erkenne ich den Fibonacci-Fächerpreis einer vorherigen Kerze? MQL5
ObjectGetValueByTime() funktioniert nicht, es gibt 0, dann hoch, dann niedrig Kerze

 

@ArtyomTrishkin

Guten Tag. Bitte helfen Sie mir und sagen Sie mir, was mit meinem Indikator nicht stimmt. Ich verstehe nicht, warum er überhaupt nichts zeichnet.

https://www.mql5.com/ru/forum/224805#comment_6372281

Dateien:
indicator.ZIP  21 kb
probability.zip  50 kb
 
Artyom Trishkin:

Dies ist eine undokumentierte Funktion. Aber es gibt einige Konventionen. Ich weiß im Moment nicht mehr, welche es waren. Ich muss Alexey @Alexey Viktorov fragen - er hat kürzlich darüber geschrieben.

Es ist schon so lange her... aber ich habe es trotzdem gefunden. Renat erklärt in klaren Worten, warum dies nicht wünschenswert ist. Aber meiner Meinung nach ist es nicht so schlimm. Das Problem kann auftreten, wenn wir bei Auftragsabschluss einen neuen Auftrag erhalten. Wenn wir den Brief- oder Geldkurs in der Anfrage festlegen, können wir den Kurs jederzeit aktualisieren und erneut versuchen. Und im Falle der Angabe des Schlusskurses OrderClosePrice() müssen wir den Auftrag wiederholt auswählen, um die Auftragsdaten zu aktualisieren.

Fazit: Wenn Sie nicht können, aber wirklich müssen, können Sie.

Применение функция OrderClosePrice() к открытым ордерам
Применение функция OrderClosePrice() к открытым ордерам
  • 2006.09.11
  • www.mql5.com
Вопрос к разработчикам: Корректно ли использование данной конструкции: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,CLR_NONE) Проверка...
 

Bitte um Rat! Ich lese Daten aus einer CSV-Datei, einschließlich einer Spalte mit einem Preis mit einem Platztrennzeichen "." (1.22426) über FileReadString(handle), dann über die Funktion StrToDouble, ist alles in Ordnung. Es gibt jedoch auch eine Spalte mit dem Preis, die jedoch bereits durch "," (1,22426) begrenzt ist und von StrToDouble nicht gelesen werden kann. Was ist zu tun, wenn es keine Möglichkeit gibt, in der CSV selbst ein Komma in einen Punkt zu ändern?

 
WinProject:

Bitte um Rat! Ich lese Daten aus einer CSV-Datei, einschließlich einer Spalte mit einem Preis mit einem Platztrennzeichen "." (1.22426) über FileReadString(handle), dann über die Funktion StrToDouble, ist alles in Ordnung. Es gibt jedoch eine Spalte mit einem Preis, der bereits durch "," getrennt ist (1,22426), und StrToDouble kann sie nicht lesen. Was kann ich tun, wenn ich in CSV kein Komma in einen Punkt umwandeln kann?


FileReadString


und dann können Sie es von einem Komma in einen Punkt ändern:


StringReplace

Ersetzt alle gefundenen Teilstrings in String durch die angegebene Zeichenfolge.

intStringReplace(
string&str,//Muster, in dem die Ersetzung durchgeführt wird.
const stringfind,// gesuchter Teilstring
const string replacement// zu ersetzende Teilzeichenkette
);

 
Vladislav Andruschenko:

FileReadString


und dann können Sie von einem Komma zu einem Punkt wechseln:


StringReplace

Ersetzt alle gefundenen Teilstrings in der Zeichenkette durch eine bestimmte Zeichenfolge.

intStringReplace(
string&str,// zu ersetzende Zeichenfolge
const stringfind,// die gesuchte Teilzeichenkette
const string replacement// zu ersetzende Teilzeichenkette
);


Danke!) , Variable Cena=FileReadString(handle); ich füge in die Funktion Separator=StringReplace(Sepa,",",".") ein; es wird der Fehler "implizite Umwandlung von Zahl in String" geschrieben -

will den Wert mit dem Trennzeichen "," (1,22426) nicht als String lesen, und StringReplace funktioniert nicht. Oder mache ich es falsch?

Grund der Beschwerde: