Alexey Belyakov: Ich habe es geändert und erhalte folgende Fehlermeldung: " 'array_atr' - invalid array access"
vielleicht hilft Ihnen etwas - Sie müssen nur einen Indikator erstellen, kein Experte sein
- Der Expert Advisor funktioniert auf die gleiche Weise, wird aber im Tester angezeigt
//+------------------------------------------------------------------+//| тест.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_separate_window#property indicator_buffers1#property indicator_plots1//--- plot iATR#property indicator_label1"iATR"#property indicator_type1DRAW_LINE#property indicator_color1clrLightSeaGreen#property indicator_style1STYLE_SOLID#property indicator_width11//--- входные параметрыinputint atr_period=14; // период для вычисленияinputstring symbol=" "; // символinputENUM_TIMEFRAMES period=PERIOD_CURRENT; // таймфрейм//--- индикаторный буферdouble iATRBuffer[];
//--- переменная для хранения хэндла индикатора iACint handle;
//--- переменная для храненияstring name=symbol;
//--- имя индикатора на графикеstring short_name;
//--- будем хранить количество значений в индикаторе Average True Rangeint bars_calculated=0;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- привязка массива к индикаторному буферуSetIndexBuffer(0,iATRBuffer,INDICATOR_DATA);
//--- определимся с символом, на котором строится индикатор
name=symbol;
//--- удалим пробелы слева и справаStringTrimRight(name);
StringTrimLeft(name);
//--- если после этого длина строки name нулеваяif(StringLen(name)==0)
{
//--- возьмем символ с графика, на котором запущен индикатор
name=_Symbol;
}
//--- создадим хэндл индикатора
handle=iATR(name,period,atr_period);
if(handle==INVALID_HANDLE)
{
//--- сообщим о неудаче и выведем номер ошикбиPrintFormat("Не удалось создать хэндл индикатора iATR для пары %s/%s, код ошибки %d",
name,
EnumToString(period),
GetLastError());
//--- работа индикатора завершается досрочноreturn(INIT_FAILED);
}
//--- покажем на какой паре символ/таймфрейм рассчитан индикатор Average True Range
short_name=StringFormat("iATR(%s/%s, period=%d)",name,EnumToString(period),atr_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- нормальное выполнение инициализации индикатора//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---- проверка количества баров на достаточность для расчетаif(BarsCalculated(handle)<rates_total
||rates_total<0)
return(0);
//---- объявления локальных переменныхint to_copy,limit;
//---- расчеты необходимого количества копируемых данных и//стартового номера limit для цикла пересчета баровif(prev_calculated>rates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора
{
to_copy=rates_total; // расчетное количество всех баров
limit=rates_total-1; // стартовый номер для расчета всех баров
}
else
{
to_copy=rates_total-prev_calculated+1; // расчетное количество только новых баров
limit=rates_total-prev_calculated; // стартовый номер для расчета новых баров
}
//---- копируем вновь появившиеся данные в массивыif(CopyBuffer(handle,0,0,to_copy,iATRBuffer)<=0)
return(0);
//---- индексация элементов в массивах как в таймсерияхArraySetAsSeries(iATRBuffer,true);
ArraySetAsSeries(open,true);
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
ArraySetAsSeries(close,true);
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Fehler: implizite Umwandlung von 'Zahl' in 'String'
Stimmt etwas mit den Pluszeichen nicht?
NICHT eine implizite Umwandlung. Wenn Sie Strings zu Zahlen hinzufügen, werden die Zahlen in String-Variablen umgewandelt. Und Sie brauchen eine explizite. und hoffentlich hat trendstep einen String-Typ. )))
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Ich habe es geändert und erhalte folgende Fehlermeldung: " 'array_atr' - invalid array access "
vielleicht hilft Ihnen etwas - Sie müssen nur einen Indikator erstellen, kein Experte sein
- Der Expert Advisor funktioniert auf die gleiche Weise, wird aber im Tester angezeigt
Geändert und Fehler erhalten: " 'array_atr' - ungültiger Array-Zugriff "
Ein Array-Element wird mit '[]' referenziert.
Zum Beispiel ein Verweis auf ein Nullelement:
array_atr[0]Ein Array-Element wird mit '[]' referenziert.
Zum Beispiel ein Verweis auf ein Nullelement:
Vladimir Danke! Erledigt!
Vladimir Danke! Erledigt!Ich wollte herausfinden, worauf Sie hinauswollen, aber ich bin nur bis hierher gekommen und habe es nicht verstanden.
Ich ändere MarketInfo in SymbolInfoInteger und erhalte - so:
und ich erhalte Fehler.
möglicher Datenverlust aufgrund von Typumwandlung
';' - offene KlammererwartetBitte helfen Sie mir und sagen Sie mir, wie es funktionieren soll.
Hallo!
Ich ändere MarketInfo in SymbolInfoInteger und erhalte - so:
und ich erhalte Fehler.
möglicher Datenverlust aufgrund von Typumwandlung
';' - offene KlammererwartetBitte helfen Sie und schreiben Sie, wie es tatsächlich sein sollte.
Oder besser so
Oder noch besser
Jetzt kann ich nicht herausfinden, warum das so ist:
möglicher Datenverlust aufgrund von Typumwandlung
Was ist daran falsch?
Vielen Dank für Ihre Hilfe!
Jetzt kann ich nicht herausfinden, warum das so ist:
möglicher Datenverlust aufgrund von Typumwandlung
Was ist hier los?
Long oder bul Nicht int.
Long oder Bull Nicht Int.
Jetzt ist nicht klar, was hier falsch ist:
Fehler: implizite Umwandlung von 'Zahl' in 'String'
Stimmt etwas nicht mit den Pluszeichen?
Danke sortiert !!!
Jetzt ist nicht klar, was hier falsch ist:
Fehler: implizite Umwandlung von 'Zahl' in 'String'
Stimmt etwas mit den Pluszeichen nicht?
NICHT eine implizite Umwandlung. Wenn Sie Strings zu Zahlen hinzufügen, werden die Zahlen in String-Variablen umgewandelt. Und Sie brauchen eine explizite. und hoffentlich hat trendstep einen String-Typ. )))