我有一个交易突破的 EA。我在多对上运行这个。当具有高相关性的两对交易方向相同(或相反,如果负相关)时,就会出现问题。这使我的风险加倍。因此,我在我的 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 行的全局声明
这只是一个警告,而不是错误。