Autoapprendimento del linguaggio MQL5 da zero - pagina 23

 
Aliaksandr Hryshyn:

Sei partito con il piede sbagliato. Hai capito tutto nel codice? Tutti gli operatori, le parole chiave?

Controllare la domanda sul codice:

Cosa significano queste linee?

Questi erano i miei commenti sulla sceneggiatura:

/* Andando avanti. Dopo aver inviato le richieste al server commerciale, abbiamo bisogno di sapere se un ordine pendente è stato impostato
o no. Per fare questo, usiamo la funzione OrderSend che è progettata per
operazioni commerciali inviando richieste al server commerciale. Se l'invio di una richiesta a
fallisce (un punto esclamativo davanti a qualsiasi funzione indica un risultato negativo della sua esecuzione
), allora viene emesso un messaggio con un codice di errore nel seguente formato: "OrderSend error %d"
e GetLastError(). Cerchiamo di capire cos'è "OrderSend error %d" e cos'è GetLastError().
Notate che "OrderSend error %d" è tra virgolette. Questo significa che
stamperà il testo con la traduzione letterale "OrderSend error %d". Ora cerchiamo di capire cosa significa
%d. Nella sezione PrintFormat del MQL5 Reference, troviamo: "Se una stringa di formato è seguita da più parametri,
, questa stringa deve contenere specifiche di formato che definiscono il formato di uscita di questi parametri.
Una specifica di formato inizia sempre con un segno di percentuale (%)". Cos'è un d? Nella stessa sezione
appena sotto troviamo: "Tipo d - specifica il numero minimo di cifre da emettere. Se il numero di cifre in
è inferiore alla precisione specificata, il valore di uscita è riempito di zeri a sinistra.
Il valore di uscita non viene troncato se il numero di cifre da emettere è maggiore della precisione specificata. Con questo
abbiamo risolto, ora abbiamo bisogno di capire cos'è GetLastError(). Sempre guardando nel libro di riferimento: "GetLastError()
restituisce il contenuto della variabile di sistema _LastError, cioè la variabile in cui è memorizzato
il valore dell'ultimo errore che si è verificato durante l'esecuzione del programma mql5.

Saluti, Vladimir.

 
MrBrooklin:

Quindi non l'ho ancora capito e c'è del lavoro da fare.

Saluti, Vladimir.

Di nuovo, iniziate con la descrizione di ciò che fa il vostro codice. Questo script mette lo SL e il TP sulle posizioni. Dato che non sappiamo se ci sono, assumiamo che le posizioni ci siano, e ci sono entrambe (conto hedge). La condizione di collocare gli stop renderà sempre vero.... Quindi è così. Lavorare attraverso il codice fino alla fine. ))))

E cercate di capire ogni riga del codice. Fin dall'inizio.

 
Реter Konow:
Questa condizione non è affatto necessaria. Che ruolo ha? Puoi spiegare?

Volevo impostare una condizione nascosta per impostare gli ordini pendenti Buy Stop e Sell Stop.

Saluti, Vladimir.

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
MrBrooklin:

Controllato qualche altra volta - il compilatore non dà nulla.

Saluti, Vladimir.

E perché dovrebbe produrre qualcosa? Non conosci le macro, non sai come lavorarci, ma le usi, quindi ti aspetti qualche errore o almeno un avvertimento da loro. Se aveste lanciato almeno una volta il vostro script sulla demo e l'aveste eseguito in tutte le modalità, avreste visto che non funziona. Ma tu vai oltre. Si aggiunge uno stop-loss, un take-profit, e sulla riva si dice: "Fermate la macchina!

 
Valeriy Yastremskiy:

Di nuovo, iniziate a descrivere cosa fa il vostro codice. Questo script mette uno SL e un TP sulle posizioni che avete piazzato. Dato che non sappiamo se ci sono, supponiamo che ci siano delle posizioni, e ci sono entrambe (conto hedge). Condizione di collocamento delle fermate farà sempre vero.... Quindi è così. Lavorare attraverso il codice fino alla fine. ))))

E cercate di capire ogni riga del codice. Fin dall'inizio.

Grazie per il consiglio di controllare se ci sono posizioni aperte all'inizio.

Saluti, Vladimir.

 
MrBrooklin:

Volevo impostare una condizione nascosta per impostare gli ordini pendenti Buy Stop e Sell Stop.

Sinceramente, Vladimir.

Ditemi, scrivere una macro per questo, è l'unico modo per impostare una tale condizione? Le condizioni, se ho capito bene, sono impostate solo dalle macro? O è possibile farlo in un altro modo? E se c'è un altro modo, perché ha scelto questa macro? Ci sarà stata qualche necessità? Ma cos'era?

 
MrBrooklin:

Grazie per il consiglio di controllare se ci sono posizioni aperte prima.

Saluti, Vladimir.

Non provarci nemmeno adesso. È troppo presto per farlo. È troppo presto. Diventerai molliccio, ti stancherai e rinuncerai a tutto. Torna al libro di testo e ai problemi semplici.
 
Vasiliy Sokolov:

Scrivere una macro per questo è l'unico modo per impostare questa condizione? Da quanto ho capito, le condizioni sono impostate solo dalle macro? O c'è qualche altro modo? E se c'è un altro modo, perché ha scelto la macro? Ci sarà stata qualche necessità? Ma cos'era?

No, non c'era nessuna necessità, ho semplicemente trovato #define quando studiavo i modificatori e ho deciso di provarlo nello script.

Sinceramente, Vladimir.

 
MrBrooklin:

Volevo impostare una condizione nascosta per impostare gli ordini pendenti Buy Stop e Sell Stop.

Saluti, Vladimir.

Cosa significa "condizione nascosta"? Questo tipo di condizioni non esiste nella programmazione.
 
Vasiliy Sokolov:

... Se per una volta eseguissi il tuo script su una demo e lo eseguissi in tutte le modalità, vedresti che non funziona. Ma tu stai facendo un passo avanti. Aggiungete uno stop loss e un take profit, e la riva sta già gridando: "Fermate la macchina!".

Vasiliy, ho eseguito lo script più di una volta e tutte le modalità funzionano, cioè, ho messo due ordini pendenti Buy Stop e Sell Stop alla distanza che ho specificato. Stop Loss e Take Profit sono anche impostati alla distanza necessaria. Gli ordini funzionano. Vorrei allegare qui uno screenshot.

Saluti, Vladimir.


Motivazione: