Creare e testare strategie di arbitraggio - pagina 7

 
pronych:
Tutto a posto. Ne parleremo quando andrai a fare ordini limite con queste gambe)).
Sono d'accordo, sarà un po' difficile controllare uno sciame di ordini limite ))
 

Inizierò un nuovo argomento.

Questa domanda può sorgere quando stiamo definendo la liquidità per la posizione di arbitraggio.
Come ricalcolare correttamente la liquidità di una coppia di cross in unità USD su una banda migliore (e perché)?

1) direttamente attraverso il maggiore in valuta di base
2) via major in valuta quotata

Esempio: il volume sul EURCHF Best Bund è di 2 milioni di unità. Dovete controllare questo volume in USD. Cosa dobbiamo fare? Guardiamo il ticker EURUSD e stimiamo quanto sono 2 milioni di euro. Oppure, stimiamo il volume in CHF al tasso di cambio attuale e poi calcoliamo il volume in USD usando il quadrante USDCHF?

 
GaryKa:

Inizierò un nuovo argomento.

Questa domanda può sorgere quando stiamo definendo la liquidità per la posizione di arbitraggio.
Come ricalcolare correttamente la liquidità di una coppia di cross in unità USD su una banda migliore (e perché)?

1) direttamente attraverso il maggiore in valuta di base
2) via major in valuta quotata

Esempio: il volume sul EURCHF Best Bund è di 2 milioni di unità. Dovete controllare questo volume in USD. Cosa dobbiamo fare? Guardiamo il ticker EURUSD e stimiamo quanto sono 2 milioni di euro. Oppure, stimiamo il volume in CHF al tasso di cambio attuale e poi calcoliamo il volume in USD usando il quadrante USDCHF?

E attraverso il valore della zecca, no?
 

Ho visto la soluzione tramite TickValue. Ma il caso è generale (non MT) e inoltre, sarò onesto, manipolare TickValue mi fa venire il mal di testa. Vorrei una spiegazione semplice, che sia facile da ricordare.

Finora è così:

Su Ask gangs, abbiamo un'offerta di vendita, quindi i venditori hanno la merce(valuta base) disponibile. Noi calcoliamo semplicemente il suo costo in un'altra valuta di quotazione (USD). Sul lato opposto del banco dell'offerta non abbiamo prodotti disponibili per l'acquisto, ma abbiamo fondi (nella valuta quotata). Attraverso il maggiore corrispondente, ricalcolare questi fondi.

Totale:

  • per Ask gangs contare (1) modo
  • Per le bande Bid calcoliamo in (2) modo
 
Stai scherzando... O non capisco cosa stai dicendo. Quindi pensi che il volume di 1 lotto per esempio su EURUSD sia uguale al volume di 1 lotto su qualsiasi altro simbolo?
 
GaryKa: ... Quindi, pensate che il volume di 1 lotto per esempio su EURUSD sia uguale a 1 lotto su qualsiasi altro simbolo?

Per le coppie con la stessa valuta di base, il confronto per lotti è accettabile, perché le unità sono le stesse. Per esempio i volumi per EURCHF e EURUSD.


cartapesta:

Alcuni venditori EURUSD ASK-band = 2,0 milioni, cioè i venditori vogliono vendere 2 000 000 / 100000 = 20 lotti di EUR e comprare 2 000 000 / 136345 = 14,67 lotti di USD.

Altri venditori GBPUSD ASK-band = 3,5 milioni, cioè i venditori vogliono vendere 3 500 000 / 100000 = 35 lotti di GBP e comprare 3 500 000 / 164349 = 21,3 lotti di USD.

Come risultato abbiamo che al momento vogliono comprare 14,67 + 21,3 = 35,97 lotti USD per euro e sterlina. Si può calcolare qualsiasi valuta in questo modo.

In questo esempio hai delle coppie principali che hanno la stessa valuta di quotazione. Il solo confronto per lotti non è accettabile: 20 lotti di eur e 35 lotti di pound. Quindi convertire e ottenere volumi in lotti di USD: 14,67 e 21,3, che possono già essere confrontati.


La domanda era un po' diversa? Come si calcola il volume di una coppia di croci? Mostrami con o senza lotti. Per esempio, come confrontare il volume di EURCHF e AUDNZD?

GaryKa: ... Come ricalcolare correttamente la liquidità sulla banda migliore di una coppia di cross in unità USD (e perché)?
 

Ecco un ' altra opzione per la posizione di arbitraggio, per calcolare i lotti per ogni simbolo per scambiare più liquidità possibile senza convertire in unità comuni.

Supponiamo di avere un arbitraggio triangolare di tipo A/B, B/C, C/A

1) Iniziare dal primo simbolo all'ultimo. Prendete il volume A sulla prima coppia (ricordate come dimensione dell'ordine di A/B) e calcolate il volume B (convertite A in B). Se il volume ottenuto è più grande di quello di B/C, si passa al punto 2. Se è più piccolo, si memorizza questo volume (come misura d'ordine per B/C), si calcola C, lo si confronta, ecc. Abbiamo raggiunto con successo la fine della catena -> abbiamo già volumi per ordini, uscite.

2) Fare uno spostamento ciclico (era A/B, B/C, C/A è diventato B/C, C/A, A/B), e tornare al punto 1)

 
papaklass: ... Esprimere i volumi per queste valute attraverso il collaterale richiesto all'apertura della posizione. Quindi, ottenete i volumi di queste valute in USD e confrontateli.
Buon suggerimento.

Calcoliamo da soli quanto margine ci verrà (dovrà) detratto nella valuta del deposito in USD se:

- Vogliamo comprare 1 lotto di EURCHF.
Comprare EURCHF significa comprare EUR per CHF. Noi non abbiamo il CHF. Li prendiamo in prestito o li compriamo noi stessi (con una leva 1:1). In altre parole, abbiamo USD (deposito) e dobbiamo comprare CHF (o non comprare se il credito è disponibile in CHF) per comprare EUR. Significa che per comprare EURCHF, dobbiamo realmente (leva 1:1) o virtualmente vendere USDCHF (vendendo USD dal deposito, comprando CHF), ad un prezzo di mercato (worst-case).

- Vogliamo vendere 1 lotto di EURCHF.
Vendere EURCHF è vendere EUR per CHF. Non abbiamo EUR (non abbiamo niente da vendere). O li prendiamo in prestito o li compriamo noi stessi (con una leva 1:1). In altre parole, abbiamo USD (deposito) e dobbiamo comprare EUR (o non comprare, se il credito ci viene fornito in EUR) per comprare CHF. Significa che per vendere EURCHF, dobbiamo effettivamente (leva 1:1) o virtualmente comprare EURUSD (vendendo USD dal deposito, comprando EUR), al prezzo di mercato (worst-case).

Linea di fondo:
  • quando si acquista EURCHF, il margine USD per il credito deve essere calcolato utilizzando i prezzi USDCHF
  • sulla vendita EURCHF, il margine USD per il credito deve essere calcolato utilizzando i prezzi EURUSD


Ora esaminiamo il tuo codice. A mio parere, la funzione manca di un argomento che sarebbe responsabile della direzione dell'affare. Avete la variabile marginCurrency, che è sempre definita come valuta di base. Quindi, di conseguenza, il margine sia per la vendita che per l'acquisto di EURCHF è sempre calcolato attraverso EURUSD.

   string marginCurrency = StringSubstr( StringTrimLeft( smb ), 0, 3 );

...


   if( calcCurrency == "" ){
      calcCurrency = GetSymbolByCurrencies( marginCurrency, accCurrency );
      mode = true;
     
      if( calcCurrency == "NULL" ){
         calcCurrency = GetSymbolByCurrencies( accCurrency, marginCurrency );
         mode = false;
      }
   }


P.S. Sono curioso di sapere fino a che punto i vostri calcoli di margine coincidono ora con i calcoli di MT, soprattutto perché ci sono state affermazioni simili a loro prima.

 
papaklass:

A giudicare dal silenzio, non tutto è chiaro.

Rispondere con cifre alla domanda: "Come si calcola il volume di una coppia di croci? Mostrami con o senza lotti. Per esempio, come si confrontano i volumi su EURCHF e AUDNZD?".

Per scoprire la differenza di lotti, divido i tassi delle principali valute al numeratore. La valuta del pegno è la valuta che si trova nel numeratore.

EURUSD / AUDUSD -> 1.36368 / 0.90639 = 1.50451, cioè il volume della posizione AUDNZD da aprire deve essere 1.50 volte superiore a EURCHF.

Perché dividere le major?

Non capisco questo post. Quindi, contando in questo modo si conclude che il volume su AUDNZD (in USD) è circa 1,5 volte più grande del volume su EURCHF (in USD). Giusto?

 
papaklass: ... Ora il mio codice per il calcolo del margine. L'ho commentato in dettaglio. Non è difficile da leggere e capire? Il margine è calcolato da un'altra funzione... Guardate il codice dopo il commento "//ricevere il prezzo corrente per la direzione specificata".

Papaklass calmati o finiremo per litigare. Ho guardato il tuo codice prima di commentare, hai guardato il mio commento? Con attenzione?


Il mio reclamo al vostro metodo di calcolo (con l'esempio del calcolo EURCHF).

GaryKa: ... Si calcola sempre la sicurezza sia per vendere che per comprare EURCHF attraverso EURUSD.

Dopo il commento "//fetch the current price for the specified direction" si calcolano sempre i prezzi allo stesso simbolo sia quando si compra che quando si vende , mentre credo che si debbano calcolare a simboli diversi (giustificazione sopra).

   prc = Dbl_If( dir == OP_BUY, MarketInfo( calcCurrency, MODE_ASK ),
                                MarketInfo( calcCurrency, MODE_BID ) );

Nell'esempio EURCHF, hai sempre EURUSD.


P.S. non era necessario, scusate

GaryKa: ... A mio parere, la funzione manca l'argomento che sarebbe responsabile per la direzione del commercio ...