[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 78

 
goldtrader >> :

La condizione sotto la prima dichiarazione condizionale if si applica solo alla dichiarazione successiva ad essa (la riga successiva).

Gli altri vengono giustiziati A MENO CHE. Cioè, anche se non c'è un comando per chiudere un ordine, uno dei suoni funzionerà.

Il modo corretto è questo:

Il fatto è che entrambi i playsound funzionano - PlaySound("timeout.wav") funziona, dopo di esso PlaySound("money.wav"), l'affare si chiude normalmente, ma prima della sua chiusura c'è un errore di playsound e questa cosa funziona solo per affari brevi, per affari lunghi tutto è normale - PlaySound("money.wav") se chiuso e PlaySound("timeout.wav") se errore, stesso design per i trade lunghi e corti. Proverò a mettere le parentesi come hai descritto, non so se ci sta))


 
Dimoncheg >> :

... >> Proverò le parentesi come hai descritto tu, non so se è questo).

È difficile ottenere un risultato positivo con questo approccio.

 
goldtrader >> :

Con un tale approccio è difficile ottenere un risultato positivo.

Sono profondamente convinto che il risultato non dipende dal modo in cui il testo è presentato sul forum)) Almeno io non mi includo nell'intellighenzia, ma sono stronzate tutte fuori tema)).

Ho fatto delle parentesi per l'invio degli ordini, la stessa cosa, prima un suono di errore poi un suono di chiusura. Per quelli lunghi tutto va bene come prima. Quindi tutto funziona naturalmente, solo recentemente ho inserito una funzione per vedere che tipo di errori, ecco perché questo suono è apparso prima del suono di chiusura, e prima non l'ho notato, naturalmente - tutto funziona

 

OK, solo per riferimento. Il comando PlaySound() non aspetta che il suono precedente finisca, ma semplicemente lo interrompe e inizia il proprio suono. In un ciclo veloce, i suoni intermedi possono essere assorbiti.

 
Roger >> :

OK, solo per riferimento. Il comando PlaySound() non aspetta che il suono precedente finisca, ma semplicemente lo interrompe e inizia il proprio suono. In un ciclo veloce, i suoni intermedi possono essere assorbiti.

Se fosse solo nel suono, l'errore "Nessun errore" salta fuori nel registro per qualsiasi chiusura di scambi brevi, 3 scambi sono chiusi - 3 errori, ecc, ma dopo che tutto è chiuso e il registro è prescritto chiusura, per gli scambi lunghi, tutto è normale e i suoni funzionano come previsto, e l'errore non è prescritto, ho messo un slittamento per 3 secondi e 5 secondi, tutto lo stesso, solo con il ritardo appropriato

 
Puoi darmi un suggerimento? C'è una variabile, che dovrebbe essere calcolata per ogni barra individualmente cioè [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ ma quello che ho è che per tutte le barre della storia viene applicato l'ultimo valore calcolato......... se l'ultimo 1, allora [i+1]=1, [i+2]=1, [i+3]=1 e se l'ultimo 2, [i+1]=2, [i+2]=2, [i+3]=2 rispettivamente....
 
Dimoncheg писал(а) >>

Se solo nel suono era la questione, l'errore "Nessun errore" si apre nel registro a qualsiasi chiusura brevi mestieri, 3 mestieri sono chiusi - 3 errori, ecc, ma dopo che tutto è chiuso e il registro prescritto chiusura, per i mestieri lunghi sono bene, e il suono funziona come previsto, e l'errore non è prescritto, inserito uno slittamento per 3 secondi e 5 secondi, tutto lo stesso, ma con il ritardo appropriato

Sai, ho avuto una cosa simile, ho lottato, ho messo dei ritardi, nessun progresso. Poi ho controllato se l'ordine è stato chiuso da

if(OrderCloseTime()!=0)

Tutti i miei problemi sono scomparsi all'istante. Provate.

 
RocketTrend писал(а) >>
Puoi darmi un suggerimento, per favore. C'è una variabile, che dovrebbe essere calcolata per ogni barra individualmente cioè [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ ma quello che ho è che l'ultimo valore calcolato è applicato a tutte le barre sulla storia......... se ultimo 1, allora [i+1]=1, [i+2]=1, [i+3]=1 e se ultimo 2, [i+1]=2, [i+2]=2, [i+3]=2 rispettivamente....

È così difficile da dire, postare quel pezzo di codice per intero.

 
Reshetov >> :

Se avete bisogno di fare il debug, usate Print()

Ma nella maggior parte dei casi non ne avete bisogno.


Beh, io sono di un'altra opinione. Sto scrivendo un Expert Advisor ora, e sto avendo un sacco di problemi senza un debugger adeguato. Soprattutto con gli array di dati.

Per essere sicuro che l'algoritmo funzioni correttamente, ho bisogno di analizzare i dati ottenuti durante il calcolo degli indicatori. E non c'è solo una matrice.

Non c'è nessun altro strumento disponibile oltre a Print(), Comment(), Alert()?

 
Reshetov >> :


Che diavolo è questo? A cosa serve OrderSelect()?


Nel resto è difficile da capire, perché il codice è disposto senza rientri e non si possono seguire le parentesi - non voglio rovinarmi la vista.

Ok, saltiamo le stronzate e non roviniamoci la vista.

/---- parametri di ingresso
extern int PerRSI=8;
extern int MagicNamber=77771;
extern double Lots=1.0;
//+------------------------------------------------------------------+
int start()
{
int
tipo, // tipo di ordine
cnt, // indice dell'ordine
ticket, // numero di identificazione dell'ordine
totale; // numero di ordini già aperti
doppio
rsi_0, // Valore. rsi_0 corrente
rsi_1; // Valore. rsi_1 1a barra

rsi_0=iRSI (NULL, 0, PerRSI, 0, 0); // Barra corrente
rsi_1=iRSI (NULL, 0, e PerRSI,0, 1); // Barra corrente più 1

if(rsi_0 < rsi_1 && rsi_1 < 30) // se la linea ha attraversato 30

ticket=OrderSend (Symbol(), OP_BUY,Lots, Ask, 3, 0, 0, 0, "My RSI", MagicNamber, 0, Green);

OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);


if(rsi_0 > rsi_1 && rsi_1 > 60) // se la linea ha superato il 70

OrderClose(ticket, OrderLots(), Bid, 3, Violet ); // chiude la posizione

return(0); // uscire

}

perché lo scoop compra e non si chiude, nessun errore quando si commette

Motivazione: