[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 298

 

Ragazzi che sono amichevoli con Pyatra. Per favore guardate il mio Indy per il campionato. Sono bloccato - non riesco a decidere...

Traducendo da 4 a 5 - lì sul forum - il silenzio. Mettete il codice nel ramo - in questa pagina. Descrizione - sul precedente.

Grazie.

 
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;
doppio ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
per (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
se (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
se (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
se (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
// !!!!!!!!?????? QUALCUNO PUÒ SPIEGARE IL SIGNIFICATO DELLE LINEE DI CODICE CHE INIZIANO IN QUESTO PUNTO?
se (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Se viene selezionato l'ordine successivo della cronologia di trading
dg=MarketInfo(sy, MODE_DIGITS);// la variabile dg accetterà il valore delle cifre della coppia di valute il cui nome è nella variabile sy
// di seguito probabilmente ho messo le parentesi in modo errato ma in realtà dovrebbe essere così
se (dg==0){// se le cifre sono zero, allora
if(StringFind(OrderSymbol(), "JPY")<0){// se viene trovata una sottostringa nel nome del simbolo dell'ordine allora (solo che non è scritto correttamente - la funzione può validare > 1)
dg=4;// le cifre prendono valore = 4
}
else{// else
dg=2;// le cifre prendono valore = 2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);// normalizza il prezzo di chiusura dell'ordine
otp=NormalizeDouble(OrderTakeProfit(), dg);// normalizza il prezzo dell'ordine TakeProfit
se (ocp==otp) return(True);
}
return(False);// comando per restituire(false) dalla subroutine
}
grazie, cosa sono le cifre?
 
okvseok:
grazie, cosa sono le cifre?

Le cifre di uno strumento di trading - quante cifre dopo il punto decimale ha.
 
drknn:

Significato di uno strumento commerciale - quante cifre dopo il punto decimale ha.

Cioè, se so che le cifre sono 4, allora il codice può essere abbreviato così?

int dg = 4;

............ codice

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

ocp=NormalizeDouble(OrderClosePrice(), dg);// normalizza il prezzo di chiusura dell'ordine
otp=NormalizeDouble(OrderTakeProfit(), dg);// normalizza il prezzo TakeProfit dell'ordine
if (ocp==otp) return(True);
}

return(False);

}

 
Non so se è possibile - secondo l'idea dell'autore (beh, mi sembra) questa parte del codice è progettata per determinare automaticamente le cifre - in modo che il codice possa determinare esattamente a quante cifre dopo il punto decimale arrotondare i prezzi. Solo questa parte del codice è fatta inutilmente.
 
Potete dirmi se esiste un indicatore che calcola il numero totale di ordini aperti per tutte le coppie coinvolte nel processo di trading?
 
yosuf:
Potete dirmi se esiste un indicatore che calcola il numero totale di ordini aperti per tutte le coppie coinvolte nel processo di trading?
No, no. È più facile fare un semplice Expert Advisor che calcola il numero di posizioni aperte.
 
Domanda per il capo di CodeBase. Ho inviato lì 3 pubblicazioni (più 3 in inglese). Uno di essi è stato inviato il 18 luglio e non è stato pubblicato. All'inizio, quando ho inviato i codici lì, sono apparsi entro 3-4 giorni. Ora non è chiaro se i nuovi saranno pubblicati o meno. Vorrei sapere se, per esempio, il materiale è debole e secondo il parere del supervisore non dovrebbe spingerlo in CodeBase, avrò qualche messaggio che non apparirà e quindi, per esempio, sarà rimosso dall'applicazione? Se avessi saputo che non sarebbero stati pubblicati, avrei preparato la pubblicazione in modo diverso, più esteso. C'è un tempo medio di attesa per la pubblicazione?
Motivazione: