WinProject: Grazie!) Dalla vostra risposta, concludo che per ogni tipo di oggetto devo fare una funzione separata. Ho pensato che in qualche modo sarebbe stato possibile fare un inizio separato di funzioni per costruire oggetti, collegato al ciclo Mentre la funzione principale per leggere il file. Che ne dici di Switch?
Probabilmente non mi sono addentrato abbastanza.
La prima, la costruzione di tutti gli oggetti grafici, non causa alcun problema o domanda. Ma devo aver capito male il secondo. Apparentemente la domanda non era su come organizzare il lavoro con un pulsante per molti tipi di oggetti, ma un pulsante per un tipo di oggetti. In questo caso, farei una struttura con parametri di oggetti e diversi array di strutture, un array per ogni tipo di oggetto. E, rispettivamente, legherei questi array di strutture ai pulsanti dei tipi corrispondenti.
Poi, quando si preme il pulsante, il tipo di oggetto corrispondente viene cancellato. E quando il pulsante viene rilasciato, gli oggetti saranno ripristinati dai parametri che si trovano nell'array della struttura.
Quindi sarà necessario leggere il file solo una volta all'avvio.
La prima, la costruzione di tutti gli oggetti grafici, non causa alcun problema o domanda. Ma devo aver capito male il secondo. Apparentemente la domanda non era su come organizzare il lavoro con un pulsante per molti tipi di oggetti, ma un pulsante per un tipo di oggetti. In questo caso, farei una struttura con parametri di oggetti e diversi array di strutture, un array per ogni tipo di oggetto. Quindi, legherei questi array di strutture ai pulsanti dei tipi corrispondenti.
Poi, quando si preme il pulsante, il tipo di oggetto corrispondente viene cancellato. E quando il pulsante viene rilasciato, gli oggetti saranno ripristinati dai parametri che si trovano nell'array della struttura.
Così, sarà necessario leggere il file solo una volta all'avvio.
Grazie mille per la risposta, proverò a fare entrambe le varianti, attraverso le bandiere come suggerito da STARIJ e la tua variante è anche interessante da provare. Cercherò di fare meno domande, è felice che siano risposte!)
Le bandiere sono variabili. O bool: false=vuoto, true=sollevato o int - allora ci sono molte bandiere in un numero alla volta: 0 - tutto omesso, 1=mancato primo, 2=mancato secondo, 3=mancato primo e secondo, 4=mancato terzo, 5=mancato terzo e primo, 6=mancato terzo e secondo, 7=mancato primo, secondo, terzo, 8=mancato quarto.... Beh, questo è in codice binario. Come si fa a scoprirlo?
Grazie, mi sembrava di aver trovato una buona spiegazione in rete, la proverò. La cosa strana è che su questo sito né nella documentazione, né nel tutorial, probabilmente assunto che tutti coloro che sono venuti qui già hanno competenze di programmazione.
WinProject: Grazie mille per la risposta, proverò a fare entrambe le varianti, attraverso le bandiere come suggerito da STARIJ e anche la tua variante è interessante da provare. Cercherò di fare meno domande, è bene avere delle risposte!)
Buona sera, ancora una volta sto cercando aiuto. Il mio EA ha una funzione principale in OnInit, che legge un file, e costruisce immediatamente diversi oggetti grafici secondo diverse condizioni. Anche sul grafico c'è un pulsante che, quando viene cliccato, opera la funzione per rimuovere questi oggetti, come le etichette di testo. Come fare che, dopo che la pressione del pulsante ha rimosso le etichette di testo, quando il pulsante viene rilasciato è possibile avviare non l'intera funzione che costruirà completamente tutti gli oggetti, ma costruire solo le etichette di testo. L'unica cosa che mi viene in mente è creare un analogo della funzione principale separatamente per ogni tipo di oggettocon tutte le azioni associate all'apertura e alla lettura del file, ma voglio usare qualche soluzione intelligente, ma non so cosa e come, nella funzione principale o nelle funzioni dei pulsanti?
In questo caso è più facile implementare la lettura del file in una funzione separata definita dall'utente e chiamarla più volte, per non moltiplicare la creazione di uno stesso codice più volte. Ma non importa quanto ci proviate, la lettura dei file rimarrà quando si usano le bandiere. E non fa differenza cosa controllare quando si creano oggetti cancellati - la loro assenza o lo stato di flag per tipo di oggetto. Dopo tutto, il tipo di oggetto è determinato dal pulsante collegato a un tipo particolare, questa è la bandiera.
Penultimo esempio,colore in rappresentazione RGB come stringa."Convertire due strutture copiandone il contenuto" non funziona.
#property script_show_inputsinputcolor testColor=clrBlue;// задайте цвет для тестирования//--- структура для представления цвета в RGBstruct RGB
{
uchar blue; // синяя составляющая цветаuchar green; // зеленая составляющая цветаuchar red; // красная составляющая цветаuchar empty; // этот байт не используетсяstring toString(); // функция для получения в виде строки
};
//--- функция для вывода цвета в виде строкиstring RGB::toString(void)
{
string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
return out;
}
//--- структура для хранения встроенного типа color struct builtColor
{
color c;
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- переменная для хранения в RGB
RGB colorRGB;
//--- переменная для хранения типа color
builtColor test;
test.c=testColor;
//--- приведение двух структур путем копирования содержимого
colorRGB=test;
Print("color ",test.c," = ",colorRGB.toString());
//---
}
Il compilatore genera il seguente errore... ('=' - operazione illegale usa test.mq4 34 12 )
Ho copiato qualcosa di sbagliato o c'è un errore nel campione? Per favore, consigliatemi.
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL4 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
Grazie!) Dalla vostra risposta, concludo che per ogni tipo di oggetto devo fare una funzione separata. Ho pensato che in qualche modo sarebbe stato possibile fare un inizio separato di funzioni per costruire oggetti, collegato al ciclo Mentre la funzione principale per leggere il file. Che ne dici di Switch?
Probabilmente non mi sono addentrato abbastanza.
La prima, la costruzione di tutti gli oggetti grafici, non causa alcun problema o domanda. Ma devo aver capito male il secondo. Apparentemente la domanda non era su come organizzare il lavoro con un pulsante per molti tipi di oggetti, ma un pulsante per un tipo di oggetti. In questo caso, farei una struttura con parametri di oggetti e diversi array di strutture, un array per ogni tipo di oggetto. E, rispettivamente, legherei questi array di strutture ai pulsanti dei tipi corrispondenti.
Poi, quando si preme il pulsante, il tipo di oggetto corrispondente viene cancellato. E quando il pulsante viene rilasciato, gli oggetti saranno ripristinati dai parametri che si trovano nell'array della struttura.
Quindi sarà necessario leggere il file solo una volta all'avvio.
Probabilmente non mi sono addentrato abbastanza.
La prima, la costruzione di tutti gli oggetti grafici, non causa alcun problema o domanda. Ma devo aver capito male il secondo. Apparentemente la domanda non era su come organizzare il lavoro con un pulsante per molti tipi di oggetti, ma un pulsante per un tipo di oggetti. In questo caso, farei una struttura con parametri di oggetti e diversi array di strutture, un array per ogni tipo di oggetto. Quindi, legherei questi array di strutture ai pulsanti dei tipi corrispondenti.
Poi, quando si preme il pulsante, il tipo di oggetto corrispondente viene cancellato. E quando il pulsante viene rilasciato, gli oggetti saranno ripristinati dai parametri che si trovano nell'array della struttura.
Così, sarà necessario leggere il file solo una volta all'avvio.
Le bandiere sono variabili. O bool: false=vuoto, true=sollevato o int - allora ci sono molte bandiere in un numero alla volta: 0 - tutto omesso, 1=mancato primo, 2=mancato secondo, 3=mancato primo e secondo, 4=mancato terzo, 5=mancato terzo e primo, 6=mancato terzo e secondo, 7=mancato primo, secondo, terzo, 8=mancato quarto.... Beh, questo è in codice binario. Come si fa a scoprirlo?
Grazie mille per la risposta, proverò a fare entrambe le varianti, attraverso le bandiere come suggerito da STARIJ e anche la tua variante è interessante da provare. Cercherò di fare meno domande, è bene avere delle risposte!)
Le bandiere non sono male, ma mancano il punto
Forum sul trading, sistemi di trading automatico e test di strategia
Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici
WinProject, 2018.01.26 18:17
Buona sera, ancora una volta sto cercando aiuto. Il mio EA ha una funzione principale in OnInit, che legge un file, e costruisce immediatamente diversi oggetti grafici secondo diverse condizioni. Anche sul grafico c'è un pulsante che, quando viene cliccato, opera la funzione per rimuovere questi oggetti, come le etichette di testo. Come fare che, dopo che la pressione del pulsante ha rimosso le etichette di testo, quando il pulsante viene rilasciato è possibile avviare non l'intera funzione che costruirà completamente tutti gli oggetti, ma costruire solo le etichette di testo. L'unica cosa che mi viene in mente è creare un analogo della funzione principale separatamente per ogni tipo di oggetto con tutte le azioni associate all'apertura e alla lettura del file, ma voglio usare qualche soluzione intelligente, ma non so cosa e come, nella funzione principale o nelle funzioni dei pulsanti?
Potete dirmi come ottenere il valore dell'ora corrente in MQL5 ?
Ho creato un oggetto della struttura MqlDateTime, non dà nulla
Potete dirmi come ottenere il valore dell'ora corrente in MQL5 ?
Ho creato un oggetto della struttura MqlDateTime, non dà nulla
La struttura deve essere riempita con la data-ora.
Usare TimeCurrent()? Non capisco proprio come.
usare TimeCurrent()? non capisco come
TimeToStruct()
Ah, capito, funziona, grazie!
https://docs.mql4.com/ru/basis/types/casting
Penultimo esempio,colore in rappresentazione RGB come stringa."Convertire due strutture copiandone il contenuto" non funziona.
Il compilatore genera il seguente errore... ('=' - operazione illegale usa test.mq4 34 12 )
Ho copiato qualcosa di sbagliato o c'è un errore nel campione? Per favore, consigliatemi.