Mercato azionario. Azioni. Velocità di esecuzione degli ordini commerciali. - pagina 8

 
Replikant_mih #:

Non può cosa?). La migliore offerta - 10.1, getto un limite per comprare a 11, raccogliere l'intera tazza a 11 se il volume nella tazza a 11 non è sufficiente per eseguire l'intera applicazione, o fermarsi da qualche parte nel mezzo. Se è necessario che si compia esattamente, beh, per fare uno slam più grande e questo è tutto. Se volessi che il mio ordine fosse riempito con precisione, dovrei alzare il prezzo massimo e fissare un prezzo da qualche parte davanti ad esso. In generale, se spazzo tutto il vetro a una grande profondità - per me è più un segnale che sto facendo qualcosa di sbagliato))).


CIO - beh, si esegue tutto ciò che è sulla strada, poi si rimuove il resto. Alla faccia del CIO). Non faccio trading di arbitraggio, forse non capisco alcune specifiche strette. Se volete mangiare tutte le richieste fino a un certo livello - beh, si può guardare che volume c'è, e gettare a Rosno questo molto, se non siete soddisfatti con variante di ritiro resto. In breve, il compito non mi è chiaro).

Ho già parlato, che così faccio in Quick

procedure TExpert.SellBuySpot;
var
  outStr, id: string;
  res: long;
  ErrCode: long;
  ErrSize: Dword;
  ErrStr: LPSTR;
  Dt: TDateTime;
begin
  FOrder:= 0;
  FTransID:= GetTransID();
  id:= IntToStr(TransID);
  case BuySell of
    1: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=B' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.SellPrice + 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
    2: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=S' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.BuyPrice - 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
  end;
  ErrCode:= 0;
  ErrSize:= 0;
  ErrStr:= nil;
  res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
  if(res <> TRANS2QUIK_SUCCESS) then
  begin
    FTransID:= 0;
    FTransBusy:= false;
  end else
  begin
    Dt:= now();
    FMemo.Lines.Add(DateToStr(Dt) + ' ' + FormatDateTime('hh:mm:ss.zzz', Now()) +
                              ' --> Ордер ' + ExpData.SpotData.SecCode + ' отправлен.');
  end;
end;

Ma a volte (succede raramente) l'ordine rimane nel bicchiere, quindi

Bisogna rimuoverlo e impostarne uno nuovo e guardare di nuovo - tutto questo richiede troppo tempo.

Inoltre, potrebbe chiudersi prima che tu riesca a toglierlo!

Ecco perché il più affidabile è il CIO, ma non è sul posto.

Nell'arbitraggio, tutto è molto semplice, se hai comprato 100 unità di una gamba, allora devi vendere immediatamente 100 unità di un'altra gamba (la parola chiave IMMEDIATAMENTE).

Quindi la sfida è quella di fare un counter trade il più velocemente possibile al giusto prezzo e volume.

Aggiunto da

In MT-5 tutto è molto più semplice, veloce e ci sono opzioni

Per esempio, non c'è nessun problema a scorrere il mazzo SPOT e prendere non il miglior prezzo in una volta, avendo calcolato il volume totale del prezzo selezionato + i prezzi precedenti (migliori)

Ecco perché ero preoccupato per la velocità di esecuzione degli ordini di trading sul titolo in MT-5.

Ma comunque, non c'è garanzia che il mercato cambi drasticamente, e se si prende il prezzo troppo in profondità, si può uscire dalla situazione di arbitraggio!

In Quick, la velocità di transazione su SPOT andava da 240 a 490 ms, con un ping di 3-4 ms!

Su FORTS, allo stesso ping, la transazione passa da 4,5 a 12 ms.

Sfortunatamente, a causa della bassa liquidità su Forti, devi prima vendere i futures.

 
prostotrader #:

Ho già detto che è quello che faccio in Quick

Ma a volte (è raro ma succede) l'ordine rimane nel bicchiere, quindi

Quindi devo toglierlo e impostarne uno nuovo e guardarlo di nuovo - tutto questo richiede troppo tempo.

Inoltre, potrebbe chiudersi prima che tu riesca a toglierlo!

Ecco perché il più affidabile è il CIO, ma non è sul posto.

Nell'arbitraggio, tutto è molto semplice, se hai comprato 100 unità di una gamba, allora devi vendere immediatamente 100 unità di un'altra gamba (la parola chiave IMMEDIATAMENTE).

Quindi la sfida è quella di fare un counter trade il più velocemente possibile al giusto prezzo e volume.

Aggiunto da

In MT-5 tutto è molto più semplice, veloce e ci sono opzioni

Per esempio, non c'è nessun problema a scorrere il mazzo SPOT e prendere non il miglior prezzo in una volta, avendo calcolato il volume totale del prezzo selezionato + i prezzi precedenti (migliori)

Ecco perché ero preoccupato per la velocità di esecuzione degli ordini di trading sul titolo in MT-5.

Ma comunque, non c'è garanzia che il mercato cambi drasticamente, e se si prende il prezzo troppo in profondità, si può uscire dalla situazione di arbitraggio!

In Quick, la velocità di transazione su SPOT andava da 240 a 490 ms, con un ping di 3-4 ms!

Su FORTS, allo stesso ping, la transazione passa da 4,5 a 12 ms.

Purtroppo, a causa della bassa liquidità sui forti, devi prima vendere i futures.


Capito.
È reale arbitrare le azioni contro i futures su mt5-Quik? O ho bisogno di qualche componente "intellettuale" per competere in qualche modo con i miei compagni veloci?

 
Replikant_mih #:


Capito.
È realistico arbitrare le azioni contro i futures alla velocità di mt5-Quik? O ho bisogno di qualche componente "intellettuale" per competere in qualche modo con i compagni veloci?

Se solo Classic, allora Quick è abbastanza buono, e se, come voglio provare, lo scalping, allora ho bisogno almeno di MT-5 (2 terminali)

 
prostotrader #:

Se solo Classic, allora Quick è abbastanza buono, e se, come voglio provare, lo scalping, allora ho bisogno almeno di MT-5 (2 terminali)

2 perché il broker non permette di scambiare azioni e futures in un solo terminale (come in Otkritie) o perché tutto funziona nella vostra connessione dei terminali e non ci sarà bisogno di cambiare nulla? Solo mt5-mt5 invece di mt5-Quik.

 
Replikant_mih #:

2 perché il broker non ti permette di scambiare sia azioni che futures in un solo terminale (come Otkritie) o perché tutto funziona nella tua connessione al terminale e quindi non dovrai rifare nulla? Sarà solo mt5-mt5 invece di mt5-Quik.

No, è solo quik ora, ho iniziato a scrivere mt5 - mt5

Aggiunto da

Bene, ecco qui, scritto.

Ora, non è chiaro quando sarà possibile testare...


 
prostotrader #:

No, ora solo Quick, ho iniziato a scrivere MT5 - MT5

Aggiunto da

Bene, ecco, l'ho scritto.

Ora, non è chiaro quando sarà possibile testarlo...


Congratulazioni!

E come pianifichi - per ogni coppia di spot futures il tuo EA o un EA per tutte le coppie?

 
Andrey Miguzov #:

Congratulazioni!

Come pianifichi - per ogni coppia di spot futures un EA diverso o un EA per tutte le coppie?

Il mio set client-server per ogni coppia

Perché il mal di testa di seguire tutti i futures e gli SPOT da un solo EA?

L'EA è essenzialmente uno solo (client), il server è solo un esecutore - una stampella per comprare SPOTs :)

Aggiunto

Advisor - il client invia (riceve) automaticamente al (dal) server tutti i dati necessari.

Non importa quale coppia, il consulente si adatta automaticamente alla coppia futurespot.

 
prostotrader #:

Perché il mal di testa di seguire tutti i futures e gli SPOT da un solo EA.

Onestamente parlando, sono stato molto ispirato dai tuoi screenshot dal mio account personale su Otkritie e sto ancora debuggando l'Expert Advisor per il trading di futures-stocks (non scalping, ma i classici in modalità head-on).

L'approccio logico è quello di entrare nella coppia con un profitto maggiore prima della scadenza (tenendo conto della commissione e del numero effettivo di contratti).

Di conseguenza, dobbiamo analizzare tutte le coppie reali. Se si imposta un EA per ogni coppia - lavoreranno indipendentemente l'uno dall'altro.

Il mal di testa è davvero presente, soprattutto quando si chiudono le posizioni su una coppia e si passa a un'altra. Inoltre penso che rallenterà quando ci sono molte coppie.


ZZZ: Dato il valore attuale dei tassi, nel prossimo futuro, la redditività di una tale strategia sarà ancora maggiore, se lo scambio è aperto naturalmente :)

Vedo dal video + che tu stesso hai scritto che scrivi per lo scalping. La media di entrata e di uscita - è la media EMA (link) o fai la media in qualche altro modo (se non è un segreto)?

 
Andrey Miguzov #:

La media di ingresso e uscita è la media EMA (link) o stai facendo la media in qualche altro modo (se non è un segreto)?

Non c'è nessun segreto, calcolo semplicemente la media ogni volta che accedo alla funzione

exp_data.midle_enter = exp_data.midle_enter * exp_data.m_ent_cnt;
  exp_data.m_ent_cnt++;
  exp_data.midle_enter = (exp_data.midle_enter + result)/exp_data.m_ent_cnt; 

exp_data.midle_exit = exp_data.midle_exit * exp_data.m_exit_cnt;
  exp_data.m_exit_cnt++;
  exp_data.midle_exit = (exp_data.midle_exit + result)/exp_data.m_exit_cnt;

Questi dati sono necessari per capire il livello di prezzo di questa coppia.

 
prostotrader #:

Non c'è nessun segreto, calcolo semplicemente la media ogni volta che la funzione viene chiamata.

Ho bisogno di questi dati per capire il livello di prezzo di una data coppia.

Capisco, se in termini di ondulazione, è laSMA. Ma più è lontano dall'inizio del calcolo, più il valore medio si allontanerà da quello attuale.

Approssimativamente, questo metodo di mediazione non "dimentica" i vecchi valori, perché exp_data.m_ent_cnt aumenta sempre di più ad ogni chiamata e ogni nuovo valore ha sempre meno effetto sul risultato finale.

Secondo le mie osservazioni, il valore medio cambia durante il giorno ed è abbastanza sensibile.

In teoria EMA dovrebbe essere più adatto per lo scalping, il codice sarà approssimativamente come segue:

double EMA_period = 100.0; //Период ЕМА для усреднения, тиков
double SmoothFactor = 2.0/(1.0+EMA_period);
 
if (EMA_ask<0) EMA_ask=ask; //первый тик
   else
  EMA_ask=ask*SmoothFactor+EMA_ask*(1.0-SmoothFactor);