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

 
rapid_minus:

Beh, sono completamente confuso: OrdBuy_1( ) è la funzione che apre BAY alle condizioni #1 sopra questa funzione. Solo che probabilmente il tipo corretto è double piuttosto che int, perché restituisce il prezzo di apertura dell'ordine. E per quanto ho capito, non l'ho inserito in nessuna funzione; è posto separatamente, dopo int start(), estraendo i valori di tutti gli indicatori necessari e analizzando la situazione attuale del mercato (mi sbaglio?).

E come faccio a normalizzare lo stop e la ripresa, o meglio ancora, come faccio a non impostarli affatto?

E non capisco l'assegno. Devo aver capito male il tutorial - "bool OrderClose (int ticket, double lots, double price, int slippage, color Color=CLR_NONE)Funzione per chiudere un ordine a mercato". Cos'è un assegno?

Comunque, più si va avanti, più si diventa stupidi :(.

Perché pensate che questo sia corretto?

//Локальная переменная, открывающая ордер БАЙ
   int OrdBuy_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));

Hai scritto - variabile. Ma due parentesi significano che siete stati voi a dichiarare la funzione. All'interno di un'altra funzione. E quello che segue non è la sua descrizione, ma la sua assegnazione.

E se dite che deve restituire il prezzo di apertura, perché lo confrontate con la verità?

if (OrdBuy_1()==true)                              //Если был открыт ордер №1, то...

In realtà OrderSend() restituisce il numero di ticket della posizione aperta in caso di successo. Altrimenti -1 in caso di errore. Per scoprire qual è l'errore, è necessario guardare il contenuto dell'ultimo errore GetLastError () e, se possibile, gestire il codice di errore restituito dal server commerciale (questo è quello di cui parlavo).

Si controlla il numero del biglietto per "vero". E questo è 0 (falso) o qualsiasi valore diverso da zero (vero). In caso di errore OrderSend() restituirà -1, che è vero, e poi?

 
artmedia70:
Calcola la linea virtuale invece della linea reale.

Già iniziato. Il problema è come capovolgere l'indicizzazione delle barre in modo che l'indice più grande sia a destra (per calcolare la geometria della linea di tendenza)

Girato in questo modo, ma come confrontarlo con un ciclo di calcolo dell'indicatore. Forse c'è qualche altro modo più tecnico per invertire l'indicizzazione?

for(i=limit;i>=0;i--)
   {
   Bar[i]=Bar[i+1]+1;
   }
 
Forexman77:

Già iniziato. Il problema è come capovolgere l'indicizzazione delle barre in modo che l'indice più grande sia a destra (per calcolare la geometria della linea di tendenza)

Girato in questo modo, ma come confrontarlo con un ciclo di calcolo dell'indicatore. Forse c'è qualche altro modo più tecnico per invertire l'indicizzazione?

Perché? Usa la barra e il prezzo dei due punti della linea per ottenere il prezzo della barra da calcolare:

double EquationDirect(double x1, double y1, double x2, double y2, double x) {return((x2==x1)?y1:(y2-y1)/(x2-x1)*(x-x1)+y1);}

x1 è la barra del primo punto della linea, y1 è il prezzo del primo punto della linea, x2 e y2 sono la barra/prezzo del secondo punto della linea, x è il numero della barra su cui volete il prezzo.

 
artmedia70:

Perché? Usa la barra e il prezzo dei due punti della linea per ottenere il prezzo della barra da calcolare:

x1 è la barra del primo punto della linea, y1 è il prezzo del primo punto della linea, x2 e y2 sono la barra/prezzo del secondo punto della linea, x è il numero della barra a cui vuoi il prezzo.

Ok. Grazie.
 
Si prega di consigliare come chiudere tutte le posizioni per il giorno successivo alle 23.00, nessun problema durante il giorno (se (Hour_curr>= tempo necessario), ma ho un problema con lo spostamento dopo le 00.00. Grazie mille.
 
aleks_pavlenko:
Si prega di consigliare come chiudere tutte le posizioni per il giorno successivo alle 23.00, nessun problema durante il giorno (se (Hour_curr>= tempo necessario), ma ho un problema con lo spostamento delle posizioni dopo le 00.00. Grazie in anticipo.
Se il giorno di apertura della posizione non è uguale al giorno in cui deve essere chiusa.
 
artmedia70:
Se il giorno di apertura della posizione non è uguale al giorno di chiusura.
Giusto, il giorno di apertura non è uguale al giorno di chiusura, come implementarlo in mq4.
 

Non capisco come qualsiasi parte del codice (per esempio la descrizione e il calcolo delle variabili globali) possa essere trasformata in un file include?

Come viene assegnata l'estensione mgh al file?

Il file include riduce la dimensione dell'Expert Advisor?

Grazie.

 
rapid_minus:

Non capisco come qualsiasi parte del codice (per esempio la descrizione e il calcolo delle variabili globali) possa essere trasformata in un file include?

Come viene assegnata l'estensione mgh al file?

Il file include riduce la dimensione dell'Expert Advisor?

Grazie.

Un normale .mq4 può essere incluso, non deve essere .mqh, non c'è nemmeno bisogno di compilarlo. Il file include differisce per la mancanza delle funzioni speciali OnInit(), OnDeinit(), OnTick, ecc.

Non c'è alcun effetto sulla dimensione del file, sia che si tratti di codice inlined o di tutto il codice in un unico pezzo, il codice inlined è incluso nel codice eseguibile finale.

 
evillive:

Un normale file .mq4 può essere incluso, non deve essere .mqh, non c'è nemmeno bisogno di compilarlo. Il file incluso differisce per l'assenza delle funzioni speciali OnInit(), OnDeinit(), OnTick, ecc.

Non ha effetto sulla dimensione del file di inclusione, se l'intero codice è incluso in un unico pezzo, il codice dell'inline è incluso nell'eseguibile finale.

Ho capito bene - scriviamo un pezzo di codice senza funzioni init(), start() e così via, lo salviamo come file .mqh ed è tutto? Possiamo metterlo in terminal_directory\experts\include e sarà chiamato ed eseguito senza problemi?

Grazie.

Motivazione: