Alexey Belyakov: Je l'ai modifié et j'obtiens l'erreur suivante : " 'array_atr' - invalid array access"
peut-être que quelque chose vous aidera - vous avez juste besoin de créer un indicateur, pas un expert
- Le conseiller expert fonctionne de la même manière, mais il sera affiché dans le testeur.
//+------------------------------------------------------------------+//| тест.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);
}
//+------------------------------------------------------------------+
Maintenant, ce n'est pas clair - ce qui ne va pas - ici :
erreur : conversion implicite de 'nombre' en 'chaîne'
Y a-t-il un problème avec les plus ?
PAS une conversion implicite. C'est lorsque vous ajoutez des chaînes à des nombres, les nombres sont convertis en variables de chaîne. Et vous avez besoin d'un explicite. et espérons que trendstep a un type de chaîne. )))
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Je l'ai modifié et j'obtiens l'erreur suivante : " 'array_atr' - invalid array access "
peut-être que quelque chose vous aidera - vous avez juste besoin de créer un indicateur, pas un expert
- Le conseiller expert fonctionne de la même manière, mais il sera affiché dans le testeur.
Changé et obtenu l'erreur : " 'array_atr' - invalid array access "
Un élément de tableau est référencé par '[]'.
Par exemple, une référence à un élément nul :
array_atr[0]Un élément de tableau est référencé par '[]'.
Par exemple, une référence à un élément nul :
Vladimir Merci ! C'est fait !
Vladimir Merci ! C'est fait !Je voulais savoir où vous vouliez en venir et je ne suis pas arrivé jusqu'ici.
Je change MarketInfo en SymbolInfoInteger et j'obtiens - ainsi :
et je reçois des erreurs.
perte éventuelle de données due à la conversion de type
';' - parenthèse ouverteattendueVeuillez m'aider et me dire comment cela devrait fonctionner.
Salut !
Je change MarketInfo en SymbolInfoInteger et j'obtiens - ainsi :
et je reçois des erreurs.
perte éventuelle de données due à la conversion de type
';' - parenthèse ouverteattendueVeuillez m'aider et écrire comment cela devrait être en fait.
Ou mieux comme ça
Ou mieux encore
Maintenant je n'arrive pas à comprendre pourquoi ça dit ça :
perte éventuelle de données due à la conversion de type
Qu'est-ce qu'il y a de mal à ça ?
Merci beaucoup pour votre aide !
Maintenant je n'arrive pas à comprendre pourquoi ça dit ça :
perte éventuelle de données due à la conversion de type
Qu'est-ce qui ne va pas ici ?
Long ou bul Pas int.
Long ou Bull Pas Int.
Maintenant, ce n'est pas clair - ce qui ne va pas - ici :
erreur : conversion implicite de 'nombre' en 'chaîne'
Y a-t-il un problème avec les plus ?
Merci trié ! !!
Maintenant, ce n'est pas clair - ce qui ne va pas - ici :
erreur : conversion implicite de 'nombre' en 'chaîne'
Y a-t-il un problème avec les plus ?
PAS une conversion implicite. C'est lorsque vous ajoutez des chaînes à des nombres, les nombres sont convertis en variables de chaîne. Et vous avez besoin d'un explicite. et espérons que trendstep a un type de chaîne. )))