Errori, bug, domande - pagina 1723

 

Come copiare (mantenendo i percorsi relativi) tutti i file del progetto in una cartella separata.

Per esempio, voglio condividere un codice. Estrae una dozzina di file mqh da posti diversi.

Ora devo cercare questi file manualmente, spesso non è possibile trovarli tutti o prendere qualcosa di inutile. Come automatizzare questo processo per poter condividere le fonti?

 

Come faccio a cancellare un progetto con tutti i suoi file?

Ho scaricato un progetto con una dozzina di file dal terminale di kodobase, ma come faccio a cancellarlo?

 

Errore di compilazione

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) In generale, nello schema (1) sia A->(2) che const A->(3) possono essere sostituiti da T. A differenza del modello (4), dove solo A->(5) può essere sostituito da T.

Ora solo la sostituzione A->(2) funziona, quindi per un uso completo dobbiamo fare due modelli invece di uno:

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

Nota: la definizione esplicita (6) ha una priorità maggiore rispetto al caso generale (*)

Totale: in assenza del modello (6), ci si aspettava di applicare il modello (1) con firma (3)

 
A100:
Ti chiedo davvero di postare qualcosa su kodobase! Per scopi educativi.
 
1) L'MT5 aggiorna le posizioni aperte e la storia del trading dopo che una chiamata OrderSend si verifica con un certo ritardo? Se sì, qual è il timeout consigliato per l'attesa?

2) Stessa domanda per MT4, per confronto.
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSend NON è completamente sincronizzato - non c'è sincronizzazione con l'ambiente di trading. Questo significa che le letture della storia non corrispondono alla situazione reale.

Nessun timeout è fuori questione. Non c'è una soluzione affidabile al problema, perché dovete affrontare i problemi di sincronizzazione a livello di terminale, non a livello di server.

In effetti, gli utenti di MT5 stanno affrontando quello che gli sviluppatori del ponte MT4 stanno affrontando.

Se viene inviato un OrderSend, bisogna RICORDARE (è qui che si trova la potenziale vulnerabilità) che è stato fatto. Poi ignora la storia corrente (ambiente di trading) fino a quando il messaggio corrispondente arriva in OnTrade. Una volta arrivato, RICORDATI di DIMENTICARE.

Quando non c'è REMEMBER, ci si può fidare della storia come in MT4.

2) Stessa domanda per MT4, per confronto.
MT4-OrderSend è COMPLETAMENTE sincronizzato.
 

Версия и битность терминала

Versione: 5.00, build 1445 (07.10.2016), 32 bit.

Descrizione del problema

L'indicatore non riesce a copiare i dati degli indicatori standard (integrati in MT5) da un altro timeframe (diverso dal timeframe corrente del grafico dove è installato l'indicatore). Allo stesso tempo si può ottenere il "manico" dell'indicatore standard, ma la funzione CopyBuffer() restituisce sempre -1. Nella modalità di visualizzazione del tester il problema non si verifica, ma nel terminale sul grafico (a cui è collegato l'indicatore) il problema è sempre presente.

Sequenza di azioni

descritto sopra.

Risultato ottenuto

Descritto sopra.

Risultato atteso

Copia corretta dei dati degli indicatori standard (e preferibilmente personalizzati) da altri timeframe nell'indicatore.

Informazioni aggiuntive

Nelle "build" precedenti questo problema non si verificava.

Qualcuno ha incontrato un tale problema? È un "bug" del terminale o mio?

 

fxsaber:

...Se viene inviato un OrderSend, bisogna RICORDARE (è qui che si trova la potenziale vulnerabilità) che è stato fatto. Poi, ignorare la storia corrente (ambiente di trading) fino a quando non arriva il messaggio OnTrade appropriato. Appena arriva, il RICHIESTO dovrebbe essere VIETATO...

O la mia memoria è rotta, o la documentazione nella parte OnTrade è stata aggiornata:

...Se la chiamata alla funzione OrderSend() ha successo e restituisce true, questo significa che il server di trading ha messo in coda l'ordine per essere eseguito e gli ha assegnato un numero di ticket. Non appena il server elabora questo ordine, viene generato l'evento Trade. E se l'utente ricorda il valore del biglietto, può scoprire cosa è successo esattamente all'ordine usando questo biglietto quando elabora l'evento OnTrade()...

In altre parole, l'attivazione di OnTrade al passo i-esimo è una garanzia che l'ordine è accettato sul server.

 
Dennis Kirichenko:

O la mia memoria è confusa o la parte OnTrade della documentazione è stata aggiornata:

In altre parole, l'attivazione di OnTrade al passo i è una garanzia che l'ordine è accettato sul server.

Ricordare il biglietto (non il fatto che sarà restituito da OrderSend) o il fatto stesso che è stato fatto OrderSend con true-return è VERO.
 
fxsaber:
Ricordare il biglietto (non il fatto che sarà restituito da OrderSend) o il fatto che è stato fatto OrderSend con true-return è MUST.

Tutto va bene lì, il piazzamento degli ordini dovrebbe essere controllato attraverso OnTradeTransaction, a proposito, se ti connetti alla borsa direttamente attraverso Plaza2, la situazione è la stessa - devi controllare l'arrivo dei messaggi sul piazzamento degli ordini. In MT4, questa funzione è sincrona, ma la stessa opzione è disponibile in MT5, solo che in questo caso, la logica si ferma fino a quando la funzione non riceve alcuna risposta.

Se avete bisogno, posso mandarvi la classe di controllo, anche se è scritta per il posizionamento sul mercato, ma presto la finalizzerò per i limitatori.