[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 411

 
kolyango:

Come fare:

se la Condizione1 è soddisfatta, allora non la controlliamo più ad ogni tick, e ai prossimi tick controlliamo anche la Condizione2 e poi anche la Condizione3 fino a dichiarare false tutte le bandiere?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Leggete il codice più volte fino a quando non è chiaro ciò che è scritto, e sarete felici.

 
costy_:

legge i dati della barra che ha già stabilito (precedente) i+1 rimuovere. Ma l'algoritmo del creatore sarà rotto (lui lo sa bene, io lavoro anche su dati aperti e generati +1)


Come dice il creatore, i+1 serve solo per alimentare i dati di un altro indicatore, poi viene controllata la condizione di rottura, ma tutti gli altri calcoli vengono eseguiti su i.

Il punto è che l'indicatore non viene aggiornato automaticamente, solo con il ricaricamento (cambio di TF, cambio di proprietà).

Non capisco quale sia la ragione.

Ho provato a usare solo i, spingendo il calcolo dei dati dall'indicatore richiesto sulla barra precedente, alla fine del ciclo, ma non ha aiutato.

 
costy_:

Ancora non capisco.

Probabilmente è più facile da spiegare con un'immagine.


Sì, grazie! Dove l'hai evidenziato in blu devi trovare la candela che ha chiuso sopra l'alto su D1.
 
costy_:

Leggete il codice diverse volte fino a quando non è chiaro ciò che è scritto, e sarete felici.


Grazie ancora!
 
LOA:


Come creatore dico che i+1 è solo per alimentare i dati da un altro indicatore, poi controlla la condizione di rottura, ma tutti gli ulteriori calcoli su i.

Il fatto è che l'indicatore non si aggiorna affatto automaticamente, solo con il ricarico (cambiando TF, visualizzando le proprietà).

Non capisco la ragione.

Ho provato a usare solo i, spingendo il calcolo dei dati dall'indicatore richiesto sulla barra precedente, alla fine del ciclo, ma non ha aiutato.

hai

           int  proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 

Sospetto che dovrebbe essere così.

           double proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 
 
costy_:

Tu hai

Sospetto che dovrebbe essere così.


no.... Non prendiamo il valore del prezzo, ma la lettura dell'indicatore (istogramma), il cui valore può essere 1 o -1.
 
costy_:

Leggete il codice diverse volte fino a quando non è chiaro ciò che è scritto, e sarete felici.


Come si fa a riscrivere le condizioni di tale codice, non lo capisco?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
LOA:

no.... Non prendiamo il valore del prezzo, ma l'indicatore (istogramma), che può avere un valore di 1 o -1.

Non riesco ancora a rispondere, dove sono gli inds invocati che restituiscono int double, possono davvero essere >1 in modo che int sia assegnato >0 e viceversa (almeno *.ex4)?

ME_Proboy_F5_For_EX

ME_Order_ATR_For_EX

2011.12.07 18:10:42 Impossibile aprire il file \experts\indicators\ME_Proboy_F5_For_EX.ex4' sul AUDUSD,M30

Sostituito tutto con MACD, tutto funziona!

File:
temp_1.mq4  14 kb
 
kolyango:


Come posso riscrivere le condizioni di tale codice, non lo capisco?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Leggete il codice diverse volte fino a quando non è chiaro cosa c'è scritto, e sarete felici.

Perché avete bisogno di bandiere?) Potete farne a meno.

   if(Close[i+3]>Open[i+3]&&Close[i+2]>Open[i+3]&&Close[i+2]<Close[i+3]&&Close[i]>Close[i+3]) //открываем бай

 
costy_:

Non riesco ancora a rispondere, dove sono gli inds invocati che restituiscono int double, possono davvero essere >1 in modo che int sia assegnato >0 e viceversa (almeno *.ex4)?

ME_Proboy_F5_For_EX

ME_Order_ATR_For_EX

2011.12.07 18:10:42 Impossibile aprire il file \experts\indicators\ME_Proboy_F5_For_EX.ex4' sul AUDUSD,M30

Sostituito tutto con MACD, tutto funziona!


Sì, l'indicatore sulla storia funziona con qualsiasi indicatore attivato. Non funziona nella vita reale, controllato su M1.

Se ho capito bene, proverò a sostituire nelle condizioni >0, <0 con ==1 o ==-1.