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

 
Aleksei Lesnikov:

Alexei, grazie! Ora è chiaro che non è possibile.

È vero, non ho esattamente mql4. Sto cercando di cambiare i dati attraverso la classe CiOpen. Sono confuso dal metodo Update, che dovrebbe cambiare l'elemento in una posizione specificata dell'array.

Copiatelo nelle vostre variabili/array e lavorate già con loro.
 
Valeriy Yastremskiy:
Copiate nelle vostre variabili/array e lavorate già con loro.

Così l'ho fatto.

 

Vi sono molto grato per il vostro aiuto! Sono abbastanza nuovo nella programmazione.

Mentre studiavo, ho incontrato difficoltà nell'implementazione del codice. C'è un articolo https://www.mql5.com/ru/articles/3336 che non riesco a capire come viene effettuato il confronto

if(!CompareTiks(n_tiks[i], m_ticks[k]))

Ho il sospetto che "Template Data Collections" sia usato e che ci sia un tale metodo globale"Compare".Ma l'elenco dell'articolo non dà da nessuna parte come far capire al compilatore che dovrei usare "Compare" da "Data Template Collections". Non ho trovato nessun esempio di metodi globali da"Data Template Collections".

La seguente voce nella descrizione del metodo globale non cambierà il risultato

template<typename T>
int Compare(
T x, // primo valore
T y // secondo valore
);

Come risultato, ho il seguente codice (o meglio, il codice ha me)

#ifndef MyInclude
#define MyInclude


//template<typename T>
//interfaccia ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
T x, // primo valore
T y // secondo valore
);

class CMarketBook
{
private:
stringa m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];

protetto:

public:
void CMarketBook::CompareTicks(void);
};
//+------------------------------------------------------------------+
//|Confrontare due collezioni di tick e trovare nuovi tick |
//+------------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;//20sec fa
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total < 1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); return;}

int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0;

// Prova nuovi tick ricevuti
for (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//Memorizzare i tick ricevuti
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
//Calcolare l'indice iniziale dei nuovi tick e copiarlo nel buffer per l'accesso
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif

Durante la compilazione, viene generato un errore - "l'oggetto è passato solo per riferimento" alla linea if (!Compare(n_ticks[i], m_ticks[k])) che punta an_ticks[i]

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 
Quando si usa internet mobile, nessun SendNotification... Quando ci si connette al wi-fi, arrivano (anche quelli che non arrivavano quando si usa internet mobile). È un problema dal lato dell'ISP? Penso che tutti i permessi siano abilitati nelle impostazioni internet del cellulare...
 

Buon pomeriggio a tutti.

Sto testando un Expert Advisor Alpari MT4. Prima di fare il test, MT mi suggerisce di impostare lo spread (il valore attuale o uno specifico).


Da Alpari, lo spread è fluttuante. È per questo che le impostazioni delle dimensioni dello spread sopra menzionate non mi soddisfano.

D. Quale opzione mostra i valori di spread per ogni tick storico sulla cronologia?
Oppure, come devo fare perché il mio EA apra e chiuda gli ordini considerando i valori di spread validi nel momento in cui l'ordine viene aperto o chiuso?

Grazie a tutti per il vostro aiuto.

 
ANDREY:

Buon pomeriggio a tutti.

Sto testando un Expert Advisor Alpari MT4. Prima di testare MT mi suggerisce di impostare il valore dello spread (corrente o qualsiasi valore particolare da quello offerto).


Da Alpari lo spread è fluttuante. Questo è il motivo per cui i suddetti valori di spread non funzionano per me.

D. Quale funzione visualizza sullo storico i valori di spread per ogni tick storico?
Oppure, come dovremmo fare in modo che il nostro EA apra e chiuda gli ordini considerando i valori di spread validi al momento dell'apertura o della chiusura dell'ordine?

Grazie a tutti per il vostro aiuto.

Non è possibile farlo in MT4, ma è possibile in MT5

 
Vladimir Pastushak:

Non in MT 4, in MT 5 si può

Grazie mille per le preziose informazioni.

Inizierò a studiare mql5. Dicono che è molto simile a mql4. Vi sarei davvero grato se poteste dirmi come implementare la mia idea in mql5.

 
ANDREY:

Grazie mille per le preziose informazioni.

Inizierò a studiare mql5. Dicono che è molto simile a mql4. Vi sarei molto grato se poteste dirmi come mql5 implementa la mia idea.

Non hai bisogno di fare nulla con mt5.
Tutto avviene automaticamente e l'EA fa trading con spread fluttuante in strategy tester.
 
Vladislav Andruschenko:
In mt5 non c'è bisogno di inventare nulla.
Tutto avviene automaticamente e l'EA scambia con uno spread fluttuante nel tester di strategia.

Questo è forte. Grazie per le preziose informazioni.

Se si vuole passare rapidamente da mql4 a mql5, è meglio leggere i manuali di mql4 e mql5 contemporaneamente e prestare attenzione alle differenze tra loro. Tutto si impara dal confronto.....
 

Buona giornata a tutti!

Ho iniziato a studiare mql5. Ho iniziato a studiare come vengono aperti gli ordini. Ho capito che il codice per aprire un ordine è scritto in un file include separato. Ora ho imparato questo codice e la sua variante finale per il trading. Sono rimasto sorpreso dal fatto che l'apertura degli ordini in mql4 è molto più facile e semplice che in mql5.

Vorrei chiedere se sono sicuro di avere già il file con il codice per aprire l'ordine e non ho bisogno di scrivere questo codice. Se un tale file è disponibile da qualche parte, allora devo solo collegarlo al mio EA e impostare i valori dei parametri degli ordini di cui ho bisogno? Se esiste un tale file, dove e come posso trovarlo e come si chiama?

Vorrei chiedervi il nome di questo file e dove trovarlo.

Motivazione: