Edward Garnica yerleştirildiğini veya bahsettiğiniz üç sembole yerleştirilmesi gerektiğini bilmek istiyorum.
Hepsi kodda tanımlandığı için, belirtilen üç sembol dışında bir sembol bile kullanılabilir.
Geçmiş veriler üzerinde iyi çalışıyor (hedef kar 0,1$ olarak ayarlandı). Gecikmeyi (ping) 60 ms seviyesinde ayarladım.
Ayrıca bir demo hesabında gerçek veriler üzerinde denedim:
İşlemleri açıyor ve kapatıyor, ancak dezavantajlı. Muhtemelen uzun ping süresi nedeniyle (yaklaşık 60 ms vardı).
VPS üzerinden denemek istiyorum.
Ayrıca bir demo hesabında gerçek veriler üzerinde denedim:
İşlemleri açıyor ve kapatıyor, ancak dezavantajlı. Muhtemelen uzun ping süresi nedeniyle (yaklaşık 60 ms vardı).
VPS üzerinden denemek istiyorum.
sfhomebiz #:
Geçmiş veriler üzerinde iyi çalışıyor(hedef kar 0,1$ olarak ayarlandı). Gecikmeyi (ping) 60 ms olarak ayarladım.
Bunun nedeni şudur. Geçmiş veriler üzerinde iyi çalışıyor(hedef kar 0,1$ olarak ayarlandı). Gecikmeyi (ping) 60 ms olarak ayarladım.
void CloseArbitragePositions() { double totalProfit = 0; // Calcola il profitto cumulativo delle posizioni col Magic Number for(int i = 0; i < PositionsTotal(); i++) { ulong ticket = PositionGetTicket(i); if(PositionSelectByTicket(ticket)) { if(PositionGetInteger(POSITION_MAGIC) == MagicNumber) totalProfit += PositionGetDouble(POSITION_PROFIT); } } if(totalProfit >= ProfitTarget) { Print("Profit target raggiunto: ", totalProfit, ". Procedo alla chiusura delle posizioni."); // Chiude le posizioni iterando all'indietro per sicurezza for(int i = PositionsTotal() - 1; i >= 0; i--) { ulong ticket = PositionGetTicket(i); if(PositionSelectByTicket(ticket)) { if(PositionGetInteger(POSITION_MAGIC) == MagicNumber) { string sym = PositionGetString(POSITION_SYMBOL); if(!trade.PositionClose(sym)) Print("Errore nella chiusura della posizione su ", sym, " - ", GetLastError()); else Print("Posizione su ", sym, " chiusa con successo."); } } } } }
// Bu daha güçlüdür, daha yüksek trashold kullanılabilir int CheckArbitrageOpportunity(double &diff, double &impliedPrice, double &directPrice) { double price1 = SymbolInfoDouble(symbol1, SYMBOL_BID); double price2 = SymbolInfoDouble(symbol2, SYMBOL_BID); directPrice = SymbolInfoDouble(symbol3, SYMBOL_ASK); impliedPrice = price1 * price2; diff = (impliedPrice - directPrice) / directPrice; if(diff > Threshold) return 1; price1 = SymbolInfoDouble(symbol1, SYMBOL_ASK); price2 = SymbolInfoDouble(symbol2, SYMBOL_ASK); directPrice = SymbolInfoDouble(symbol3, SYMBOL_BID); impliedPrice = price1 * price2; diff = (impliedPrice - directPrice) / directPrice; if(diff < -Threshold) return -1; return 0; }
michal_ SYMBOL_BID); double price2 = SymbolInfoDouble(symbol2, SYMBOL_BID); directPrice = SymbolInfoDouble(symbol3, SYMBOL_ASK); impliedPrice = price1 * price2; diff = (impliedPrice - directPrice) / directPrice; if(diff > Threshold) return 1; price1 = SymbolInfoDouble(symbol1, SYMBOL_ASK); price2 = SymbolInfoDouble(symbol2, SYMBOL_ASK); directPrice = SymbolInfoDouble(symbol3, SYMBOL_BID); impliedPrice = price1 * price2; diff = (impliedPrice - directPrice) / directPrice; if(diff < -Threshold) return -1; return 0; }
Neden doğrudan fiyatın sorusunu hesaplamak için ilk iki sembolün teklifini kullanmaya karar verdiniz ve tam tersi ...?
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Üçgen Arbitraj:
Bu Uzman Danışman (EA) üç döviz çifti arasında üçgen bir arbitraj stratejisi uygular: EURUSD, USDJPY ve EURJPY
Author: Джованни Орсани