Uzman Danışmanlar: Üçgen Arbitraj

 

Üçgen Arbitraj:

Bu Uzman Danışman (EA) üç döviz çifti arasında üçgen bir arbitraj stratejisi uygular: EURUSD, USDJPY ve EURJPY

Author: Джованни Орсани

 
hola qusiera saber en que simbolo se coloca el EA para que trabaje or toca colocarlo en los tres simbolos que mencionas
 
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.
 
sfhomebiz #:
Geçmiş veriler üzerinde iyi çalışıyor(hedef kar 0,1$ olarak ayarlandı). Gecikmeyi (ping) 60 ms olarak ayarladım.
Bunun nedeni şudur.
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 koşula sahip tüm EA'lar iyi bir şey gösterecektir.
 
fxsaber #:
Bunun nedeni şudur. Bu koşula sahip tüm EA'lar iyi bir şey gösterecektir.
Yani negatif olan sonuçları yazdırmıyor mu?
 
xery #:
Yani negatif olan sonuçları göstermiyor mu?

Yalnızca Test Cihazı geçişi durdurulduğunda.

 
// 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 ...?