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

 

Perché gli ordini non si aprono!

Per favore, ditemi perché questo codice non funziona.

Ho scelto specificamente un periodo del grafico nel 2000 (quando il quinto segno era 0 ovunque) in cui c'è una candela aperta a un prezzo che ricorre tra i valori dell'array.

Secondo la mia idea - alla loro apertura dovrebbe scattare un ordine - ma non succede ......P O M U ????


int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 double massiv [4]={0.85370,0.85690,    0.85970 ,0.86170};//объявление и инициализация массива


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv[4],  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}
 
solnce600:

Ci sono 100 valori con una virgola dopo il primo carattere (cioè il prezzo)

Evidenziare una linea

Home - trovare e sostituire

Cambiare tutte le virgole in punti - successo.

Ora ho bisogno di mettere delle virgole tra i valori

Ora fai come segue: File - Save as - seleziona il tipo di file CSV (delimitatori - virgole). Salva. Come output abbiamo un file di testo del formato necessario...

 
solnce600:

Perché gli ordini non si aprono!

Per favore, ditemi perché questo codice non funziona.

Ho scelto specificamente un periodo del grafico nel 2000 (quando il quinto segno era 0 ovunque) in cui c'è una candela aperta a un prezzo che ricorre tra i valori dell'array.

Nella mia mente - al loro ordine di apertura dovrebbe funzionare - ma non succede ......P O M U????



int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение

Massiv[4] significa il 4° elemento dell'array massiv, ho bisogno di passare un array nella funzione, per fare una ricerca...

 
alsu:

Ora: File - Salva con nome - seleziona il tipo di file CSV (delimitatori virgola). Salva. Abbiamo in uscita un file di testo del formato necessario...



Ho capito, grazie mille. Potresti dirmi perché la mia funzione non funziona (post sopra).

Grazie mille. Se imparerò a programmare...... sarà grazie a te.....!

 
solnce600:

Perché gli ordini non si aprono!

Per favore, ditemi perché questo codice non funziona.

Ho scelto specificamente un periodo del grafico nel 2000 (quando il quinto segno era 0 ovunque) in cui c'è una candela aperta a un prezzo che ricorre tra i valori dell'array.

Nella mia idea - al loro ordine di apertura dovrebbe funzionare - ma non succede ......P O M U ????


Sarebbe anche bello se quando si confrontano numeri doppi, si potesse scrivere

 if (Bid == massiv[S])

come questo:

 if (NormalizeDouble (Bid-massiv[S],Digits)==0)
 
alsu:

massiv[4] si riferisce al 4° elemento dell'array massiv, ed è necessario passare l'array stesso nella funzione per fare una ricerca...

Capito, grazie mille.
 
solnce600:

Perché gli ordini non si aprono!

Per favore, ditemi perché questo codice non funziona.

Ho scelto specificamente un periodo del grafico nel 2000 (quando il quinto segno era 0 ovunque) in cui c'è una candela aperta a un prezzo che ricorre tra i valori dell'array.

Secondo la mia idea - al loro ordine di apertura dovrebbe funzionare - ma non succede ......P O M U ????

È già ora di passare al metodo "adulto"!!! - Sperimentate con il vostro codice per ottenere risultati.

Suggerimento: abituatevi a confrontare le variabili attraverso la normalizzazione delle loro differenze:

    double ld_Delta = 10. * Point;
    if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)// и данная цена есть цена открытия нового бара
    {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}//открыть ордер       

e per l'esperimento che ho menzionato, "giocare" con ld_Delta.

 
solnce600:

Ho capito, grazie mille. Potresti dirmi perché la mia funzione non funziona (post sopra)?

Grazie mille. Se imparerò a programmare...... sarà grazie a te.....!


Se impari, sarà grazie alla tua diligenza e al tuo duro lavoro. Il mio ruolo è molto modesto, e gli obiettivi egoistici (aiutare, allenare la propria capacità di trovare rapidamente bug ed errori, il che riduce il proprio tempo speso per la programmazione, e allo stesso tempo mantiene il mio cervello tonico. Inoltre, cosa succede se qualche idea di valore sfugge? Lo ruberò:)))
 
incluide
alsu:

Se impari, è grazie alla tua diligenza e al tuo duro lavoro. Il mio ruolo è molto modesto, e l'obiettivo è l'autoservizio (aiutare l'utente, allenare la propria capacità di trovare rapidamente bug ed errori, il che riduce il proprio tempo dedicato alla programmazione, e allo stesso tempo mantiene il mio cervello tonico. Inoltre, cosa succede se qualche idea di valore sfugge? Lo ruberò:)))

Può volerci molto tempo per trovare da soli la risposta a una domanda (perché non si sa da che parte guardare).

Altri consigli?

Voglio dichiarare e inizializzare un array in un file include.

Chiamato il mago.

Chose - Bibliotek funzioni.

Assegnato un nome.

Ho pulito tutto e ho dichiarato e inizializzato l'array.

Ho salvato il file nella cartella incluide con l'estensione mq4 invece di mqh.

Ho inserito una linea per chiamare il file e ho specificato l'estensione mqh nel codice.

Ma il compilatore dà un errore

'UYTR.mqh' - impossibile aprire il file di programma C:\File di programma\Alpari NZ MT4(2)\experts\hhhh.mq4 (12, 2)

int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 #include <UYTR.mqh> 


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}

Probabilmente, è una differenza di estensione tra il file nella chiamata al codice e il file nella cartella incluide.

Per favore, consigliatemi cosa fare in questa situazione.

Grazie.

 
solnce600:
incluide

Può volerci molto tempo per trovare da soli la risposta a una domanda (perché non si sa da che parte guardare).

Altri consigli?

Voglio dichiarare e inizializzare un array in un file include.

Chiamato il mago.

Chose - Bibliotek funzioni.

Assegnato un nome.

Rimosso tutto e dichiarato e inizializzato l'array.

Ho salvato il file nella cartella incluide con l'estensione mq4 invece di mqh.

Ho inserito una linea per chiamare il file e ho specificato l'estensione mqh nel codice.

Ma il compilatore continua a bloccarsi.

'UYTR.mqh' - impossibile aprire il file di programma C:\File di programma\Alpari NZ MT4(2)\experts\hhhh.mq4 (12, 2)

Probabilmente la differenza di estensione tra il file in code call e quello nella cartella incluide.

Per favore, consigliatemi cosa fare in questa situazione.

Grazie.


Se state usando la procedura guidata, potete creare direttamente un file include, che sarà salvato con estensione mqh nella cartella include. Dopo questo, potete aggiungerlo in qualsiasi programma con #include <>.


che è
non selezionare - bibliotek di funzioni,
un file di intestazione MQH
Motivazione: