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

 
Ho scritto una funzione per rilevare i flytag e sono inciampato in qualcosa che non capisco. l'istruzione if non funziona. forse ho scritto qualcosa di sbagliato da qualche parte, voglio che tu dia una nuova occhiata, non capisco perché. ho anche registrato un video debugger che mostra i valori uguali, ma non funziona. per favore rimettimi il cervello in))))
{
      int size = ArrayRange(arrayMinLow,0);
     
      
      double spreadFlat = highLine - lowLine;
      
     
      int directionFlat = -1;
      int slew = 0;
      for (int i = 0; i<size; i++){
            double hl =arrayMinLow[i][0];
            double ol = arrayMinLow[i][1];
            double cl = arrayMinLow[i][2];
            double ll = arrayMinLow[i][3];
            
            if (hl == highLine || ol == highLine){                                      //вот тут не срабатывает

                  if( directionFlat == -1 || directionFlat == 0)
                        slew++;

                  directionFlat = 1;
            }else if  (cl == lowLine|| ll ==lowLine){
               
                  if( directionFlat == -1 || directionFlat == 1)
                        slew++;               
               
                  directionFlat = 0;
               
           }
                  
      
      }
      
      if(slew >=4 )
         return true;
         
      return false;   
      
      

}




collegamento video https://www.youtube.com/watch?v=k9Zo0SgrMCA



Non posso cancellare il post precedente, ho copiato tutto in html e rimosso il tag che mi serve per modificare il post

 
Leo59:
Cosa c'è che non va? Perché ci sono aree blu che non sono state prese in considerazione?




Francamente, non scavo nei codici degli altri a meno che non sia necessario! Troverete tutto nel Doc, nell'aiuto e nel database! Ci sono molti esempi!
 

Potreste dirmi come organizzare il ricalcolo della valuta del deposito.

Il mio robot calcola il lotto in base al saldo e ai fondi nel conto. Ma questo è, ovviamente, se il deposito è in dollari.

Se apro un deposito in rubli, allora devo dividere il lotto per il tasso usdrur.

Posso permettere al mio Expert Advisor di guardare la valuta del deposito e, se necessario, dividerla per usdrur?

 
neman:

Potreste dirmi come organizzare il ricalcolo della valuta del deposito.

Il mio robot calcola il lotto in base al saldo e ai fondi nel conto. Ma questo è, ovviamente, se il deposito è in dollari.

Se apro un deposito in rubli, allora devo dividere il lotto per il tasso usdrur.

Posso permettere al mio Expert Advisor di guardare la valuta del deposito e, se necessario, dividerla per usdrur?

Bene, AccountCurrency() e in base a questo forma una coppia e determina il Bid.
 

Lo capisco, solo che non so come scriverlo correttamente

Per esempio:


double KursS=iClose("USDRUR",H1,0);

Se AccountCurrency() = USD, allora K=1;

Se AccountCurrency() = RUR, alloraK=KursS ;

Come posso registrarlo correttamente?


 
neman:

Lo capisco, ma non so come scriverlo correttamente

Per esempio:


double KursS=iClose("USDRUR",H1,0);

Se AccountCurrency() = USD, allora K=1;

Se AccountCurrency() = RUR, alloraK=KursS ;

Come posso registrarlo correttamente?


L'avete saltato. Prima di tutto, dovete definire la valuta "USDRUR". Se il tuo deposito è in euro, devi impostare il tasso EURUSD.

Cioè, dovreste definire la stringa K_Symbol = "USDRUR"; a condizione che il deposito sia in rubli.

Penso che tu possa capire come farlo. Se il broker apre conti in altre valute, si tratterebbe di controlli aggiuntivi.

 
AlexeyVik:

Sei tu che l'hai saltato. Per prima cosa, devi determinare che la valuta che vuoi è "USDRUR". Se vuoi salvare il deposito in euro, devi impostare il tasso EURUSD.

Cioè definire la stringa K_Symbol = "USDRUR"; a condizione che il deposito sia in rubli.

Penso che tu possa capire come farlo. Se il broker apre conti in altre valute, si tratterebbe di controlli aggiuntivi.

A parole, tutto ha senso per me. La domanda era come registrare...

 
neman:

Con le parole capisco tutto. La questione era come scriverlo...


Beh, c'è tutto nel nostro dialogo.

string K_Symbol;

if(AccountCurrency() == "USD") K = 1;
else
if(AccountCurrency() == "RUR")
 {
  K_Symbol = "USDRUR";
  K = iClose(K_Symbol, H1, 0);
 }
else
if(AccountCurrency() == "EUR")
 {
  K_Symbol = "EURUSD";
  K = iClose(K_Symbol, H1, 0);
 }


La seconda opzione è un po' più corta...

string K_Symbol;

if(AccountCurrency() == "USD") K = 1;
else
 {
  if(AccountCurrency() == "RUR") K_Symbol = "USDRUR";
   if(AccountCurrency() == "EUR") K_Symbol = "EURUSD";
  K = iClose(K_Symbol, H1, 0);
 }


E la terza opzione, per tutte le occasioni e tutte le valute del deposito, un po' più complicato, e non lo farò, e pronto non hanno, non c'era bisogno di scrivere.

 

Grazie mille!

 
pycha:

Ho scritto una funzione per rilevare i flytag e sono inciampato in qualcosa che non capisco. l'istruzione if non funziona. forse ho scritto qualcosa di sbagliato da qualche parte, voglio che tu dia un'altra occhiata, perché non capisco perché. ho anche registrato un video di debugger che mostra i valori uguali, ma non funziona. per favore rimettimi il cervello in))))




collegamento video https://www.youtube.com/watch?v=k9Zo0SgrMCA



Nota che non posso cancellare il post precedente, ho copiato tutto in html e rimosso il tag che è necessario per modificare il post

Avete sentito qualcosa sul confronto dei numeri reali?

La soluzione al problema è stata suggerita molto tempo fa e più di una volta.

Ho cancellato il post precedente.