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

 
evillive:
Colpa mia, mi farò perdonare.
Va bene, succede! Ma non si può vedere la fortuna senza errori! ;)
 
CJIeCaPb:

Ahh, l'ho indicato male, sì).

Ricontrollato separatamente. Solo il biglietto di vendita era sbagliato. Controllato anche il resto: ordini, confronti, modifiche. Ma ho ancora un torpore dopo aver piazzato gli ordini. Tutto ha funzionato bene da solo.

*Condizioni per inserire if(MA=MA1), è sbagliato? Perché =, non è un segno di condizione, il segno corretto è "==", ma se l'ho scritto così l'Expert Advisor non fa proprio niente. Le altre varianti: ">=", "<=", "<", ">" che e "=" portano a piazzare ordini e a un ulteriore torpore.

Sicuramente non è vero, anche se il compilatore lo correggerà, ma chi sa se lo correggerà o no? Forse sostituirà == o !=, o forse non lo sistemerà affatto ma semplicemente ignorerà il controllo e lo imposterà sempre a true.

Compila il codice con #property strict, c'è molto altro da sistemare.

Se devi controllare un crossover di 2 MA, non è controllato dall'uguaglianza. Il criterio deve essere qualcosa come "se MA1(2)<MA(2) e MA1(1)>MA(1) - allora la seconda MA ha incrociato la prima al rialzo sulla candela precedente". E l'uguaglianza può aspettare un anno.

E cosa pensate che sia while(true)?

Più in là:

 //+------------------------------------------------------------------06-----------------------------------------------

//Buy

while(OrderType()==1)//Buy (а вот нифига, бай = 0)

и чуть ниже
//--------------------------------------------------------------------------
//Sell
while(OrderType()==2) //опять же, селл = 1
 

Come organizzare un arraydi tipo int con 1 miliardo di valori e poi ordinarlo? Per favore, mi faccia un esempio.

Finora, con i mezzi standard di MQL4 posso organizzare un array di numeri int con solo 2 milioni di valori.

 
solandr:

Come organizzare un array di tipo int con 1 miliardo di valori e poi ordinarlo? Per favore, mi faccia un esempio.

Finora, con i mezzi standard di MQL4 posso organizzare un array di numeri int con solo 2 milioni di valori.

È una buona idea. Calcola la dimensione della memoria necessaria
 
Vinin:
Buon augurio. Calcola la quantità di memoria necessaria
Il problema è chiaro. Ma come risolvere il problema? Ci sono altri modi oltre a quello di creare direttamente un array? Cioè, come ordinare 1 miliardo di valori? O è impossibile pensare a una soluzione in MQL4?
 
evillive:

Naturalmente non è corretto, anche se il compilatore lo correggerà, ma chi sa se è corretto o no? Oppure può sostituire == con != o non correggerlo affatto, ma semplicemente ignorare il controllo e impostarlo sempre su true.

Compila il codice con #property strict, ci sono un sacco di cose da sistemare.

Se hai bisogno di controllare il crossover di 2 MA, non è controllato dall'uguaglianza, il criterio deve essere qualcosa come "se MA1(2)<MA(2) e MA1(1)>MA(1) - allora la seconda MA ha incrociato la prima al rialzo sulla candela precedente". E l'uguaglianza può aspettare un anno.

E cosa pensate che sia while(true)?

Più in là:


while(true) - un ciclo in cui raccolgo la tendenza:

-se un ordine sfonda uno stop (Time>0) lo metto nello stesso posto dove era;

- se raggiunge un certo livello (NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<=NormalizeDouble(Ask,Digits)), allora va in un altro ciclo (dove la condizione è il tipo di ordine) dove il profitto è calcolato in punti e viene modificato in funzione di questo.

Per quanto riguarda la condizione ""Se MA1(2)<MA(2) e MA1(1)>MA(1) - la seconda MA ha attraversato la prima verso l'alto sulla candela precedente"". , i numeri tra parentesi significano candele? Ecco la mia variante MA>Open[0] || MA<Open[0], funzionerà?

#proprietà rigorosa prescritta, errori corretti.

