AkaEdie #: это если у индикатора есть имя, а если он добавлен по хендлу не все так просто
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
С уважением, Владимир.
Это прописывается в индикаторе, а не в момент его постановки на график.
вот и я о томже, у меня индикатор аллигатор используется, как его в таком случае подключить к графику если я эту строку кода пропишу в коде индиктаора? через inlude? а конфликта не будет?
AkaEdie #: вот и я о томже, у меня индикатор аллигатор используется, как его в таком случае подключить к графику если я эту строку кода пропишу в коде индиктаора? через inlude? а конфликта не будет?
Меня вот только сейчас, когда я полистал документацию повнимательней, заинтересовал этот вопрос…
Получается кроме как с двойным циклом никак.
Получилось вот что…
Код
long chartID = ChartID();
//---
/*******************Script program start function********************/
voidOnStart()
{
int totalWnd = (int)ChartGetInteger(chartID, CHART_WINDOWS_TOTAL);
for(int w = 0; w < totalWnd; w++)
{
int totalInd = ChartIndicatorsTotal(chartID, w);
for(int i = 0; i < totalInd; i++)
{
string indName = ChartIndicatorName(chartID, w, i);
int handle = ChartIndicatorGet(chartID, w, indName);
Print("INDICATOR_SHORTNAME ", indName, " handle ", handle);
}
}
}/******************************************************************/
/********************************************************************\
Результат
2024.04.2009:59:54.730 Test (EURUSD,H1) INDICATOR_SHORTNAME MA(10) handle 102024.04.2009:59:54.730 Test (EURUSD,H1) INDICATOR_SHORTNAME SAR(0.02,0.20) handle 112024.04.2009:59:54.730 Test (EURUSD,H1) INDICATOR_SHORTNAME MACD(12,26,9) handle 122024.04.2009:59:54.731 Test (EURUSD,H1) INDICATOR_SHORTNAME Stoch(5,3,3) handle 13
Так вот получается, что если из всех имеющихся индикаторов надо в цикле дойти до нужного проверяя хендлы и когда обнаружил просто прервать цикл и по этому короткому имени индикатор удалить.
Другой вариант, попроще… Если вам известно, что индикатор в основном окне, то цикл перебора окон индикаторов можно убрать.
Вот сделал ещё добавление индикатора программно
long chartID = ChartID();
//---/*******************Script program start function********************/voidOnStart()
{
int hAll = iAlligator(_Symbol, PERIOD_CURRENT, 13, 8, 8, 5, 5, 3, MODE_SMA, PRICE_MEDIAN);
ChartIndicatorAdd(chartID, 0, hAll);
Print("hAll ", hAll);int totalWnd = (int)ChartGetInteger(chartID, CHART_WINDOWS_TOTAL);
for(int w = 0; w < totalWnd; w++)
{
int totalInd = ChartIndicatorsTotal(chartID, w);
for(int i = 0; i < totalInd; i++)
{
string indName = ChartIndicatorName(chartID, w, i);
int handle = ChartIndicatorGet(chartID, w, indName);
Print("INDICATOR_SHORTNAME ", indName, " handle ", handle);
}
}
}/******************************************************************/
Получился результат
2024.04.2010:20:59.131 Test (EURUSD,H1) hAll 102024.04.2010:20:59.131 Test (EURUSD,H1) INDICATOR_SHORTNAME MA(10) handle 112024.04.2010:20:59.131 Test (EURUSD,H1) INDICATOR_SHORTNAME SAR(0.02,0.20) handle 122024.04.2010:20:59.131 Test (EURUSD,H1) INDICATOR_SHORTNAMEAlligator(13,8,5) handle 102024.04.2010:20:59.131 Test (EURUSD,H1) INDICATOR_SHORTNAME MACD(12,26,9) handle 132024.04.2010:20:59.131 Test (EURUSD,H1) INDICATOR_SHORTNAME Stoch(5,3,3) handle 14
все разобрался надо добавить этот код в то место где нужно удалить все индикаторы
long chartID = ChartID(); // Получаем идентификатор текущего графикаint totalWnd = (int)ChartGetInteger(chartID, CHART_WINDOWS_TOTAL); // Получаем общее количество подокон на графике// Перебираем каждое подокноfor (int w = 0; w < totalWnd; w++) {
int totalInd = ChartIndicatorsTotal(chartID, w); // Получаем количество индикаторов в текущем подокне// Перебираем каждый индикатор в текущем подокнеfor (int i = totalInd - 1; i >= 0; i--) {
string indName = ChartIndicatorName(chartID, w, i); // Получаем имя индикатора по индексу// Удаляем индикатор по имениif (!ChartIndicatorDelete(chartID, w, indName)) {
Print("Ошибка удаления индикатора ", indName, " с графика: ", GetLastError());
} else {
Print("Удален индикатор: ", indName);
}
}
}
спасибо огромное, можно как удалить все индикаторы перед добавлением советника на график из OnInit, так и при деинциализации в OnDeinit советника, хорошо было бы доабвить куда то статью по этому поводу. Завидую вашему опыту.
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
Я новичок в бэктестинге. Пытаюсь протестировать советник на основе Мартингейла на MT4. По какой-то причине мой график не работает. Когда советник мартингейлит, чтобы компенсировать убыточную позицию, вы должны видеть большие провалы на графике, но я этого не вижу. Я вижу большие горбы, когда должен видеть большие провалы. Есть какие-нибудь мысли?
это если у индикатора есть имя, а если он добавлен по хендлу не все так просто
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
С уважением, Владимир.
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
С уважением, Владимир.
Это прописывается в индикаторе, а не в момент его постановки на график.
вот и я о томже, у меня индикатор аллигатор используется, как его в таком случае подключить к графику если я эту строку кода пропишу в коде индиктаора? через inlude? а конфликта не будет?
Меня вот только сейчас, когда я полистал документацию повнимательней, заинтересовал этот вопрос…
Получается кроме как с двойным циклом никак.
Получилось вот что…
Код
Результат
Так вот получается, что если из всех имеющихся индикаторов надо в цикле дойти до нужного проверяя хендлы и когда обнаружил просто прервать цикл и по этому короткому имени индикатор удалить.
Другой вариант, попроще… Если вам известно, что индикатор в основном окне, то цикл перебора окон индикаторов можно убрать.
Вот сделал ещё добавление индикатора программно
Получился результат
все разобрался надо добавить этот код в то место где нужно удалить все индикаторы
спасибо огромное, можно как удалить все индикаторы перед добавлением советника на график из OnInit, так и при деинциализации в OnDeinit советника, хорошо было бы доабвить куда то статью по этому поводу. Завидую вашему опыту.
Это прописывается в индикаторе, а не в момент его постановки на график.
Привет, Алексей! Не знаю, но вроде бы всё чётко и понятно расписал в своем сообщении:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
MrBrooklin, 2024.04.20 05:04
Не понимаю, а что мешает самому прописать (вставить) это короткое имя в коде используемого индикатора? Например так, как это сделано в коде индикатора у Артёма Тришкина, только при этом заменив имя "Net Volume" на какое-нибудь своё:
С уважением, Владимир.
это прописывается в индикаторе и ваш ответ был не полезным. я просил код удаления а не функцию переименования индикатора.
с учетом того что индикаторов может быть много, код товарища Alexey Viktorov был полезнее.
Владимир.
Добрый день! Почему-то перестал работать тестер стратегий. Хотя еще ночью работал.
Как это починить?
С уважением, Александр