エキスパート: 三角裁定取引

 

三角裁定取引:

このエキスパートアドバイザー(EA)は、EURUSD、USDJPY、EURJPYの3つの通貨ペア間の三角裁定取引戦略を実装しています。

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

 
こんにちは、EAが動作するようにEAをどのようなシムボロに配置 するか、または言及されている3つのシムボロに配置するかについて教えてください。
 
Edward Garnica 配置 すれば機能するのか、またはあなたが挙げた3つのシンボルに配置する必要があるのかを知りたいです。
どのようなシンボルでも使用可能で、言及された3つのシンボル以外でも使用可能です。
 
ヒストリカルデータ(目標利益は0.1ドルに設定)でうまく機能する。

また、デモ口座のリアルデータでも試してみました。
取引の開始と終了はできますが、不利です。
VPSで試してみたい。
 
sfhomebiz #:
ヒストリカルデータ(目標利益は 0.1ドルに設定)でうまく機能する。私は遅延(ping)を60ミリ秒に設定した。
理由はこれです。
void CloseArbitragePositions()
{
   double totalProfit = 0;
  
   // マジックナンバーでポジションの累積利益を計算する
   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.");
      
      // 安全性を確保するため、内側を繰り返しながら位置を決める。
      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.");
            }
         }
      }
   }
}
この条件を設定したEAはすべて良いものを表示します。
 
fxsaber #:
理由はこうだ。この条件のEAはすべて良い結果を表示します。
では、マイナスの結果は表示されないのですね?
 
xery #:
否定的な結果は表示されないのですか?

テスターパスが止まっている時だけです。

 
// 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; }.
directPriceのaskを計算するのに、なぜ最初の2つのシンボルのbidを使うことにしたのですか?