Sviluppatori! Testate anche quello che create? - pagina 7

 

Buon pomeriggio!

С-4

Stock# non è gratuito per il nuovo gateway Cgate Plaza II.

Cgate API - distribuito liberamente dallo scambio. Scrivete il vostro terminale (ovviamente non sarà bello come MQ),

non è difficile, è difficile tradurre Cgate API all'utente API, che sarà in grado di scrivere in qualsiasi lingua il proprio Expert Advisor - DLL.

In sostanza, la mia idea è questa:

BASE --> PLAZAII (Cgate API) --> Terminale semplice --> DLL consigliere utente.

In fig. ottengo un test di quotazioni dalla borsa tramite il protocollo Plaza II


Il terminale è quasi pronto (l'ho scritto 3 giorni)!

Nel linguaggio (in qualsiasi DLL-advisor) puoi creare tutti i "gadget" che vuoi (tazze, pulsanti, grafica aggiuntiva, ecc.),

sarete limitati solo dall'ambiente di sviluppo.

C'è, tuttavia, un grande svantaggio in questo concetto - la complessità di testare l'EA (solo attraverso i log, per ora).

Ma i vantaggi innegabili - la connessione "diretta" allo scambio, e qualsiasi linguaggio di programmazione.

P.S Il concetto di client-server (come in generale qualsiasi commercio elettronico) basato SOLO sul modello di evento: RICHIESTA-risposta - questa è la BASE!

Potete inventare tutto quello che volete (controlli vari, ecc.), ma se non funziona correttamente richiesta-risposta, alla fine sarà ancora

Inevitabilmente, questo porterà ad un errore nell'Expert Advisor.


 
Mikalas:

...

C'è, tuttavia, un grande svantaggio in questo concetto - la difficoltà di testare l'EA (solo attraverso i log, per ora).

...

C'è un grande vantaggio nel concetto di MT5 - la comunicazione sul forum con ragazzi intelligenti. Se non costa nulla, allora...

 
Mikalas:

Il terminale è quasi pronto (3 giorni interi di scrittura)!

Impressionante per tre giorni!

L'unica domanda è: se tutto è così buono, perché state ancora usando MT5?

DC2008:

C'è un grande vantaggio nel concetto di MT5 - la comunicazione sul forum con ragazzi intelligenti. Se non costa nulla, allora .

Sì, questo è sicuro. Oggi prodotti come questo non possono sopravvivere senza il loro ecosistema. Un forum, comunicazione, migliaia di utenti, attivisti come te e me pronti a postare, discutere, bloggare... Senza il supporto degli utenti, qualsiasi progetto, qualunque esso sia, prima o poi si bloccherà, e tutti gli sforzi per svilupparlo saranno sprecati.
 

С-4!

Il terminale - serve SOLO a visualizzare qualcosa!

Ho scritto prima che non è affatto difficile. La parte più difficile è trasformare l'API Cgate in un'API utente,

Ho fatto 1/200 (non il più difficile) di quello che deve essere fatto.

Cgate Plaza II è un client-server asincrono in streaming, e i flussi possono

contengono più di un tipo di informazione!

Sfortunatamente, non ho il livello per fare questa trasformazione completamente velocemente....

Ci sono solo 2 prodotti (a pagamento) sul mercato che funzionano tramite Cgate, e non sono

Non sono sicuro che sia quello giusto.

Quindi, su FORTS, finché non scrivo CGate Trader, è MT5.

 

A proposito, mi sono imbattuto in un interessante articolo su MetaTrader 5 Trading Events di MetaQuotes Software Corp, datato 24 gennaio 2011. Tra le altre cose c'è scritto:

Сообщения о торговых событиях и об изменениях в торговой истории поступают по независимым каналам. При отправке запроса на покупку функцией OrderSend() можно сразу же узнать тикет ордера, который был создан при успешном результате проверки запроса. Но в то же время сам ордер еще может не появиться в клиентском терминале и попытка выбрать его с помощью функции OrderSelect() окажется неуспешной. 

Anche:

Tutte le operazioni sul server commerciale e l'invio di messaggi sugli eventi commerciali sono eseguiti in modo asincrono. C'è solo un modo garantito per scoprire cosa è cambiato esattamente su un conto commerciale. Questo modo è quello di ricordare lo stato del commercio e la storia del commercio e confrontare il nuovo stato con quello salvato.

I seguenti sono esempi di come organizzare correttamente il banco degli ordini e degli scambi.

Se esaminate attentamente il problema dell'autore, risulterà che non c'è nessun problema, dovete solo trovare la forza morale per rifiutare la funzione OnTradeTransaction() e catturare tutti i cambiamenti in OnTimer() con aggiornamento ad alta risoluzione.

In un paio di minuti ho redatto il mio esempio di lavoro con storia cambiata.

///
/// Следит за поступлением новых трейдов и ордеров.
///
void OnTimer()
{
     datetime tBegin = TimeCurrent();
     HistorySelect(dataBegin, TimeCurrent());
     //Если новые трейды не поступили, то и нечего обрабатывать.
     if(HistoryDealsTotal() == 0)return;
     AddDeals();
     dataBegin = tBegin;
}
C'è un trabocchetto nascosto in questo esempio e non può essere usato così com'è, ma penso che il concetto sia chiaro. Ogni volta carichiamo un pezzo di storia dall'ultimo trade elaborato all'ora corrente. Se arriva un nuovo commercio, lo elaboriamo e rimescoliamo l'inizio del caricamento della storia al momento dell'arrivo del commercio.
 
C-4:

A proposito, mi sono imbattuto in un interessante articolo su MetaTrader 5 Trading Events di MetaQuotes Software Corp, datato 24 gennaio 2011. Tra le altre cose c'è scritto:

Uh-huh

 

E consiglio all'autore di leggere l'articolo Come creare un robot di trading e non perdere tempo. Si adatta esattamente:

Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.

Ma "non si può togliere il pesce dallo stagno senza lavoro", e il programmatore spesso inizia a scrivere tutta l'infrastruttura necessaria - ottenere ed elaborare i dati dei prezzi, la rappresentazione visiva dei grafici e degli indicatori, strumenti personalizzati per testare la strategia sulla storia, e così via - da zero, invece del robot di trading.

Nel processo di questo lavoro ottiene un sacco di esperienza utile. Ma allo stesso tempo lui o lei, nella maggior parte dei casi, non è un po' più vicino all'obiettivo finale - la creazione di un sistema di trading automatico. E anche se lui o lei va fino in fondo, dov'è la garanzia che il robot scritto sarà redditizio? E se lui o lei volesse scrivere un altro sistema di trading? Bisogna ricostruire tutto e affrontare i nuovi inevitabili errori di programmazione.

 

Vasily!

Capisco certamente il vostro attaccamento all'MT-5, ma credetemi sulla parola.

Non ha senso scavare nelle storie, perché i dati sbagliati potrebbero essere scritti anche lì!

Per favore, capite una cosa semplice - Client-server = richiesta-risposta!

Vedi, l'ordine è stato aggiornato e la risposta arriva che è stato eseguito parzialmente,

cosa pensi che succederà nella storia?

 

Roch!

Anche tu mi imponi ciò che ho letto cinque volte.

Non sto parlando di fare un robot (o di come scriverne uno), ma di

Non sto parlando di fare un robot (o di come scriverlo), ma di errori specifici in MT-5!

Non ti prendi nemmeno la briga di guardare attentamente la foto

Ho allegato (TEMPO DEL MESSAGGIO)

 
Mikalas:

Non ti prendi nemmeno la briga di guardare attentamente l'immagine che

Ho allegato.

Povero ragazzo, vorrei poterti aiutare... sei così teso che stai urlando.


puoi darmi un file di log testuale invece degli screenshot.

+ un codice dove posso riprodurre il tuo errore?