Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 506

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1. Sì, c'è un caso per la barra zero nel codice, nessuna possibilità di controllare quale caso è stato testato ora, controllerò stasera.

2. Ho controllato emettendo un commento al grafico con i valori, macd, High e Low hanno valori, ma il prezzo min(max) non ottiene valori corrispondenti.

Avrei bisogno di vedere come sono dichiarate queste variabili. C'è il sospetto che siano variabili locali che vengono azzerate ad ogni ingresso nella funzione. Di conseguenza, quei momenti in cui sono con dei valori che semplicemente non hai tempo di vedere. Per vedere i valori, guardate il contenuto del log. Dopo tutto, c'è Print nel codice.

 

Salve. Ho un compito, su 1000 righe di file csv, ho bisogno di selezionare le corrispondenze dei parametri dal campo N e restituire qualsiasi tipo di valore dagli altri campi del record trovato. Puoi dirmi se c'è un esperto che lavora sul file e prende decisioni commerciali? Grazie.

 
mwwm:

Salve. Ho un compito, su 1000 righe di file csv, ho bisogno di selezionare le corrispondenze dei parametri dal campo N e restituire qualsiasi tipo di valore dagli altri campi del record trovato. Puoi dirmi se c'è un esperto che lavora sul file e prende decisioni commerciali? Grazie.

Probabilmente bisogna cercare quelli che funzionano con le novità nella base di codice.

 
Ihor Herasko:

Semplicemente non hai tempo per vedere. Per vedere i valori, guarda il contenuto del registro. Dopo tutto, c'è Print nel codice.

Sì, lo è, grazie.) Non ho notato questa registrazione tra le altre sciocchezze del diario. Grazie ancora a tutti quelli che hanno risposto, continuerò a pulire)

 
Come calcolare la barra indice per rendere il valore corrisponde alla seguente logica: se il periodo corrente del grafico M15, e timeframe dell'indicatore chiamato con funzione (MTF) = H1, la barra indice 5, cioè il fatto di chiudere la barra H1, se il periodo corrente del grafico M30, e timeframe dell'indicatore chiamato con funzione (MTF) = H1, la barra indice 3, se il periodo corrente del grafico M5, e timeframe chiamato indicatore con funzione (MTF) = M15, la barra indice 4.
 
lil_lil:
Quale calcolo dell'indice della barra deve essere fatto, in modo che il valore corrisponda alla seguente logica: se il periodo attuale del grafico M15 e l'indicatore chiamato timeframe con funzione (MTF) = H1, l'indice della barra 5, cioè il fatto di chiudere la barra H1, se il periodo attuale del grafico M30 e l'indicatore chiamato timeframe con funzione (MTF) = H1, allora l'indice della barra 3, se il periodo attuale del grafico M5 e l'indicatore chiamato timeframe con funzione (MTF) = M15, l'indice della barra 4.

L'errore qui è nella logica stessa. L'attuale TF potrebbe essere M15, e l'ultima barra M15, che corrisponde alla barra H1 che si è formata, sarebbe 1. Oppure potrebbe essere 2, o 3, o 4, ma non di più. Per esempio, ora sono le 10:06. Gli indici delle attuali barre M15 e H1 sono 0, le barre precedenti in entrambi i TF sono 1 e l'ultima barra M15 che corrisponde alla H1 chiusa è anch'essa 1. Alle 10:15 la situazione cambierà: l'ultima barra M15 che ha formato H1 avrà indice 2, alle 10:30 sarà 3 e alle 10:45 sarà 4.

I calcoli matematici non aiutano molto in questo caso. Dobbiamo cercare le barre corrispondenti sul grafico. L'algoritmo è il seguente:

  1. Determinare il tempo di apertura della barra zero H1. (iTime)
  2. Identifica l'indice della prima barra del timeframe corrente, che corrisponde al tempo di apertura della barra zero H1. (iBarShift)
  3. Aggiungere 1 all'indice della barra trovata.

 
Ihor Herasko:

L'errore qui è nella logica stessa. L'attuale TF potrebbe essere M15, e l'ultima barra M15, che corrisponde alla barra H1 che si è formata, sarebbe 1. Oppure potrebbe essere 2, o 3, o 4, ma non di più. Per esempio, ora sono le 10:06. Gli indici delle attuali barre M15 e H1 sono 0, le barre precedenti in entrambi i TF sono 1 e l'ultima barra M15 che corrisponde alla H1 chiusa è anch'essa 1. Alle 10:15 la situazione cambierà: l'ultima barra M15 che ha formato H1 avrà un indice 2, alle 10:30 sarà 3 e alle 10:45 sarà 4.

I calcoli matematici non aiutano molto in questo caso. Dobbiamo cercare le barre corrispondenti sul grafico. L'algoritmo è il seguente:

  1. Determinare il tempo di apertura della barra zero H1. (iTime)
  2. Identifica l'indice della prima barra del timeframe corrente, che corrisponde al tempo di apertura della barra zero H1. (iBarShift)
  3. Aggiungere 1 all'indice della barra trovata.

Probabilmente non ho detto tutto. L'indicatore attinge alla barra zero del timeframe superiore, condizionalmente H1, rispettivamente per tutte le 4 barre del timeframe corrente, M15. Ecco perché ho bisogno dell'indice 5 su M15 per sapere se c'è un segnale alla chiusura di H1. Sicuramente è possibile calcolare questo indice per evitare di scrivere un mucchio di condizioni per ogni variante di combinazioni di periodi alti e attuali.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

L'indicatore attinge alla barra zero del timeframe superiore, solitamente H1, rispettivamente durante tutte le 4 barre del timeframe corrente, M15.

Questo è quello che sto dicendo, le barre del timeframe corrente possono essere più piccole - 1, 2 o 3. Cioè, le letture non saranno sempre visualizzate su 4 barre. L'unico caso di visualizzazione di 4 barre è l'ultima barra del TF corrente che corrisponde alla barra zero H1. Per questa formulazione del problema abbiamo solo bisogno di trovare la prima barra del TF corrente che corrisponde alla barra zero H1:

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

Poi i dati saranno visualizzati a partire dalla barra zero del TF corrente fino a nCurTFBarIndex compreso.

Ecco perché ho bisogno dell'indice 5 specificamente sul TF M15, per sapere alla chiusura dell'H1 se c'è ancora un segnale o no. Sicuramente è possibile calcolare questo indice per evitare di scrivere un mucchio di condizioni per ogni variante di combinazione di periodi superiori e attuali.

Da quale TF viene preso il segnale: da quello attuale, da H1 o da una versione mista? Se solo da H1, allora non c'è bisogno di cercare nulla, perché l'ultima barra formata avrà sempre indice 1.

 
Ihor Herasko:

Da quale TF viene preso il segnale: corrente, H1 o una versione mista? Se solo da H1, allora non c'è bisogno di cercare nulla, perché l'ultima barra formata avrà sempre indice 1.

Metto H1 nelle impostazioni esterne dell'indicatore MTF e lo collego al grafico M15. Il segnale lampeggia per 4 barre. Quando la barra H1 è chiusa, il segnale non lampeggia e su M15 il segnale smette di lampeggiare sulla barra 4. Se lo metto su М1, rispettivamente, smette di lampeggiare sulla barra 60. è necessario calcolare l'indice i+N in modo che N vari a seconda del periodo selezionato nelle impostazioni e sul grafico del periodo, in cui l'indicatore è collegato.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;