Ho cambiato il modo di ottenere il profitto in punti: la differenza ottenuta tra il prezzo corrente e il prezzo aperto viene divisa per Punto (linea 217 e 271).

Ho fatto conversioni di tipo in linee: 218, 272, 369. È corretto?

Sono apparsi due errori:

possibile uso della variabile non inizializzata 'Prof' Test3.mq4 222 15

possibile uso della variabile non inizializzata 'Prof' Test3.mq4 275 15

File:
test3_6.mq4  15 kb
 

cari esperti....ho iniziato da poco a imparare le basi di mql4....ho una domanda per voi....diciamo che ho un indicatore principale e dei filtri....se una condizione sull'indi principale è soddisfatta, allora certe condizioni dai filtri dovrebbero coincidere con essa, ma se un'altra condizione è soddisfatta sull'indi principale, allora i filtri dovrebbero avere altre condizioni.......Ho bisogno di questo per aprire un trade...Posso usare il segno || in questa situazione o ancora non posso...qualsiasi risposta per favore spiega in un modo comprensibile come io sono ancora un pazzo...Rispettosamente!

 
kempo102938:

cari esperti....ho iniziato da poco a imparare le basi di mql4....ho una domanda per voi....diciamo che ho un indicatore principale e dei filtri....se una condizione sull'indi principale è soddisfatta, allora certe condizioni dai filtri dovrebbero coincidere con essa, ma se un'altra condizione è soddisfatta sull'indi principale, allora i filtri dovrebbero avere altre condizioni.......Ho bisogno di questo per aprire un trade...Posso usare il segno || in questa situazione o ancora non posso...qualsiasi risposta per favore spiega in un modo comprensibile come io sono ancora un pazzo...Rispettosamente!

Decidetevi. Vuoi un "AND" o un "OR".
 
Taak.... l'indicatore principale mostra le barre del grafico in 5 colori diversi (verde, blu, rosso, arancione, grigio). Vendi trade: l'indice principale mostra una barra grigia-->i filtri mostrano i loro segnali-->il trade è aperto. Se l'indy principale mostra la barra arancione--> i filtri mostrano altri segnali.... ecc. Come faccio a prescrivere correttamente nel codice in modo che i trade non si ripetano, perché ad ogni candela il colore dell' indi principale può saltare "avanti e indietro"... spero di aver spiegato bene il problema... Rispettosamente!
 
CJIeCaPb:

while(true) - un ciclo in cui raccolgo la tendenza:

E quando pensa che questo ciclo dovrebbe chiudersi?

if(R==0)
{
 while(true)
 {
  Sleep(30000);
  Alert("Ошибка!");
 }
}

?

CJIeCaPb:

Sulla condizione ""Se MA1(2)<MA(2) e MA1(1)>MA(1) - la seconda MA ha attraversato la prima MA verso l'alto sulla candela precedente"". , i numeri tra parentesi significano candele? Ecco la mia variante MA>Open[0] || MA<Open[0], andrà bene?

Sì, il numero della candela tra parentesi è la candela per la quale viene preso il valore della MA. Sì, lo farà con il prezzo di apertura.

CJIeCaPb:

Ho cambiato il metodo per ottenere il profitto in punti: la differenza ottenuta tra il prezzo corrente e il prezzo aperto viene divisa per Punto (linea 217 e 271).

Ho fatto conversioni di tipo in linee: 218, 272, 369. È corretto?

La variabile Profit (da dichiarare come intero) è sufficiente per calcolare il profitto in pip, le altre due sono ridondanti:

 if(NormalizeDouble(Ask,Digits) <= NormalizeDouble(OrderOpenPrice(),Digits))
 {
  Profit = (int)((NormalizeDouble(OrderOpenPrice(),Digits)-NormalizeDouble(Ask,Digits))/Point);

  Profo = Profit/Point;
   Prof= (int)Profo;
 }
   
 if(OldProfit>Prof  Profit )
  continue;
 else
  OldProfit=Prof  Profit ; //ну и так далее, где профит считается

E ci sono un sacco di strascichi di stoploss in kodobase, perché dovrei inventare un lissapet con ruote rettangolari?

Motivazione: