//+------------------------------------------------------------------+//| Получает хэндлы индикаторов |//+------------------------------------------------------------------+void GetIndicatorHandles()
{
//--- Пройдемся по всем символамfor(int s=0; s<NUMBER_OF_SYMBOLS; s++)
{
//--- Если торговля по этому символу разрешенаif(Symbols[s]!="")
{
//--- Если хэндл еще не полученif(signal_indicator_handles[s]==INVALID_HANDLE)
{
//--- Получим хэндл индикатора
signal_indicator_handles[s]=iMA(Symbols[s],_Period,IndicatorPeriod[s],0,MODE_SMA,PRICE_CLOSE);
//--- Если не удалось получить хендл индикатораif(signal_indicator_handles[s]==INVALID_HANDLE)
Print("Не удалось получить хэндл индикатора для символа "+Symbols[s]+"!");
}
}
}
}
//+------------------------------------------------------------------+//| Получает значения индикаторов |//+------------------------------------------------------------------+bool GetIndicatorsData(int symbol_number)
{
//--- Количество значений индикаторного буфера для определения торгового сигнала int NumberOfValues=3;
//--- Если хэндл индикатора был полученif(signal_indicator_handles[symbol_number]!=INVALID_HANDLE)
{
//--- Установим обратный порядок индексации (... 3 2 1 0)ArraySetAsSeries(indicator[symbol_number].value,true);
//--- Получим значения индикатораif(CopyBuffer(signal_indicator_handles[symbol_number],0,0,NumberOfValues,indicator[symbol_number].value)<NumberOfValues)
{
Print("Не удалось скопировать значения ("+
Symbols[symbol_number]+"; "+TimeframeToString(_Period)+") в массив indicator! Ошибка ("+
IntegerToString(GetLastError())+"): "+ErrorDescription(GetLastError())+"");
return(false);
}
return(true);
}
//--- Если хэндл индикатора не получен, то...else
{
// ...попробуем получить его еще раз
GetIndicatorHandles();
}
return(false);
}
Проверка
Print("++++++++indicator[symbol_number][0]",Symbols[symbol_number],"= ",indicator[symbol_number].value[0]);
В этой статье мы рассмотрим реализацию простой схемы для мультивалютного эксперта. В данном случае имеется в виду, что эксперт можно будет настроить на тестирование/торговлю по одинаковым условиям, но с разными параметрами для каждого символа. В качестве примера создадим схему для двух символов, но сделаем это так, чтобы при необходимости можно было добавлять дополнительные символы, внося небольшие изменения в код.
こんにちは!私は記事https://www.mql5.com/ru/articles/648 から私のExpert Advisorを再設計 し、私自身の関数を挿入しようとしています。問題は、インジケータをフラクタルに変更できないことです。signal_indicator_handles[s]=iMA(Symbols[s],_Period,IndicatorPeriod[s],0,MODE_SMA,PRICE_CLOSE) を iFractals(Symbols[s], PERIOD_M15) に置き換えると間違った価格が表示されます。手伝って、コードをいじってくれる?
手作業で制作しているのですか?
いいえ。
みなさん、こんにちは。
この質問に答えてください。
Expert Advisorのテスト 終了時に、使用した標準インジケータをMT4のチャートウィンドウに表示しないようにするにはどうすればよいですか?
皆さん、こんにちは。
この質問に答えてください。
Expert Advisorのテスト 終了時に、使用した標準インジケータをMT4のチャートウィンドウに表示しないようにするにはどうすればよいですか?
いいえ。
作成されたグラフの識別子は、以下のようにして取得できます。
HideTestIndicators() のヘルプを参照してください。
作成したグラフの識別子を以下のように取得する。