Controllare - cosa ho fatto di sbagliato? - pagina 6

 
Nikolai Semko #:

Sì, Natalia - era solo un meme "Quando ti pagano per una linea di codice".

Questo è il tipo di umorismo che hanno i programmatori.


Non hai bisogno di una funzione nel tuo caso.

Basta formare le variabili Volume1 ... Volume10 prima forma un array Volume[10]
e poi usa l'indice n per riferirsi ai suoi elementi volume[n].
Non preoccupatevi - quasi tutti i programmatori ci sono passati.
La cosa principale è che ti piaccia davvero la programmazione. Lo sento.
Così andrai lontano.

Dimmi come scriverlo bene. Non voglio duplicare array di codice.
L'Expert Advisor usa 2 indicatori.
e le condizioni per l'apertura dell'ordine hanno questo aspetto ora:

if (Indicator1 > 0 && Indicator2 > 0)
{
OrderSend
}


Ma vorrei aggiungere un filtro nelle impostazioni
Usa o non usa 1 o 2 indicatori
Solo che non so come implementarlo più correttamente.
Sembrerebbe qualcosa del genere:

if (Indicator1 && Indicator1 > 0)
{
if (Indicator2 && Indicator2 > 0) || (Indicator2 == false)
{
///
}
}



if (Indicator2 && Indicator2 > 0)
{
if (Indicator1 && Indicator1 > 0) || (Indicator1 == false)
{
///
}
}
così posso disabilitare 1 indicatore o il secondo indicatore nelle impostazioni.
Non riesco a capire come farlo senza copiare un sacco di codice.....
 
Natalya Smirnova #:

Per favore, consigliatemi come scriverlo bene. Per non duplicare gli array di codice.
L'Expert Advisor usa 2 indicatori.
e le condizioni per l'apertura dell'ordine hanno questo aspetto ora:


Ma vorrei aggiungere il filtro
Utilizzare o non utilizzare 1 o 2 indicatori
Solo che non so come implementarlo più correttamente.
Sarebbe così:

Che potevo spegnere 1 indicatore o l'altro nelle impostazioni.
Non riesco a capire come farlo senza copiare un sacco di codice.....

Ne ho scritto un po' qui: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

 
JRandomTrader #:

Ho scritto un po' sull'argomento qui: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

Grazie, vado a fare qualche ricerca.
 

Natalya Smirnova #:

così posso disabilitare 1 indicatore o il secondo indicatore nelle impostazioni.
Non riesco a capire come farlo senza copiare un sacco di codice.....


input bool indicator_1 = true;
input bool indicator_2 = true;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool F_1()
    {
     if(!indicator_1)
          return true;
// выполнение условий

//---
     return false;
    }
bool F_2()
    {
     if(!indicator_2)
          return true;
// выполнение условий

//---
     return false;
    }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart(void)
    {
     if(F_1 && F2) /* работаем */ ;
    }

Scrivi la condizione dell'indicatore nella funzione e se non deve essere controllato, allora la condizione è soddisfatta. Restituisce TRUE.

 
Natalya Smirnova #:

Per favore, consigliatemi come scriverlo bene. Per non duplicare gli array di codice.
L'Expert Advisor usa 2 indicatori.
e le condizioni per l'apertura dell'ordine hanno questo aspetto ora:


Ma vorrei aggiungere il filtro
Utilizzare o non utilizzare 1 o 2 indicatori
Solo che non so come implementarlo più correttamente.
Sarebbe così:

Che potrei disabilitare 1 indicatore o il secondo indicatore nelle impostazioni.
Non riesco a capire come farlo senza copiare un sacco di codice.....

Ancora la variabile per la condizione d'uso e la variabile per il valore di uscita dell'indicatore dovrebbero essere variabili diverse.
E se le variabili per la condizione d'uso saranno ind_1 e ind_2, allora, per esempio, potreste fare così:

ind_1 = !(ind_1 && !(Indicator1>0));
ind_2 = !(ind_2 && !(Indicator2>0));
if (ind_1 && ind_2) { OrderSend... };
Per sicurezza: il punto esclamativo significa l'inversione del valore bool
 
Nikolai Semko #:

Ancora, la variabile per la condizione d'uso e la variabile per il valore di uscita dell'indicatore dovrebbero essere variabili diverse.
E se le variabili per la condizione d'uso saranno ind_1 e ind_2, allora, per esempio, possiamo fare così:

ind_1 = !(ind_1 && !(Indicator1>0));

l'abbondanza di parentesi e inversioni nell'espressione logica suggerisce che si potrebbe semplificare...

PS/ architettonicamente è una scoria in generale. Se le letture dell'indicatore possono essere raggruppate senza alcun fattore di trading (indipendentemente da dove hai aperto cosa), allora è un indicatore e non ha nulla a che fare con la logica di trading del robot. Deve essere reso e disponibile per l'analisi.

 
Maxim Kuznetsov #:

L'abbondanza di parentesi e inversioni nell'espressione logica suggerisce che può essere semplificata...

Forse.
Quali sono le opzioni per la logica ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Tranne !(a && !b)
Qualcuno può trovare una logica più breve...

 
Maxim Kuznetsov #:

PS/ Architettonicamente, è una scoria. Se le letture dell'indicatore possono essere raggruppate senza alcun fattore di trading (indipendentemente da dove hai aperto cosa), allora è un indicatore e non ha posto nella logica di trading di un robot. Deve essere reso e disponibile per l'analisi.

Non l'ho capito.
Sto solo rispondendo a una domanda. Non di più.
 
Nikolai Semko #:
Forse.
Quali sono le opzioni per la logica ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Tranne !(a && !b)
Qualcuno può trovare una logica più breve...

a || b

:)

 
PapaYozh #:

a || b

:)

Giusto.
Grazie :))
Divertente. Ho provato ad allegare XOR e ho dimenticato OR.

Quindi una versione più breve:
ind_1 = !ind_1 || Indicator1>0;
ind_2 = !ind_2 || Indicator2>0;
if (ind_1 && ind_2) { OrderSend... };
o versione a linea singola con ind_1 e ind_2 originali conservati

if ((!ind_1 || Indicator1>0) && (!ind_2 || Indicator2>0)) { OrderSend... };