Mi ci sono volute 2 ore per isolare il problema dal codice del progetto.
#define PRINT(x) Print(#x, ":", string(x))
template<typename DATA_TYPE>
struct Wrapper{
uchar type;
DATA_TYPE data;
template<typename T>
voidoperator=(T value){ // при замене данной строки на "void operator=(T &value){" происходит перезапись оператора присвоения в классе наследнике B (код не компилируется).this.data = value;
};
voidoperator=(DATA_TYPE &_data){
this.data = _data;
};
};
struct A{
string data;
voidoperator=(string value){
data = value;
};
};
struct B : Wrapper<A>{};
voidOnStart(){
B b;
string str_value;
b = str_value;
A a;
b = a;
B b1;
b = b1;
}
Usando il codice di cui sopra tutto funziona come previsto, tuttavia se cerchiamo di estendere la funzionalità e aggiungere il supporto non solo per i tipi semplici come (string) dalla classe A, ma anche per le strutture, risulta che l'operatore di assegnazione dei template dalla classe base inizia a sovrascrivere gli operatori di assegnazione predefiniti delle classi discendenti, uccidendo tutte le funzionalità. Altri operatori possono essere usati come workaround, come "operator*=", ma è un casino.
Agli sviluppatori: Si prega di aggiungere la possibilità di specificare la generazione forzata di codice per l'operatore di assegnazione predefinito (costruttore di copia):
Persone competenti, un suggerimento! Ho un simbolo personalizzato basato su uno reale. Come posso rendere disponibile un trade dal grafico di questo simbolo? O non c'è questa funzionalità in MT5?
Nelle versioni recenti di MT, come parte del cambio di paradigma nella gestione delle stringhe, si è visto che si abbandona l'uso di stringhe con terminazione NULL. Tuttavia, il funzionamento della funzione StringSetLength solleva una serie di domande.
Con StringSetLength potete solo troncare la lunghezza di una stringa ma mai aumentarla, il che in qualche modo non ha senso. È questo il comportamento previsto?
Sergey Dzyublik: Nelle ultime versioni di MT, come parte del cambio di paradigma nella gestione delle stringhe, vediamo il rifiuto di usare stringhe con terminazione NULL.
rsrozhkov: Gente esperta, potete darmi un suggerimento! Ho un simbolo personalizzato creato sulla base di un simbolo reale. Come posso rendere disponibile un trade dal grafico di questo simbolo? O non c'è questa funzionalità in MT5?
La risposta si spiega da sola. Un simbolo personalizzato è ottenuto da un qualche tipo di trasformazione da simboli reali. Qualcuno (EA, script o manualmente) deve fare la trasformazione inversa e inviare ordini per i simboli reali.
Usando il codice di cui sopra tutto funziona come previsto,
tuttavia se cerchiamo di estendere la funzionalità e aggiungere il supporto non solo per i tipi semplici come (string) dalla classe A, ma anche per le strutture,
risulta che l'operatore di assegnazione dei template dalla classe base inizia a sovrascrivere gli operatori di assegnazione predefiniti delle classi discendenti, uccidendo tutte le funzionalità.
Altri operatori possono essere usati come workaround, come "operator*=", ma è un casino.
Agli sviluppatori:
Si prega di aggiungere la possibilità di specificare la generazione forzata di codice per l'operatore di assegnazione predefinito (costruttore di copia):
Puoi dirmi se uso indicatori standard nel mio EA, per esempio iMA,
come posso impostare i loro stili di disegno per visualizzarli correttamente nella finestra di visualizzazione?
Puoi dirmi se uso indicatori standard nel mio EA, per esempio iMA,
come posso impostare gli stili di disegno perché siano visualizzati correttamente nella finestra di visualizzazione?
Come questo:colore di ingresso della media mobile personalizzata
Come questo:colore di ingresso della media mobile personalizzata
In effetti, dovete scrivere il vostro indicatore. Riscrivere gli indicatori standard non è la soluzione.
La domanda era esattamente come impostare lo stile per l'indicatore standard.
C'è un altro modo?
Tuttavia, il funzionamento della funzione StringSetLength solleva una serie di domande.
Con StringSetLength potete solo troncare la lunghezza di una stringa ma mai aumentarla, il che in qualche modo non ha senso.
È questo il comportamento previsto?
Risultato:
Nelle ultime versioni di MT, come parte del cambio di paradigma nella gestione delle stringhe, vediamo il rifiuto di usare stringhe con terminazione NULL.
Potrebbe approfondire questa idea?
Gente esperta, potete darmi un suggerimento! Ho un simbolo personalizzato creato sulla base di un simbolo reale. Come posso rendere disponibile un trade dal grafico di questo simbolo? O non c'è questa funzionalità in MT5?
La risposta si spiega da sola. Un simbolo personalizzato è ottenuto da un qualche tipo di trasformazione da simboli reali. Qualcuno (EA, script o manualmente) deve fare la trasformazione inversa e inviare ordini per i simboli reali.