Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 374

 
 while (Count < FindPeak)
   {
// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка
 
Novaja:

Ecco un'altra variante simile alla tua... Il titolo del ciclo for dice i++, così ho rimosso le parentesi in basso. Ho rimosso le parentesi graffe perché c'è solo un operatore nel ciclo (if else)

 while (Count < FindPeak)
 {
    double ZZCur;
    for(i=0,ZZCur=0; ZZCur==0 && i<Bars; i++)
       if      (iCustom(NULL, 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(NULL, 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);

    if (ZZCur == 0) return(False);   // Если ни один из экстремумов не определен, то это ошибка
.......
}
 
STARIJ:

Ecco un'altra variante simile alla tua ... L'intestazione del ciclo for dice i++ così li ho rimossi in fondo. Rimosse le parentesi graffe perché c'è solo un operatore nel ciclo (if else)


Grazie mille per l'alternativa, tutto nel salvadanaio, bisogno di fare esperienza. Quindi anche io avevo ragione, solo che i gufi non vogliono aprire scambi, continuerò a cercare.

 

Ciao, c'è una serie di prezzi di apertura degli ordini. Conoscendo l'indice di questo ordine, come posso determinare il suo tipo?

if(index_elementa_masiva=OP_BUY)???
 
vikzip:

Ciao, c'è una serie di prezzi di apertura degli ordini. Conoscendo l'indice di questo ordine, come possiamo determinare il suo tipo?

Per questo tipo di compito, non è molto desiderabile avere un array di prezzi di apertura, poiché potrebbe ipoteticamente esserci più di un ordine con lo stesso prezzo di apertura.

Ma in generale, dovremmo prendere il prezzo aperto conosciuto, scorrere tutti gli ordini e selezionare quelli il cui prezzo aperto è uguale a quello nell'array con l'indice conosciuto.

Poi, se c'è più di un ordine di questo tipo, dobbiamo confrontarli con altri criteri, per esempio con il tempo, per capire che questo è l'ordine che ti serve.

E se c'è un solo ordine, allora è quello giusto - senza ulteriori selezioni con altri criteri.

 
Artyom Trishkin:

Non è auspicabile avere un array di prezzi aperti per questo compito, poiché potrebbe ipoteticamente esserci più di un ordine con lo stesso prezzo aperto.

Ma in generale, dovremmo prendere il prezzo aperto conosciuto, fare un ciclo di tutti gli ordini e selezionare quelli il cui prezzo aperto è uguale a quello nell'array per l'indice che conosci.

Poi, se c'è più di un ordine, dovremmo confrontarli con altri criteri, per esempio, in base al tempo, per capire che questo è l'ordine giusto.

E se ce n'è solo uno, allora è quello giusto - senza ulteriori selezioni con altri criteri.


Grazie!

 
Potete dirmi come scrivere una condizione che dica: se i tipi di ordine sono gli stessi?
 bool TYP_A=OrderType;
 bool TYP_B=OrderType;
 if (TYP_A=TYP_B)????
double PriceBlizkoA;                          // Цена выбранного ордера
         bool TYP_A; 
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:  
        if (OrderOpenPrice=PriceBlizkoA);                                     //если цена ордера равна цене заданого   и вот здесь ошибка. Догадываюсь неверно записано условие. Подскажите, что исправить?
         TYP_A=OrderType;   
 
vikzip:
Potete dirmi come scrivere una condizione che dica: se i tipi di ordine sono gli stessi?
Leggi cos'è un operatore di confronto e cos'è un operatore di assegnazione e come sono scritti.
 
vikzip:
Potreste dirmi come scrivere la condizione che suona così: se i tipi di ordine sono uguali?

Questo equivale alla stessa cosa:

bool TYP_A=OrderType;
bool TYP_B=OrderType;

bool TYP_A=0; // Buy
bool TYP_B=1; // Sell

Come risultato, otteniamo

if(TYP_A) // false
if(TYP_B) // true
Leggete ciò che Artiom ha consigliato.
 

Buona giornata a tutti!

Per favore, datemi un comando affinché il robot non apra più di 1 ordine per 1 candela.

Anche se ha preso la sua presa su questa candela - non per aprire il prossimo ordine sulla stessa candela.

Ora viene fuori che se le condizioni degli indicatori sono soddisfatte - aprire un commercio.

Quando si chiude un deal sul take, si apre immediatamente un nuovo deal sulla stessa candela, e qui non serve più e mi crea problemi.

Sento che è importante dare un feedback.

Ha bisogno di un rigorosamente così 1 candela - 1 affare.

Molte grazie in anticipo!