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

 

Ciao a tutti, aiutatemi a trovare un errore nel codice. Il punto è il seguente: tutti aperti, diciamo 6 di loro 4 a profitto, 2 a comprare (secondo lo screenshot). La chiusura è quando il profitto totale raggiunge 1,0 (secondo lo screenshot). 2 X 2 = 4 bloccati (sono chiusi con OrderCloseBy), 2 vendite sono chiuse con OrderClose.

L'errore è il seguente: gli ordini sovrapposti vengono chiusi usando OrderCloseBy ma il resto degli ordini non vengono chiusi affatto

Non voglio scavare nel codice, penso che l'errore sia qui.

linea 565 del codice - funzione per chiudere gli ordini

Linea di codice 92-100 - chiudere tutti gli altri ordini

linea 550 del codice - funzione per contare gli ordini aperti

Apprezzerei qualsiasi aiuto.


File:
 

alexey1979621, на mql5 ответил ;)

 
Shurkin:

Salve.

Quando si fa la tassellatura (terminale MT-4-670, Alt+R), le finestre del grafico sono collocate ogni volta in posti nuovi.

Potreste suggerire se è possibile fissarli in modo che la posizione sullo schermo di ogni specifico grafico sia costante?


MT-4-670, tutto va bene per me

I grafici di coppia si trovano sempre (in mosaico) come sono nelle schede in basso

In ordine di priorità:

| 1 | 3 | 5 |

| 2 | 4 | 6 |

 
GalaX:

MT-4-670, sto bene

I grafici di coppia sono sempre disposti (in mosaico) come sono nella parte inferiore delle schede

In ordine di priorità:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Ho sempre la finestra che era a schermo intero per prima, cambia la finestra attiva - anche l'ordine del mosaico cambia
 
GalaX:

MT-4-670, sto bene

I grafici di coppia sono sempre disposti (in mosaico) come sono nella parte inferiore delle schede

Per ordine di priorità:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Questa proprietà appare quando il pannello del grafico è acceso, quando è spento scompare e la finestra attiva viene messa per prima.

Non ho trovato nulla su questo nell'ultima versione dell'aiuto.

 
alexey1979621:

Ciao a tutti, aiutatemi a trovare un errore nel codice. Il punto è il seguente: totale aperto, diciamo 6 di loro 4 per guadagnare, 2 per comprare (secondo lo screenshot). La chiusura avviene quando il profitto totale, con Cajem in 1.0 (secondo lo screenshot). 2 X 2 = 4 bloccati (sono chiusi usandoOrderCloseBy), 2 sigilli sono chiusi usando OrderClose.

L'errore qui è il seguente: gli ordini sovrapposti vengono chiusi usando OrderCloseBy, ma gli ordini rimanenti non vengono chiusi affatto

Per evitare di scavare nel codice, penso che l'errore sia qui.

linea 565 del codice - funzione di chiusura degli ordini

linee 92-100 del codice - chiudere tutti gli altri ordini

linea 550 del codice - funzione per contare gli ordini aperti

Apprezzerei qualsiasi aiuto.


"Linea 92-100 del codice - chiudere tutti gli altri ordini" - il prezzo di chiusura dell'ordine è sbagliato.

In tutti i cicli con ricerca di ordini, è necessario cambiare la direzione della ricerca, per esempio, nel modo seguente

 for(t = OrdersTotal() - 1; t >= 0; t--)

E in ClosePos(), la quantità di ordini cambia considerevolmente dopo l'incrocio. Ci devono essere molti errori.

 

Accesso programmatico agli avvisi - quelli che sono disegnati con una freccia rossa sul lato destro e inviano messaggi a dove dovrebbero essere inviati quando il prezzo attraversa il livello desiderato, esiste???????

Ayyyyyyyyy

 

Aiuto per favore!!! Terzo giorno di puzzling!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0); //restituisce l'indice della barra per n periodi con prezzo minimo

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0); //restituisce l'indice della barra per n periodi con prezzo massimo

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z); //restituisce il valore del prezzo della barra con il prezzo più basso

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x); //restituisce il prezzo della barra con il prezzo più alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //restituisce il prezzo di chiusura dell'ultima barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

doppio Km1=(i/r);


ritorno(Km1);

In tempo reale lo script funziona!!! nello strategy tester ERROR! DIVIDI PER ZERO!!! La formula è la più semplice, ma non c'è modo di farla senza divisione. (formula stocastica). Come si può vedere nel codice e ho moltiplicato i valori per 10000 per escludere generalmente gli zeri! ancora un errore! PER FAVORE!!!

 
sponger:

Aiuto per favore!!! Terzo giorno di puzzling!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0); //restituisce l'indice della barra per n periodi con prezzo minimo

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0); //restituisce l'indice della barra per n periodi con prezzo massimo

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z); //restituisce il valore del prezzo della barra con il prezzo più basso

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x); //restituisce il prezzo della barra con il prezzo più alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //restituisce il prezzo di chiusura dell'ultima barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

doppio Km1=(i/r);


ritorno(Km1);

In tempo reale lo script funziona!!! nello strategy tester ERROR! DIVIDI PER ZERO!!! La formula è la più semplice ma non c'è modo di farla senza divisione. (formula stocastica). Come si può vedere nel codice e ho moltiplicato i valori per 10000 per escludere generalmente gli zeri! ancora un errore! PER FAVORE!!!

Non è una divisione?doppio Km1=(i/r);
 

borilunad:
А это не деление? double Km1=(i/r);   

lo è!!! Ma ne avete bisogno!!! formula stocastica%K = 100%-((Close - Minp)/(Maxp- Minp))

  • Chiudere - prezzo di chiusura attuale
  • Minp - minimo minimo per il periodo n
  • Maxp - massimo per il periodo n
  • Come posso farlo senza divisione?
Motivazione: