Исправление ошибки массива вне диапазона в MT4 EA - Page 2
Страница 2 из 812 FirstFirst 12
Results 11 to 13 of 13

Thread: Исправление ошибки массива вне диапазона в MT4 EA

  1. #11

    Quote Originally Posted by ;
    Я сделал советник со следующим... extern int IntIndTF1 = 4; внешний интервал IntInd1S1 = 2; внешний интервал IntInd1S2 = 14; внешний интервал IntIndTF2 = 1; внешний интервал IntInd2S1 = 3; внешний интервал IntInd2S2 = 9; PerH1 = High [iHighest (SymbolToManage, IntIndTF1, MODE_HIGH, IntInd1S2, IntInd1S1)]; PerL1 = Low[iLowest(SymbolToManage,IntIndTF1,MODE_LOW,IntInd1S 2,IntInd1S1)]; PerM1 = NormalizeDouble((PerH1 PerL1)/2,Digits); PerH2 = High [iHighest (SymbolToManage, IntIndTF2, MODE_HIGH, IntInd2S2, IntInd2S1)]; PerL2 = Low[iLowest(SymbolToManage,IntIndTF2,MODE_LOW,IntInd2S 2,IntInd2S1)];...
    Сначала попробуйте исправить цикл for, во втором блоке кода цикл никогда не запускается, поэтому ошибок быть не может: i=0, но проверяет igt;Bars. При уменьшении i должно быть: for(int i=Bars-IndicatorCounted()-1;igt;0;i#8212

  2. #12

    Quote Originally Posted by ;
    {quote} Сначала попробуйте исправить цикл for, во втором блоке кода цикл никогда не запускается, поэтому ошибок быть не может: i=0, но проверяет igt;Bars. При i уменьшение должно быть: for(int i=Bars-IndicatorCounted()-1;igt;0;i—)
    Код находится только внутри советника, а не индикатор. Будет ли IndicatorCounted() по-прежнему работать внутри советника?

  3. #13

    Quote Originally Posted by ;
    Я добавил -1 к лимиту количества баров, и, похоже, он работает, не влияя на какие-либо изменения результатов, так что все в порядке. Чтобы убедиться, что iLowest/iHigheset не возвращает -1, я сделал это, уверен, что это неправильный способ, потому что результаты ужасны... int BarsCounted1 = TFBars1-MathMax(IntInd1S2,IntInd1S1 1); if (BarsCounted1 lt; 0) {return;} int LimitBars1 = TFBars1-BarsCounted1; for (BarCount1 = LimitBars1-1; BarCount1 gt;= 0; BarCount1--) { if ((iHighest(SymbolToManage,IntIndTF1,MODE_HIGH,IntI nd1S2,BarCount1 IntInd1S1) lt; 0) || (iLowest(SymbolToManage,IntIndTF1,MODE_LOW ,IntInd1S2,BarCount1 IntInd1S1)...
    Я думал о чем-то вроде этого вставленного кода для (int i=(IndicatorCounted()==0)?Bars(symbol,tf)-1-MathMax(IntInd1S2,IntInd1S1 1):1;igt;0;i#8212; ){ int hi=iHighest(symbol,tf,mode,IntInd1S2,i); if(hi!=-1)PerH1=High#91;hi#93;; иначе PerH1=-1; int lo=iLowest(...); if(lo!=-1)PerL1=Low#91;lo#93;; иначе PerL1=-1;}

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.