[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 105

 
abolk:
guarda qui: https: //docs.mql4.com/ru/basis/operations/math
Ho guardato tutto, come posso risolvere il mio problema?
 
Zhunko:
Puoi fare anche questo.

non sarebbe b uguale a uno?

Ho controllato, uno.

 
artmedia70:
Creare bandiere, ad esempio

Per TP1 - bool TP1, per TP2 - bool TP2, ecc.

Inizialmente i loro valori sono falsi.

Prima della prossima chiusura, fai un controllo:

if (!TP1) {codice per la chiusura parziale della prima parte, dopo la chiusura riuscita scrivere TP1=true}

if (!TP2) {codice per chiudere parzialmente la seconda parte, dopo una chiusura riuscita scrivere TP2=true}

... e così via per tutte le parti...

Così le bandiere segnaleranno che ogni parte è già stata chiusa una volta...


Grazie! Rielaborato il codice... TP0==false l'ho messo all'inizio del programma.

Il problema rimane: La prima parte si chiude e inizia immediatamente a chiudere la seconda :-( ..., con errore 131 per la seconda, comprensibile - dimensione del lotto diversa) Ma un'altra sfumatura è che per la prima parte ""Alert ("Closed ",Lot," Lot Buy ",Ticket);"" non scrive nel log, cioè non raggiunge la verifica Ans==true. Perché???? Qui sotto c'è un pezzo di codice...

Grazie in anticipo!

while(true) // Chiudere il ciclo dell'orda.
{
if (TP0==false && (Cls_B0==true ||Cls_S0==true))

{
LotC=MathRound(Lot/4/Step)*Step;
Alert("Lot-",Lot, "Attempting to close-",LotC," Lot Buy ",Ticket,. In attesa di risposta...");

RefreshRates(); // Aggiorna i dati
Ans=OrderClose(Ticket,LotC,Bid,5); // TicketClose Compra 1/3 lotti?
if (Ans==true) // Ha funzionato :)
{
TP0=true;
Alert ("Closed ",Lot," Lot Buy ",Ticket);
break; // Uscita dal ciclo chiuso
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continue; // Riprova
return; // Uscita da start()
}

 
Sinichka:

Cari programmatori!

Aiuto, per favore. L'indicatore disegna valori su una divergenza latente rialzista, e non disegna una latente ribassista.... Scrive che l'errore 4002 - indice della matrice - fuori portata.

Mi sembra di aver sistemato tutto... Mi ci è voluta un'intera serata... Ed è un peccato - il codice è il più semplice... Ma sta disegnando tori con frecce, ma non orsi... PER FAVORE! Qual è l'errore in?????????????????????


Alena,

È necessario allocare la memoria per gli array vpadcci[], v[], hh[], ss[]. Sono dichiarati come dinamici, ma la loro dimensione non è specificata da nessuna parte. La dimensione di un array dinamico è specificata utilizzando la funzione ArrayResize().

P.S. E per favore usa il tasto SRC per inserire il codice

 
Snaf:
Domanda per MT5. Come posso sapere che lo Strategy Tester ha completato il suo lavoro? Oltre che visivamente :)

La funzione deinit() viene eseguita quando il lavoro è completato. Di conseguenza, se ci arriviamo, significa che il lavoro dell'esperto è finito. Per determinare se il lavoro nel tester è in corso, usate la funzione IsTesting().


Scusa, ho notato che questa domanda è relativa a MT5.

È lo stesso lì, solo OnDeinit() e MQL5InfoInteger(MQL5_TESTING).

 
alsu:

Alena,

È necessario allocare la memoria per gli array vpadcci[], v[], hh[], ss[]. Sono dichiarati come dinamici, ma la loro dimensione non è specificata da nessuna parte. La dimensione di un array dinamico è definita utilizzando la funzione ArrayResize().

P.S. E per favore usa il tasto SRC per inserire il codice


Grazie mille per la risposta, mi informerò!
 
eddy:

вопрос програмистам: как сделать число после запятой целым?:)

например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)

exnern double n=1,12
n-=MathFloor(n);          // 0.12 = 0.1200000..01 или 0.11999999..99
int n2=MathRound(n*1000); // 0.12 > 120 или 119
while(true)               // пока в конце 0 или 9
 if(n2%10<1)              // n2==хз*10+0
    n2/=10; else          // убираем 0
 if(n2%10==9)             // n2==хз*10+9
   {n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)
 else if(n2%10>0) break;
Ecco come l'ho risolto. Un meno - non puoi ottenere un numero se finisce in 0 o 9. Ma non ne ho bisogno, inserisco solo il periodo di calcolo (4,8,12,16,24,36,48 ecc.)
 

Si prega di consigliare come registrare correttamente che l'indicatore VininI LRMA color.mq4 https://www.mql5.com/ru/code/8200 è cambiato.

Se usate double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift). Non riesco a capirlo. Ho scritto iCustom(NULL,0, "VininI_LRMA_color",55,0,1) e non so cosa farci))

 

I valori delle linee sono nei buffer indicatori 1 (verde) e 2 (rosso). Quando una linea verde è disegnata sul grafico, la variabile up sulla barra 1 ha il valore di questa linea, e la variabile dn=EMPTY_VALUE e viceversa. EMPTY_VALUE è un valore di buffer vuoto, il suo valore numerico è 2147483647.
Potete poi usare questi valori come volete.

double up=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,1,1); 
double dn=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,2,1); 
 
Poseidon:
Possiamo creare un EA che chiude tutti gli ordini quando scatta il take-profit dell'ultimo ordine aperto?
Sono solo un principiante e non so come fare. Puoi farlo per me, se non ti dispiace?
Motivazione: