Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 743

 

Ciao a tutti! Domanda su MQL5.

Vorrei inserire dei commenti nella funzione di chiusura di una posizione in un ticket.

Finora ho usato la classe CTrade, ma non fornisce una tale opportunità.

Cioè devo usare OrderSend, giusto?

Qui non capisco: https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions#trade_action_deal nell'esempio è scritta la funzione OnStart. O posso scrivere tutto in una funzione personalizzata e chiamarla quando necessario?

È necessario aggiungere qualcosa a OnInit?

E non ci saranno conflitti se scrivo la chiusura attraverso OrderSend e lascio apertura e modifiche sulla base della classe CTrade?

Grazie!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

In parole povere - leggi attentamente quello che ti ho scritto e elimina il ciclo infinito dal tuo codice.

Sei sicuro che mettere l'Expert Advisor in un ciclo infinito sia la soluzione giusta?

In primo luogo, questa non è una soluzione, ma un esempio per dimostrare l'essenza di ciò di cui sto parlando.

In secondo luogo, non è un ciclo infinito, terminerà correttamente e in modo sicuro quando il programma finisce.

E in terzo luogo, mi stai scrivendo per risolvere una cosa completamente diversa, per la quale posso pensare a un milione di modi.

Quindi lei considera il mio loop come un ostacolo alla mia situazione? Davvero?

Comunque, ho capito. Ho fatto un brutto viaggio in questo thread...

Ma grazie lo stesso!

 
Marat Sultanov:

In primo luogo, questa non è una soluzione, ma un esempio per mostrare l'essenza di ciò di cui sto parlando.

In secondo luogo, non è un ciclo infinito, terminerà correttamente e in modo sicuro quando il programma finisce.

E in terzo luogo, mi stai scrivendo per risolvere una cosa completamente diversa, per la quale posso pensare a un milione di modi.

Quindi lei considera il mio loop come un ostacolo alla mia situazione? Davvero?

Comunque, ho capito. Ho fatto un brutto viaggio in questo thread...

Ma grazie lo stesso!

Alla fine del programma, sì, sarà interrotto.

Fate qualche calcolo davvero pesante allora, e cercate di interromperlo quando viene chiamata la finestra delle impostazioni.

Ho guardato come funziona il tuo codice - non risponde a un cambiamento di variabile nelle impostazioni - è impedito da un ciclo infinito, che può essere interrotto solo rimuovendo l'EA, e non ripartirà - l'hai cancellato dal grafico...

Cercate di tenere traccia del calcolo pesante tramite il timer. Anche se non sono sicuro che il timer sarà chiamato al momento del calcolo.

Ma in ogni caso, il looping per emulare un calcolo lungo non è una buona soluzione.

 
Salve. Potreste dirmi come impostare un array nei parametri di input di una funzione?
double test[];


double Test(.....)
{

}
 
Fresto:
Salve. Potete dirmi come impostare un array nei parametri di input di una funzione?

Passare un array a una funzione?

Va più o meno così:

//+------------------------------------------------------------------+
double test[];
ArrayResize(test,2);
ArrayInitialize(test,256);

Print(Test(test));
//+------------------------------------------------------------------+
double Test(double &array[])
{
   if(ArraySize(array)==0) return(WRONG_VALUE);
   array[0]+=array[1];
   return(array[0]);
}
//+------------------------------------------------------------------+

Beh... variazioni sul tema ...

 
Artyom Trishkin:

Quando si termina il programma, sì, lo farà.

Poi fate qualche calcolo davvero pesante e cercate di interromperlo quando viene chiamata la finestra delle impostazioni.

Ho guardato come funziona il tuo codice - non reagisce ai cambiamenti di variabili nelle impostazioni - non gli è permesso farlo dal loop infinito, che può essere interrotto solo rimuovendo l'EA, e non ripartirà - l'hai cancellato dal grafico...

Prova a seguire un calcolo pesante con un timer. Non sono sicuro che il timer venga chiamato al momento del calcolo, però.

Ma in ogni caso, il looping per emulare un calcolo lungo non è una buona soluzione.

Grazie!

Capito. Ma purtroppo c'è una ragionevole necessità.

Ma in ogni caso, il looping per emulare un calcolo lungo non è una buona soluzione.

Ci sono situazioni in cui per esempio è necessario scrivere su un grande file o leggere da un grande file o tutti insieme. Se si estende l'immaginazione, si può ottenere un sacco di pazzia, e il dolore è al quadrato quando lo si implementa :)

Trovo strano che ci sia la possibilità di tracciare un'interruzione con _StopFlag, ma non c'è nessun cambiamento dei parametri di ingresso :(

 
ciao, domanda: è possibile cambiare l'angolo di visualizzazione del commento sul grafico?????
 
Dmitry Melnichenko:
Ciao, ho una domanda. è possibile cambiare l'angolo del commento sul grafico ?????

No.

A meno che non creiate voi stessi un'etichetta grafica OBJ_LABEL e cambiate la sua proprietà

OBJPROP_ANGLE


usando la funzione:ObjectSetDouble
 
Ragazzi, aiuto con l'indicatore
File:
llassiff.mq5  17 kb
 
Rafael Sahibgareev:
Ragazzi, aiutatemi a capire l'indicatore
C'è un pezzo di codice che non capisco. Dovete correggerlo voi stessi.
File:
llassiff.mq5  18 kb