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

 

Kerle, die mit Pyatra befreundet sind. Bitte sehen Sie sich meinen Indy für die Meisterschaft an. Ich stecke fest - ich kann mich nicht entscheiden...

Übersetzen von 4 nach 5 - dort im Forum - Stille. Setzen Sie den Code in die Verzweigung - auf dieser Seite. Beschreibung - auf der vorherigen.

Danke.

 
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {                     // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
 
okvseok:

bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
 datetime t;
 double ocp, otp;
 int dg, i, j=-1, k=OrdersHistoryTotal();

 if (sy=="0") sy=Symbol();
 for (i=0; i<k; i++) {
 if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
 if (OrderSymbol()==sy || sy=="") {
 if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
 if (op<0 || OrderType()==op) {
 if (mn<0 || OrderMagicNumber()==mn) {
 if (t<OrderCloseTime()) {
 t=OrderCloseTime();
 j=i;
 }
 }
 }
 }
 }
 }
 }
 // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
 if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Если очередной ордер истории торгов выбран, то
 dg=MarketInfo(sy, MODE_DIGITS);// переменная dg принимет значение дигитса по валютной паре, имя которой лежит в переменной sy
 // далее я возможно не верно расставил приоритет скобок, но по сути должно быть так:
 if (dg==0){// если дигитс равен нулю, то
 if(StringFind(OrderSymbol(),"JPY")<0){// если в имени инструмента ордера найдена подстрока то (только это не правильно написано - функция может верноуть значение > 1)
 dg=4;// дигитс принимает значение = 4
 }
 else{// иначе
 dg=2;// дигитс принимает значение = 2
 }
 }
 ocp=NormalizeDouble(OrderClosePrice(), dg);// нормализация цены закрытия ордера
 otp=NormalizeDouble(OrderTakeProfit(), dg);// нормализация цены ТейкПрофита ордера
 if (ocp==otp) return(True);
 }
 return(False);// команда вернуть из подпрограммы значение "ложь"
 }
 
drknn:

bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
wenn (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
// !!!!!!!!?????? KANN JEMAND DIE BEDEUTUNG DER CODEZEILEN ERKLÄREN, DIE AN DIESER STELLE BEGINNEN?
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {/// Wenn der nächste Auftrag der Handelshistorie ausgewählt wird
dg=MarketInfo(sy, MODE_DIGITS);// die Variable dg nimmt den Wert der Ziffern des Währungspaares an, dessen Name in der Variablen sy steht
// Im Folgenden habe ich wahrscheinlich die Klammern falsch gesetzt, aber eigentlich müsste es so aussehen
if (dg==0){/// wenn Ziffern Null sind, dann
if(StringFind(OrderSymbol(), "JPY")<0){/// wenn eine Teilzeichenkette im Namen des OrderSymbols gefunden wird, dann (nur ist es nicht richtig geschrieben - die Funktion kann > 1 validieren)
dg=4;// Ziffern nehmen den Wert = 4
}
sonst{// sonst
dg=2;// Ziffern nehmen den Wert = 2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);// Normalisierung des Orderschlusskurses
otp=NormalizeDouble(OrderTakeProfit(), dg);// Normalisierung des TakeProfit-Preises der Order
if (ocp==otp) return(True);
}
return(False);// Befehl für return(false) aus dem Unterprogramm
}
Danke, was sind Ziffern?
 
okvseok:
Danke, was sind Ziffern?

Die Ziffern eines Handelsinstruments - wie viele Ziffern nach dem Komma es hat.
 
drknn:

Bedeutung eines Handelsinstruments - wie viele Stellen nach dem Komma es hat.

Das heißt, wenn ich weiß, dass die Ziffern 4 sind, dann kann der Code wie folgt gekürzt werden?

int dg = 4;

............ code

if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {

ocp=NormalizeDouble(OrderClosePrice(), dg);//
NormalizeDouble ( OrderTakeProfit(), dg);// NormalizeDouble(OrderTakeProfit(), dg);// NormalizeDouble(OrderTakeProfit(), dg)
if (ocp==otp) return(True);
}

return(False);

}

 
Ich weiß nicht, ob das möglich ist - nach der Vorstellung des Autors (so scheint es mir) ist dieser Teil des Codes so konzipiert, dass er automatisch Stellen ermittelt - so dass der Code genau bestimmen kann, auf wie viele Stellen nach dem Komma die Preise aufgerundet werden sollen. Nur dieser Teil des Codes ist unbrauchbar gemacht.
 
Können Sie mir bitte sagen, ob es einen Indikator gibt, der die Gesamtzahl der offenen Aufträge für alle am Handelsprozess beteiligten Paare berechnet?
 
yosuf:
Können Sie mir bitte sagen, ob es einen Indikator gibt, der die Gesamtzahl der offenen Aufträge für alle am Handelsprozess beteiligten Paare berechnet?
Nein, nein. Es ist einfacher, einen einfachen Expert Advisor zu erstellen, der die Anzahl der offenen Positionen berechnet.
 
Frage an den CodeBase-Chef. Ich habe 3 Veröffentlichungen dorthin geschickt (plus 3 auf Englisch). Eine davon wurde am 18. Juli verschickt und ist nicht veröffentlicht worden. Am Anfang, als ich die Codes dorthin schickte, erschienen sie innerhalb von 3-4 Tagen. Jetzt ist nicht klar, ob neue veröffentlicht werden oder nicht. Ich würde gerne wissen, ob ich, wenn das Material z.B. schwach ist und der Betreuer der Meinung ist, dass es nicht in CodeBase eingefügt werden sollte, eine Nachricht erhalte, dass es nicht erscheint, und ob es dann z.B. aus der Anwendung entfernt wird? Wenn ich wüsste, dass sie nicht veröffentlicht werden, würde ich die Veröffentlichung anders, ausführlicher vorbereiten. Gibt es eine durchschnittliche Wartezeit bis zur Veröffentlichung?