Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 104
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Quanti strumenti nella revisione del mercato?
61.
Nella build 1907 i bug sono miracolosamente scomparsi. Non so nemmeno se devo tornare indietro per trovarli, o se qualcosa in questo posto è stato appena aggiustato...
Domanda sulla costruzione degli indicatori
#property indicator_chart_window
#property indicator_buffers 12
#property indicator_plots 6
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#property indicator_type3 DRAW_COLOR_LINE
#property indicator_type4 DRAW_COLOR_LINE
#property indicator_type5 DRAW_COLOR_LINE
#property indicator_type6 DRAW_COLOR_LINE
SetIndexBuffer(0,upper_line,INDICATOR_DATA);
SetIndexBuffer(1,upper_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(0,PLOT_LABEL,"Upper Line");
PlotIndexSetInteger(0,PLOT_LINE_STYLE,UpperStyle);
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,UpperWidth);
PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,UpperTrendUp);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,UpperTrendDw);
// ==========
SetIndexBuffer(2,awera_line,INDICATOR_DATA);
SetIndexBuffer(3,awera_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(1,PLOT_LABEL,"Average Line");
PlotIndexSetInteger(1,PLOT_LINE_STYLE,AverageStyle);
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,AverageWidth);
PlotIndexSetInteger(1,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,AverageTrendUp);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,AverageTrendDw);
// ==========
SetIndexBuffer(4,lower_line,INDICATOR_DATA);
SetIndexBuffer(5,lower_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(2,PLOT_LABEL,"Lower Line");
PlotIndexSetInteger(2,PLOT_LINE_STYLE,LowerStyle);
PlotIndexSetInteger(2,PLOT_LINE_WIDTH,LowerWidth);
PlotIndexSetInteger(2,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,LowerTrendUp);
PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,LowerTrendDw);
Quanti buffer di colore si possono usare?
Come sono collegati i buffer tra loro?
#property indicator_buffers 12 // Dichiarare un totale di 12 buffer
#property indicator_plots 6 // costruzioni grafiche
Ho capito bene che specificando indicator_type da 1 a 6, l'indicatore capirà che le linee di colore devono essere disegnate per 6 grafici?
#proprietà indicator_type1 DRAW_COLOR_LINE
#proprietà indicator_type2 DRAW_COLOR_LINE
#proprietà indicator_type3 DRAW_COLOR_LINE
#proprietà indicator_type4 DRAW_COLOR_LINE
#proprietà indicator_type5 DRAW_COLOR_LINE
#proprietà indicator_type6 DRAW_COLOR_LINE
// =====
SetIndexBuffer(0,upper_line,INDICATOR_DATA); // Primo buffer per i dati
SetIndexBuffer(1,upper_line_color,INDICATOR_COLOR_INDEX); // Secondo buffer per i dati di colore
PlotIndexSetString(0,PLOT_LABEL, "Upper Line"); // Cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_STYLE,UpperStyle);// cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,UpperWidth);//cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);// cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,UpperTrendUp); // cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,UpperTrendDw); // cambia le proprietà del primo buffer
SetIndexBuffer(2,awera_line,INDICATOR_DATA); // terzo buffer
SetIndexBuffer(3,awera_line_color,INDICATOR_COLOR_INDEX); // Quarto buffer di colori
PlotIndexSetString(1,PLOT_LABEL, "Average Line"); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,AverageStyle); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,AverageWidth); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_COLOR_INDEXES,2); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,AverageTrendUp); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,AverageTrendDw); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
Domanda sulla costruzione degli indicatori
#property indicator_chart_window
#property indicator_buffers 12
#property indicator_plots 6
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#property indicator_type3 DRAW_COLOR_LINE
#property indicator_type4 DRAW_COLOR_LINE
#property indicator_type5 DRAW_COLOR_LINE
#property indicator_type6 DRAW_COLOR_LINE
SetIndexBuffer(0,upper_line,INDICATOR_DATA);
SetIndexBuffer(1,upper_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(0,PLOT_LABEL,"Upper Line");
PlotIndexSetInteger(0,PLOT_LINE_STYLE,UpperStyle);
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,UpperWidth);
PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,UpperTrendUp);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,UpperTrendDw);
// ==========
SetIndexBuffer(2,awera_line,INDICATOR_DATA);
SetIndexBuffer(3,awera_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(1,PLOT_LABEL,"Average Line");
PlotIndexSetInteger(1,PLOT_LINE_STYLE,AverageStyle);
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,AverageWidth);
PlotIndexSetInteger(1,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,AverageTrendUp);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,AverageTrendDw);
// ==========
SetIndexBuffer(4,lower_line,INDICATOR_DATA);
SetIndexBuffer(5,lower_line_color,INDICATOR_COLOR_INDEX);
PlotIndexSetString(2,PLOT_LABEL,"Lower Line");
PlotIndexSetInteger(2,PLOT_LINE_STYLE,LowerStyle);
PlotIndexSetInteger(2,PLOT_LINE_WIDTH,LowerWidth);
PlotIndexSetInteger(2,PLOT_COLOR_INDEXES,2);
PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,LowerTrendUp);
PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,LowerTrendDw);
Quanti buffer di colore si possono usare?
Come sono collegati i buffer tra loro?
#property indicator_buffers 12 // Dichiarare un totale di 12 buffer
#property indicator_plots 6 // costruzioni grafiche
Ho capito bene che specificando indicator_type da 1 a 6, l'indicatore capirà che le linee di colore devono essere disegnate per 6 grafici?
#proprietà indicator_type1 DRAW_COLOR_LINE
#proprietà indicator_type2 DRAW_COLOR_LINE
#proprietà indicator_type3 DRAW_COLOR_LINE
#proprietà indicator_type4 DRAW_COLOR_LINE
#proprietà indicator_type5 DRAW_COLOR_LINE
#proprietà indicator_type6 DRAW_COLOR_LINE
// =====
SetIndexBuffer(0,upper_line,INDICATOR_DATA); // Primo buffer per i dati
SetIndexBuffer(1,upper_line_color,INDICATOR_COLOR_INDEX); // Secondo buffer per i dati di colore
PlotIndexSetString(0,PLOT_LABEL, "Upper Line"); // Cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_STYLE,UpperStyle);// cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,UpperWidth);//cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);// cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,UpperTrendUp); // cambia le proprietà del primo buffer
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,UpperTrendDw); // cambia le proprietà del primo buffer
SetIndexBuffer(2,awera_line,INDICATOR_DATA); // terzo buffer
SetIndexBuffer(3,awera_line_color,INDICATOR_COLOR_INDEX); // Quarto buffer di colori
PlotIndexSetString(1,PLOT_LABEL, "Average Line"); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,AverageStyle); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,AverageWidth); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_COLOR_INDEXES,2); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,AverageTrendUp); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,AverageTrendDw); // Cambia le proprietà del buffer per SetIndexBuffer(2,awera_line,INDICATOR_DATA);
Faresti meglio a creare un ramo separato per la tua domanda. Questo ramo riguarda le caratteristiche, non dovrebbero esserci discussioni qui.
Per capire meglio il principio del disegno, implementate la funzionalità in modo incrementale. Avete costruito una linea - controllate la sua funzionalità, aggiungete la prossima.
Ogni serie grafica (in questo caso una linea di colore) può avere un solo buffer di colore. Ogni buffer può contenere molti colori.
Nella build 1907, i bug sono miracolosamente scomparsi. Non so nemmeno se devo tornare indietro per trovarli, o se qualcosa in questo posto è stato appena aggiustato...
Gli errori sono scomparsi, ma i problemi con la coda degli eventi no. Dopo alcune ore il terminale inizia a caricare la CPU fino al 95%. E qualcosa mi dice che le zecche sono saltate.
@Slava, è cambiato qualcosa in ChartEvent nelle build 19xx? Il problema si riproduce nelle vostre build?
Gli errori sono scomparsi, ma i problemi della coda degli eventi no. Dopo alcune ore di funzionamento, il terminale comincia a caricare la CPU al 95%. E qualcosa mi dice che mancano le zecche.
@Slava, è cambiato qualcosa in ChartEvent nelle build 19xx? Il vostro problema è riprodotto?
Questo è l'aspetto del monitoraggio delle risorse dopo 15 ore di lavoro del terminale (la frequenza minima di invio degli eventi della spia è di 500 ms):
Anche se il carico della CPU è vicino a 0 per diverse ore dopo l'avvio.
Questo è l'aspetto del monitoraggio delle risorse dopo 15 ore di funzionamento del terminale (la frequenza minima di invio degli eventi spyware è di 500ms):
Anche se il carico della CPU è vicino a 0 per alcune ore dopo l'avvio.
Bild 1908 - nessun cambiamento.
La capacità di sostituire gli operatori della struttura del tipo base permette una certa flessibilità in alcune situazioni.
Come esempio, ecco una delle tecniche per l'ordinamento personalizzato di un array di strutture
Risultato
Questa è probabilmente una bicicletta antica.
La capacità di sostituire gli operatori delle strutture di tipo base permette una certa flessibilità in alcune situazioni.
ci sono alcuni punti. in mql, < operator deve necessariamente essere un metodo di classe/struttura.
Questo significa che non può essere impostato per le strutture incorporate o per quelle immutabili.
Questo può essere migliorato un po' aggiungendo una funzione di confronto dei template, che per default chiamerà l'operatore <
UPD: scrivo l'operatore < ovunque perché di solito è sovraccaricato piuttosto che >, non è rigoroso, ma è generalmente accettatoCi sono alcuni punti. in mql, l'operatore < deve essere un metodo della classe/struttura.
Significa che non può essere impostato per strutture incorporate o per strutture immutabili.
Risultato
Questo modo può essere migliorato un po', aggiungendo una funzione di confronto dei template, che chiamerà di default l'operatore <
Se usate typedef, allora dovete definire una funzione di ordinamento non solo per le strutture, ma anche per i tipi numerici standard. O forse non capisco di cosa stai parlando.