1

私はブレイクアウトを取引する EA を持っています。これを複数のペアで実行します。この問題は、高い相関関係を持つ 2 つのペアが同じ方向 (負の相関関係がある場合は反対方向) で取引された場合に発生します。それは私のリスクを2倍にします。そのため、EA にスニペットを追加して、現在のシンボルと高度に相関しているシンボルのオープン ポジションが既に存在する場合、新しいトレードを開始できないようにしました。

(これは私が試したものです):

string       strSymbol;
string       HighCorrelationPairs[];

int OnInit() {
   strSymbol = Symbol();
   if (  strSymbol == "EURAUD" ) {
         ArrayResize( HighCorrelationPairs, 1 );
         string HighCorrelationPairs[1] = { "EURJPY" };
   }
   else if (  strSymbol == "EURJPY" ) {
              ArrayResize( HighCorrelationPairs, 2 );
              string HighCorrelationPairs[2] = { "EURAUD", "EURUSD" };
        }
        else if (  strSymbol == "EURUSD" ) {
                   ArrayResize( HighCorrelationPairs, 2 );
                   string HighCorrelationPairs[2] = { "EURJPY", "USDCHF" };
             }
             else if (  strSymbol == "GBPJPY" ) {
                        ArrayResize( HighCorrelationPairs, 1 );
                        string HighCorrelationPairs[1] = { "GBPUSD" };
                  }
                  else if (  strSymbol == "GBPUSD" ) {
                             ArrayResize( HighCorrelationPairs, 1 );
                             string HighCorrelationPairs[1] = { "GBPJPY" };
                       }
                       else if (  strSymbol == "USDCHF" ) {
                                  ArrayResize( HighCorrelationPairs, 1 );
                                  string HighCorrelationPairs[1] = { "EURUSD" };
                            }
                            else if (  strSymbol == "USDJPY" ) {
                                       ArrayResize( HighCorrelationPairs, 1 );
                                       string HighCorrelationPairs[1] = {};
                                 }
                                 else {
                                        ArrayResize( HighCorrelationPairs, 1 );
                                        string HighCorrelationPairs[1] = {};
                                 }
}

void OnTick() {          //--- Check Correlation and Number of Trades
   for ( k = OrdersTotal() - 1; k >= 0; k-- ) {
         if (  OrderSelect( k, SELECT_BY_POS, MODE_TRADES ) ) {
               if (  OrderType() == OP_BUY
                  || OrderType() == OP_SELL
                     ) {
                     if (  OrderSymbol()      == Symbol()
                        && OrderMagicNumber() == MagicNumber
                           ) {
                           return;
                     }
                     if (  TimeCurrent() - OrderOpenTime() <= 18000 ) {
                           for ( int i = 0;i <  ArraySize( HighCorrelationPairs ); i++ ) {
                                 if (  OrderSymbol() == HighCorrelationPairs[i] ) { return; }
                           }
                     }
               }
         }
   }
}

コンパイル時に、これは私が受け取った警告です

変数「HighCorrelationPairs」は使用されていません
'HighCorrelationPairs' の宣言は、120 行目のグローバル宣言を非表示にします

これは単なる警告であり、エラーではありません。

4

2 に答える 2