私はブレイクアウトを取引する 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 行目のグローバル宣言を非表示にします
これは単なる警告であり、エラーではありません。