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

 
DhP:

Qual è la differenza tra double tmp e NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)?

Moltiplicandoli sarà sempre maggiore di zero.

Penso di si))

(-) * (-) = +

(+) * (+) = +


а.... hai assolutamente ragione... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - qui dovremmo mettere "i" invece di 0 - l'ho cambiato, ma ancora non ha iniziato a fare accordi....

il codice ora assomiglia a questo:

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

ma ancora non funziona

 
CLAIN:


а.... hai assolutamente ragione... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - l'ho cambiato, ma non ha mai iniziato a fare accordi....

Il codice ora assomiglia a questo:

ma ancora non funziona.

Questo cambia vero in falso?

La funzione cambia il valore di uscita?

 
CLAIN:


а.... hai assolutamente ragione... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - qui dovremmo mettere "i" invece di 0 - l'ho cambiato, ma ancora non ha iniziato a fare accordi....

il codice ora assomiglia a questo:

ma ancora non funziona


Usate "Print", leggete i log e confrontate "ciò che è" con "ciò che ci si aspetta".
 

La funzione non cambia i valori.... Almeno questo è il mio giudizio, perché i commerci non hanno mai iniziato ad aprirsi.

come si usa la stampa?

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          Print(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
          break; 
       }        
    } 
    return(signal_MACD);
  } 

Ho solo questa versione, ma qualcosa mi dice che è anche sbagliata....

 
CLAIN:

La funzione non cambia i valori.... Almeno questo è il mio giudizio, perché i commerci non hanno mai iniziato ad aprirsi.

come si usa la stampa?

Ho solo questa versione, ma qualcosa mi dice che è anche sbagliata....


Print("iMACD(",Symbol(),",",TF,",",fast_ema,",",slow_ema,",",signal_period,",",PRICE_CLOSE,",",MODE_MAIN,",",i,",",")*",tmp,"=",iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
 
MaxZ:

Se tutte le variabili sono dichiarate, non vedo errori nella sintassi di MQL4...

Qual è il problema?

Grazie.

Facendo un calcolo di rollback per il mio EA. Ho visto che i calcoli erano imprecisi, quindi ho esaminato i blocchi che possono contenere errori.

 


Ciao.

Aiutatemi a capire
Sto scrivendo un EA e non riesco a capire gli ordini.
Sto facendo degli ordini:
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red);
Alert (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_ 2,3,sl_sell,tp_sell_d_2,"",3,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red);
Alert (GetLastError());

Se il primo take profit viene attivato, cancella gli altri ordini.
Se il primo non è scattato e il secondo take profit è scattato, cambiate lotto_3 e lotto_4 per il terzo e quarto take profit.

 
sergey_r:


Ciao.

Aiutami.
Sto scrivendo un EA e non riesco a capire gli ordini.
Sto mettendo degli ordini:
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red);
Avviso (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red);
Avviso (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_ 2,3,sl_sell,tp_sell_d_2,"",3,0,Red);
Avviso (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red);
Avviso (GetLastError());
Ho bisogno di:
Se il primo take profit viene attivato, cancella gli ordini rimanenti.
Se il primo non è scattato, e il secondo take profit è scattato, cambiate lotto_3 e lotto_4 per il terzo e il quarto.


Che cosa è venuto prima - utilizzare la funzione da questa pagina del forum - restituisce la bandiera per chiudere l'ordine a prendere profitto. Prima di questo, a seconda dei vostri (diversi) volumi d'ordine - impostate ognuno di loro un diverso magic_number, cioè lotto - magic 1, lotto1 - magic 2 ecc. Poi si controlla se l'ordine con magic 1 ha chiuso a take value usando questa funzione e se è così si "rimuovono gli altri". E poi dal codice si controlla anche il secondo ordine con il numero magico 2 - se è Ok, allora si modificano il terzo e il quarto ordine (cambiando i loro volumi)... e quando si impostano gli ordini pendenti e li si modifica è meglio ricordarsi di controllare le tolleranze minime e tutto il resto... Come questo...
 

Non capisco come usare le funzioni. Potresti descrivere come fare?

Qui ho fatto questi ordini. Poi inserisco la funzione da quella pagina. O come? Descrivi un esempio di come fare questo. Per favore.

 
sergey_r:

Non capisco come usare le funzioni. Potresti descrivere come fare?

Qui ho fatto questi ordini. Poi inserisco la funzione da quella pagina. O come? Descrivi un esempio di come fare questo. Per favore.



L'ordine di lavorare con f-mi - queste sono cose basilari, attorno alle quali ruota tutto... Smontalo, vedi esempi di gufi (in un codice competente), si possono trovare in codebase - smonta questo esempio di gufo e usalo come base per il tuo... È una base, non puoi farne a meno. Io stesso ho messo il gufo basato su questo esempio nel codebase.

Prendetevela comoda, prendetevi il vostro tempo - risolvete la cosa.

Motivazione: