Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 237

 
Sergey Likho:

L'indicatore di MT5 disegna una linea in due colori.

I valori della linea sono nello stesso buffer.

C'è un modo per identificare il colore della linea quando si richiedono valori all'indicatore?

È possibile. Il colore della linea è memorizzato nel buffer dei colori. Se c'è solo una linea, il buffer dei valori è 0 e il buffer dei colori è 1. Di conseguenza, in CopyBuffer si mette il secondo parametro 1.
 
Ventura:

Se non è possibile visualizzare la finestra dei parametri in modo programmatico, indicare se i parametri possono essere inizializzati in qualche modo

input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;
 
Евгений:

Cosa consigliate?

Prima i mandati devono essere vagliati da simbolo e mago. Vi rimangono due ordini. Selezionate quello che volete cancellare sulla vostra condizione. Ne cancelli uno e cambi lo stop loss.

 
Aleksei Stepanenko
input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;

Alexey, ho chiesto un suggerimento su come chiamare la funzione di calcolo dei parametri PRIMA che la finestra dei parametri appaia, non dopo.

La questione è aperta: è possibile chiamare PROGRAMMATICAMENTE la finestra dei parametri? Se no, è possibile inizializzare i parametri da una funzione PRIMA che appaia la finestra dei parametri.

Vorrei fare qualcosa del genere

input double BuyStop = GetMyBuyStop();

Ma ottengo un errore che dice che solo la costante può essere sul lato destro (

 
Ventura:

Alexey, ho chiesto un suggerimento su come chiamare la funzione di calcolo dei parametri PRIMA che la finestra dei parametri appaia, non dopo.

La questione è aperta: è possibile chiamare PROGRAMMATICAMENTE la finestra dei parametri? Se no, è possibile inizializzare i parametri da una funzione PRIMA che appaia la finestra dei parametri.

Vorrei fare qualcosa del genere

input double BuyStop = GetMyBuyStop();

Ma si verifica un errore che ci può essere solo una costante a destra (

Non c'è niente prima che appaia la finestra dei parametri, tutto inizia solo dopo, quando la finestra è già caricata

 

Esattamente quello che ha detto Vitaly!

Creare un pannello sul grafico, gestire le variabili da lì.

 
Vitaly Muzichenko:

Non c'è niente prima che la finestra dei parametri appaia, inizia solo dopo, quando la finestra è già caricata

Lo so, è per questo che sto aspettando un consiglio professionale. Forse può essere fatto con mezzi non standard, attraverso Win API o qualcos'altro.

Non c'è proprio modo di mostrare la finestra programmaticamente, dal codice?

 
Ventura:

Lo so, è per questo che sto aspettando un consiglio professionale. Forse può essere fatto con mezzi non standard, attraverso Win API o qualcos'altro.

Non c'è modo di mostrare la finestra programmaticamente, dal codice?

Prima dell'inizializzazione dell'EA (e i parametri sono inseriti prima dell'inizializzazione), l'EA non è disponibile, non funziona... Prima dell'inizializzazione dell'Expert Advisor, la finestra dei suoi parametri è a vostra disposizione. Ma non vi si addice. Quindi, usa un altro input dei valori di cui hai bisogno - dopo l'inizializzazione dell'EA. Avete accesso alla finestra MessageBox(). Ma non vi aiuterà molto - non ci sono campi per l'inserimento di valori - solo pulsanti di accordo/disaccordo/annullamento.

Quindi - dovete usare la vostra finestra. Potete crearlo voi stessi a partire dagli oggetti. Cercatelo in ObjectCreate(). Oppure usa Canvas. Ma il kanvas non è per il semplice artigianato.

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

L'EA non è disponibile prima di essere inizializzato (e i parametri sono inseriti prima dell'inizializzazione), non funziona... Prima che l'EA sia inizializzato, la sua finestra dei parametri è disponibile. Ma non vi si addice. Quindi, usa un altro input dei valori di cui hai bisogno - dopo l'inizializzazione dell'EA. Avete accesso alla finestra MessageBox(). Ma non vi aiuterà molto - non ci sono campi per l'inserimento di valori - solo pulsanti per accettare/disaccordare/annullare.

Quindi - dovete usare la vostra finestra. Potete crearlo voi stessi a partire dagli oggetti. Cercatelo in ObjectCreate(). Oppure usa Canvas. Ma il kanvas non è per il semplice artigianato.

Artem, grazie, aspettavo il tuo consiglio. Mentre aspettavo, cercavo anch'io delle possibili soluzioni. Questa mattina ho capito come mostrare programmaticamente la finestra delle impostazioni!

Ho scoperto che la finestra si chiama premendo F7. Una ricerca su Internet ha mostrato che posso fare un display soft-key usando MQL.

Il resto è una questione di tecnica. Sto incollando il codice qui per condividerlo con voi, se qualcuno può trovarlo utile:

extern double BuyStop, SellStop;

...

void SetParams()
  {
   BuyStop = CalcBuyStop();
   SellStop = CalcSellStop();
   int handle = WindowHandle(Symbol(), 0);
   PostMessageA(handle,WM_KEYDOWN,VK_F7,0);
  } 
 

Ma mi sono rallegrato troppo presto. Sono riuscito ad aprire la finestra dei parametri programmaticamente, ma i valori che ho assegnato ai parametri nella procedura non sono stati salvati (((

Cioè, quando apro la finestra dei parametri, vedo i valori specificati durante l'inizializzazione, nel mio caso degli zeri.

C'è un modo per far sì che i valori calcolati vengano trasferiti al modulo dei parametri?

Motivazione: