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

 
lottamer:

Ciao membri del forum,

Ho deciso di scrivere un EA per me stesso. Sto leggendo un tutorial su mql4 perché faccio trading con MT4. Ed ecco la cosa interessante: i file mqh scaricati da questo tutorial si aprono (automaticamente) in MetaEditor 5 (ho anche Mt5 installato)! Significa che non funzioneranno con Mt4?


Provate a compilarlo e lo scoprirete.
 
rigonich:


Questa non è una funzione, ma un modo di confrontare numeri non normalizzati. Non possono essere confrontati tra loro, ma il risultato della sottrazione di uno dall'altro può essere confrontato con zero.

E il mio assegno è così:

Dici bene, ma lo fai "a modo tuo"... Ed è più letterato (dopo tutto):

//+------------------------------------------------------------------+ 
 double ND(double nd){return(NormalizeDouble(nd,Digits));}
//+------------------------------------------------------------------+ 
if (ND (price - OrderOpenPrice()) != 0.0 || ND (SL - OrderStopLoss()) != 0.0 || ND (TP - OrderTakeProfit()) != 0.0 || Expiration != OrderExpiration())
{OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE);}

...anche se non sono d'accordo con tutte le condizioni di confronto. Potete leggere le condizioni qui.

 
rigonich:

Provate a compilare e lo scoprirete.

sì...devi solo aprire questi file mqh con 4Editor...
 
Desead:

Necessità di normalizzare il grafico dei prezzi, qualsiasi coppia di valute di vostra scelta. Ne ho bisogno per un indicatore. Ho provato a dividere il valore attuale per quello precedente - ottengo una specie di oscillatore intorno a 1. Mi è venuta l'idea di convertire il grafico da valori assoluti a valori relativi, cioè in questo caso potrò vedere la variazione percentuale della quotazione. È stato implementato. È già meglio e praticamente ciò di cui abbiamo bisogno. Tuttavia, il mio desiderio finale è quello di normalizzare le citazioni nell'intervallo [0:1] .A proposito, ecco quello che mi serve ma in borghese - vorrei lo stesso in russo: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

Mi sono già stancato di lottare con questo. Non riesco a cancellare tutti gli ordini in sospeso normalmente, non riesco proprio a capire come funziona:

Ho anche aggiunto al ciclo FOR WHILE gli ordini cancellati sono ancora lì, ma non li ho ancora cancellati. Ho molti ordini pendenti da cancellare, cioè circa 20, forse è qualcosa di complicato?


Sembra che il problema della cancellazione degli ordini sia stato risolto. Uso una funzione separata per contare il numero di ordini "necessari" (da rimuovere), Total, chiamo questa funzione e while con una condizione (Total>0), poi il ciclo di rimozione per (int i=Total-1 ;i<=0l; i--), ancora f-tipo di"necessario", contatore di tentativi di rimozione con uscita dawhile quando il livello dato è raggiunto. In questo modo vengono cancellati tutti.
 
TarasBY:

Ecco un esempio di cancellazione degli ordini, compresi quelli in sospeso (ho cancellato con questo):

Non tutti gli ordini pendenti sono presenti nel tuo codice (nel filtro di selezione). Un'altra variante di errore: controlla il Magick ricevuto dagli ordini in sospeso quando si aprono (nel tuo codice).

Grazie per la vostra risposta. Non ho bisogno di tutti gli ordini pendenti, solo bylimit e selllimit e li imposto solo, il magik è lo stesso ovunque. Se non riesco a risolvere il problema con i miei sforzi, devo guardare i vostri script, non posso farlo altrimenti, semplicemente non lo cancella.

Quello che pensavo. Ho impostato la cancellazione di tutti i robot in sospeso in un solo posto - quando scarico il mio robot, sarà messo in deinit. Forse questa sezione ha un qualche limite di tempo? Quando cancello solo alcuni ordini, tutto va bene, ma quando scarico un'intera griglia, allora che diavolo succede, rimangono sempre una dozzina di ordini e non è un'opzione per pulirla manualmente.

 
rigonich:

Hurrah, sembra che io abbia risolto il problema della cancellazione degli ordini. Ho calcolato il numero di ordini "necessari" (da rimuovere) in una funzione separata, chiamata questa funzione, poi while con una condizione (Totale>0), poi il ciclo di rimozione for(int i=Totale-1 ;i<=0l; i--), di nuovo, la funzione di conteggio dei"necessari", contatore di tentativi di rimozione con l'uscita dawhile quando il livello specificato è raggiunto. In questo modo tutto viene cancellato.
A proposito, questa è una buona alternativa, lasciate che questo while continui a correre il suo ciclo fino alla fine del mondo, grazie, lo proverò subito.
 

è necessario inserire i termini AVERE un trade aperto (uno, senza major) in una riga, per esempio, con un crossover di medie.

ha trovato questo

==============================================

int start()

{

for(int i=0; i<OrdersTotal(); i++)

{

se ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav");

ritorno(0);

}}

==============================================

C'èuna posizione aperta ma nessun suono.

Puoi dirmi cosa c'è che non va?

O quanto sia facile scrivere la condizione:

SE MA 5 incrocia MA 10 e c'è una posizione aperta - chiudi quella posizione.

Questo sembra essere il punto in cui è necessario void....

 
lottamer:

Sì... devi solo aprire questi file mqh con 4Editor...

Se sono dal tutorial MQL4, saranno aperti da4thEditor. Mettili nella cartella includ o rinominali inmq4 e mettili nella cartella Expert, quella principale se è un EA, o nelle cartelle scripts o indicators rispettivamente, e aprili.
 
Desead:
Buona opzione a proposito, e lascia che questo mentre corre il suo ciclo fino alla fine del mondo finché non cancella gli ordini, grazie, lo proverò ora.


Ci vogliono 2,5 secondi per eseguirlo in mt4.
 
rigonich:

Ci vogliono 2,5 secondi per eseguirlo in mt 4.

Dannazione, questo è il mio problema. Mi chiedo come posso bypassarlo se ho solo bisogno di cancellare l'intera griglia quando scarico il robot... Non riesco a pensare a niente qui :(
Motivazione: