Arbitraj stratejilerinin oluşturulması ve test edilmesi - sayfa 7

 
pronych :
Tamam ozaman. Bu bacaklarla limit emirlere gittiğinizde bundan bahsedeceğiz.))
Katılıyorum, bir sürü limit oyuncusunu kontrol etmek zor olacak))
 

apnu konusu.

Arbitraj pozisyonunun likiditesini belirlerken ortaya çıkan sorun.
USD birimlerinde bir çapraz çiftin en iyi bandındaki likidite nasıl doğru bir şekilde hesaplanır (ve neden)?

1) doğrudan temel para birimindeki majör aracılığıyla
2) teklif para birimine göre majör aracılığıyla

Örnek: EURCHF en iyi bandındaki hacim 2 milyon birimdir. Bu hacmi USD cinsinden kontrol etmek gerekiyor. Ne yapalım? Hemen EURUSD camına bakıyoruz ve 2 milyon euro ne kadar olduğunu anlıyoruz. Yoksa önce cari döviz kuru üzerinden kaç frank olduğunu tahmin edip, ardından USDCHF camından USD cinsinden hacmi mi belirleyeceğiz?

 
GaryKa :

apnu konusu.

Arbitraj pozisyonunun likiditesini belirlerken ortaya çıkan sorun.
USD birimlerinde bir çapraz çiftin en iyi bandındaki likidite nasıl doğru bir şekilde hesaplanır (ve neden)?

1) doğrudan temel para birimindeki majör aracılığıyla
2) teklif para birimine göre majör aracılığıyla

Örnek: EURCHF en iyi bandındaki hacim 2 milyon birimdir. Bu hacmi USD cinsinden değerlendirmemiz gerekiyor. Ne yapalım? Hemen EURUSD camına bakıyoruz ve 2 milyon euro ne kadar olduğunu anlıyoruz. Yoksa önce cari döviz kuru üzerinden kaç frank olduğunu tahmin edip, ardından USDCHF camından USD cinsinden hacmi mi belirleyeceğiz?

Ve bir kene pahasına, değil mi?
 

Çözümü TickValue aracılığıyla gördüm. Ancak durum genel (MT değil) ve ayrıca dürüst olmak gerekirse, TickValue ile yapılan manipülasyonlar başımı ağrıtıyor. Hatırlaması kolay olacak basit bir açıklama istiyorum.

Bu böyleyken:

Ask çetelerinde, satış teklifimiz var, bu nedenle mallar ( temel para birimi ) satıcılardan temin edilebilir. Değerini başka bir karşıt para biriminde (USD) yeniden hesaplayalım. Teklif çetelerinde, aksine, satın alma teklifleri var, mal yok, ancak fonlar var (karşıt para biriminde). İlgili majör aracılığıyla, bu fonları yeniden hesaplıyoruz.

Toplam:

  • Sor çeteleri için (1) yolu düşünün
  • Teklif çeteleri için (2) yolu düşünün
 
Şaka yapıyorsun ... ya da fikrini anlamadım. Yani örneğin EURUSD'deki 1 lotluk hacmin başka herhangi bir semboldeki 1 lotluk hacme eşit olduğunu mu düşünüyorsunuz?
 
GaryKa : ... Yani örneğin EURUSD'deki 1 lotluk hacmin başka herhangi bir semboldeki 1 lotluk hacme eşit olduğunu mu düşünüyorsunuz?

Aynı temel para birimine sahip çiftler için, ölçü birimleri aynı olduğundan, lotlara göre karşılaştırma kabul edilebilir. Örneğin EURCHF ve EURUSD için hacimler.


papaklas :

Yalnızca EURUSD ASK bandı satıcıları = 2,0 milyon, yani. satıcılar 2.000.000 / 100.000 = 20 lot euro satmak ve 2.000.000 / 136345 = 14.67 lot USD almak istiyor.

GBPUSD ASK çetelerinin diğer satıcıları = 3,5 milyon, yani. 3.500.000/100.000 = 35 pound lot satmak ve 3.500.000/ 164349 = 21.3 USD lot satın almak istiyorum.

Sonuç olarak, şu anda euro ve pound için 14.67 + 21.3 = 35.97 USD lot satın almak istediklerine sahibiz. Böylece herhangi bir para birimini hesaplayabilirsiniz.

Bu örnekte, aynı teklif para birimine sahip ana çiftleriniz var. Sadece lotları karşılaştırmak kabul edilemez: 20 euro lot ve pounddan 35 lot. Bu nedenle, halihazırda karşılaştırılabilir olan 14.67 ve 21.3 USD lotlarında hacimleri dönüştürüyor ve alıyoruz.


Soru biraz farklı mıydı? Bir çapraz çift için hacmi nasıl hesaplarsınız? En azından çok ile, en azından olmadan göster. Örneğin, EURCHF ve AUDNZD'deki hacimler nasıl karşılaştırılır?

GaryKa : ... USD birimlerinde bir çapraz çiftin en iyi bandındaki likiditeyi nasıl doğru bir şekilde hesaplayabilirim (ve neden)?
 

Ayrıca, izin verilen maksimum likiditeyi takas etmek ve aynı zamanda ortak birimlere dönüştürmemek için her bir sembol için lot hesaplamak için bir arbitraj pozisyonu seçeneği buldum .

A/B, B/C, C/A gibi üçgen bir arbitraj yapalım

1) İlk karakterden ve son karakterden başlıyoruz. İlk çiftte A hacmini alıyoruz (bunu A/B'ye göre sipariş boyutu olarak hatırla) ve B hacmini hesaplıyoruz (A'yı B'ye çevir). Alınan hacim B/C'den büyükse 2. adıma gidin. Daha az ise, bu hacmi hatırlayın (B/C'ye göre sipariş boyutu olarak), C'yi hesaplayın, karşılaştırın, vb. ... Zincirin sonuna başarıyla ulaştık -> zaten siparişler için hacimlerimiz var, çıkın.

2) Döngüsel bir kayma yapıyoruz (A / B, B / C idi, C / A, B / C, C / A, A / B oldu) ve 1 noktasına dönüyoruz.

 
papaklass : ... Bu para birimlerinin hacimlerini, bir pozisyon açarken gereken marj cinsinden ifade edin. Mevduat, mevduat para biriminde hesaplanır. Böylece, USD cinsinden lotlar üzerinden belirtilen para birimlerinin hacimlerini alın ve karşılaştırın.
İyi öneri.

Aşağıdaki durumlarda, mevduat para birimi USD'de bizden hangi marjın kaldırılacağını (kaldırılması gerektiğini) bağımsız olarak hesaplayalım:

- 1 lot EURCHF almak istiyoruz.
EURCHF satın almak, CHF ile EUR satın almaktır. CHF'miz yok. Onları ödünç alırız veya kendi başımıza alırız (1:1 kaldıraçla). Yani, elimizde USD (depozito) var ve daha sonra EUR alabilmemiz için CHF almamız (veya CHF olarak kredi verilirse almamamız) gerekiyor. Bu, EURCHF satın almak için, USDCHF'yi (bir mevduattan USD dolarının satışı, CHF satın alınması) ve piyasa (en kötü) fiyattan fiilen (1:1) veya sanal olarak satmamız gerektiği anlamına gelir.

- 1 lot EURCHF satmak istiyoruz.
EURCHF satmak, CHF karşılığında EUR satmaktır. EUR'muz yok (satacak hiçbir şeyimiz yok). Onları ödünç alırız veya kendi başımıza alırız (1:1 kaldıraçla). Yani USD (depozito) var ve daha sonra CHF alabilmek için EUR almamız (ya da EUR cinsinden kredi verilirse almamamız) gerekiyor. Bu, EURCHF'yi satmak için, fiilen (1:1) veya sanal olarak EURUSD satın almamız (depozitodan dolar USD satma, EUR satın alma) ve piyasa (en kötü) fiyattan almamız gerektiği anlamına gelir.

Toplam:
  • EURCHF satın alırken, kredinin USD cinsinden teminatı USDCHF fiyatları kullanılarak hesaplanmalıdır.
  • EURCHF satarken, kredinin USD teminatı EURUSD fiyatları kullanılarak hesaplanmalıdır.


Şimdi kodunuz üzerinden geçelim. Benim düşünceme göre, işlev, işlemin yönünden sorumlu olacak bir argümandan yoksundur. Her zaman temel para birimi olarak tanımlanan bir marjinCurrency değişkeniniz var. Ve buna göre, her zaman EURUSD üzerinden EURCHF satma ve alma marjını hesaplarsınız.

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

...


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


Not: Şimdi marj hesaplamalarınızın MT'ninkilerle ne kadar eşleştiğini merak ediyorum, daha çok, daha önce onlara karşı benzer iddialar vardı.

 
papaklass :

Sessizliğe bakılırsa, her şey net değil.

Soruya sayılarla cevap verin: "Çapraz çiftin hacmini nasıl hesaplarsınız? Bana lotlu veya lotsuz gösterin. Örneğin, EURCHF ve AUDNZD'deki hacimleri nasıl karşılaştırabilirim ?"

Partilerdeki farkı bulmak için, ana para birimlerinin oranlarını payda bölerim. Teminat para birimi - paydaki para birimi.

EURUSD / AUDUSD -> 1.36368 / 0.90639 = 1.50451, yani . AUDNZD'de açılan pozisyonun hacmi EURCHF'den 1.50 kat daha büyük olmalıdır .

Neden bölümleri paylaşıyorum? ...

Bu yazıyı anlamadım. Yani, bu şekilde dikkate alındığında , AUDNZD (usd cinsinden) hacminin EURCHF (usd cinsinden) hacminden yaklaşık 1,5 kat daha büyük olduğu sonucuna varırsınız. Böyle?

 
papaklass : ... Şimdi marj kodum için. Sonuçta detaylı yorum yaptım. Okumak ve anlamak gerçekten zor mu? ... Marj başka bir fonksiyon tarafından hesaplanır ... "//belirtilen yön için mevcut fiyatı al" yorumundan sonraki koda bakın.

papaklass sakince, yoksa bir srach'a kayarız. Yorum yapmadan önce kodunuza baktım, yorumuma baktınız mı? Dikkatle mi?


Hesaplama yönteminizle ilgili şikayetim (EURCHF hesaplama örneğinde) .

GaryKa : ... her zaman EURUSD kullanarak EURCHF satma ve alma marjını hesaplarsınız.

"// belirtilen yön için güncel fiyatı al" yorumundan sonra hem satarken hem de alırken her zaman sizsiniz fiyatları aynı sembol üzerinden hesaplayın ama bence farklı olanlar üzerinden hesaplamak gerekiyor (yukarıdaki gerekçe).

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

EURCHF örneğinde, calcCurrency her zaman EURUSD'dir.


PS gereksizdi, üzgünüm

GaryKa : ...Bence fonksiyon, işlemin yönünden sorumlu olacak bir argümandan yoksun...

Neden: