Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1051

 
secret:

Grazie per la risposta, ho guardato sia la documentazione che il tuo esempio, ma non ho ancora trovato come ottenere un parametro simile a OrderClosePrice() in MT4.

Se ENUM_DEAL_ENTRY ==DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- significa che la posizione BUY è stata chiusa e quindi DEAL_PRICE è il prezzo di chiusura.

 
secret:

Grazie per la risposta, ho guardato sia la documentazione che il tuo esempio, ma non ho ancora trovato come ottenere un parametro simile a OrderClosePrice() in MT4.

Non c'è un'analogia diretta. La posizione consiste in scambi. Se vuoi dati precisi esattamente per una posizione - devi prima assemblare la posizione dalla storia del trading.

Pertanto, è meglio lavorare con il concetto di "accordo".


In generale, l'implementazione dipende molto dalla risposta alla domanda: "Perché? Cioè, prima descrivi esattamente cosa vuoi e perché.

 
secret:

Come posso ottenere il prezzo di chiusura di un ordine (trade, posizione - qualsiasi cosa)?

Ho cercato su Google il forum, ma non l'ho trovato.

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

in alternativa aprirehttps://www.mql5.com/ru/code/16006

e guarda l'implementazione di @fxsaber

Non è realistico strappare l'implementazione da lì, poiché ha una forte dipendenza da tutte le altre parti della libreria.

 

Amici, per favore consigliate come risolvere un problema apparentemente semplice. Un pezzo di codice:

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

Avviso al compilatore:

la dichiarazione di 'stavkariska' nasconde la dichiarazione locale alla linea 25 script.mq5 32 12

possibile uso di una variabile non inizializzata 'stavkariska' script.mq5 33 39

Qual è il modo giusto per risolvere questo problema, in modo che compili senza avvertimenti?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

Amici, per favore consigliate come risolvere un problema apparentemente semplice. Un pezzo di codice:

Avviso al compilatore:

la dichiarazione di 'stavkariska' nasconde la dichiarazione locale alla linea 25 script.mq5 32 12

possibile uso di una variabile non inizializzata 'stavkariska' script.mq5 33 39

Come risolvere il problema correttamente, in modo che compili senza avvertimenti?


Usare un traduttore:

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


Cioè, dichiarare le variabili con più attenzione - evitare di dichiarare le stesse variabili nello stesso ambito.

Quando dichiarate una variabile , prendete l'abitudine di inizializzarla immediatamente.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

Fate uso del traduttore:


Cioè, dichiarare le variabili con più attenzione - evitare di dichiarare le stesse variabili nello stesso ambito.

Quando dichiarate una variabile , prendete l'abitudine di inizializzarla immediatamente.

Il fatto è che se dichiaro un'altra variabile nella dichiarazione If else, ottengo la necessità di dichiararla di nuovo, altrimenti l'errore "'stavkariska1' - undeclared identifier". Un circolo vizioso per un principiante. Forse ci sono altri modi per implementare la selezione?
 
TrueSam:
Il fatto è che dichiarando un'altra variabile nell'operatore If else, ottengo la necessità di dichiararla di nuovo, altrimenti l'errore "'stavkariska1' - undeclared identifier. Un circolo vizioso per un principiante. Forse ci sono altri modi per implementare la selezione?

Anche il piccolo robot ha fatto un errore in fretta e furia.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double  StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

Quello evidenziato non è necessario. Senza ridichiarazione dovrebbe funzionare come dovrebbe.

 
Alexey Viktorov:

Anche il piccolo pescatore di granchi ha commesso un errore nella sua fretta.

Quello evidenziato è ridondante. Senza il ri-annuncio, dovrebbe funzionare come dovrebbe.

Grazie per la vostra attenzione. Mi dispiace, ho digitato direttamente nel mio browser usando il copia-incolla.

 
Alexey Viktorov:

Anche il piccolo pescatore di granchi ha commesso un errore nella sua fretta.

Quello evidenziato è ridondante. Senza un nuovo annuncio dovrebbe funzionare come dovrebbe.

Grazie mille! Il graal sta funzionando :)