[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 107

 
Есть ли на данном сайте индикатор уровней поддержки и сопротивления для торгового дня, чтоб не был перерисовываемый. Была возможность выбора так же и для каких свеч его перерисовать(дейли, месяц, неделя). Отображались уровни за предыдущие дни/недели/месяцы. и еще чтобы просчитанные уровни считались верно! аллпивотпоинт делает неверный расчет, взяв калькулятор у меня получились другие цифры, которые подтвердил другой индикатор, но он перерисовывает(есть видимо баг, и он не отображает уровни за прошлые периоды/вычисления)
 

Pupersa, найди этот ордер и измени в нём параметр "стоплосс", ничё сложного.


если тебе не трудно можно по подробнее?
 
artmedia70:
Давайте я дам вам гайку, а вы мне скажете почему машина не заводится... :)


С гайкой нужной - можно и сказать... :-)

Прилагаю файл... Заранее спасибо!

Файлы:
demo1.3.1.mq4  36 kb
 
Pupersa:

если тебе не трудно можно по подробнее?
найди в учебнике или документации "работу с ордерами". функцией поиска ордеров найди нужный по своим параметрам, измени его функцией изменения ордеров
 

Уважаемые форумчане помогите найти ошибку в скрипте.

Суть проблемы в следующем есть 4 файла со значениями нужно открыть каждый файл записать всё в массив и рассчитать средние максимальные и минимальные значения и передать потом в другой массив.

Ошибка состоит в следующем при очередном вызове функции GetFileData();, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value))); начинает туда дописывать значения а не писать их заново.

string FNLenUp;//имя файла для записи\чтения длин восходящего движения
string FNSpeedUp;//имя файла для записи\чтения скорости восходящего движения
string FNLenDown;//имя файла для записи\чтения длин восходящего движения
string FNSpeedDown;//имя файла для записи\чтения скорости восходящего движения 
//----------------------------------------------------------------------------------------------------------//
int SpeedArrUp[];//массив времени фиксации цен восходящего
int LengthArrUp[];//массив цен восходящего
int SpeedArrDown[];//массив времени фиксации цен нисходящего
int LengthArrDown[];//массив цен нисходящего
extern double percent = 0.005;//пункты
int init()
{
    GetNameF();
    GetFileData(FNLenUp,LengthArrUp);
    GetFileData(FNSpeedUp,SpeedArrUp);
    GetFileData(FNLenDown,LengthArrDown);
    GetFileData(FNSpeedDown,SpeedArrDown);
    
}
int GetFileData (string FileName, int& RetArr[])
{

     
    int Handle = 0;//файловый указатель
    int i = 0;
    int F_newFile = -1;//Флаг создания нового файла (1)-да (0)-нет
    int InsertArr[];//Массив для извлечения в него данных из файла
    int ArrSize = -1;//Размер массива
    int ArrMax = -1;//Максимальное значение
    int ArrMin = -1;//Минимальное значение
    int ArrAverage = -1;//Среднее значение
    string value = 0;
    //---------------------------------------------------------------------//
    //Print(ArrSize);
    //Смотрим существует ли файл


      //И меняем флаг что файл не создавался 
      F_newFile = 0;
      //значит открываем его для чтения
      Handle=FileOpen("lengthEURUSD0.0050Down.csv", FILE_READ);
      if(Handle<1)
      {
         Print("Ошибка открытия файла для чтения.");
         return(0);
      }
      FileSeek(Handle, 0, SEEK_SET);
      while(FileIsEnding(Handle)==false)  
      {                                
         value =FileReadString(Handle);
         if(value!="")
         {
            //Записываем всё в массив из файла
            ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)));
         }  
         if(FileIsEnding(Handle)==true)
         {
            break;
         }     
      }
      //Рассчитываем значения средние максимальные и т.д.
      ArrSize = ArraySize(InsertArr);
      Print(ArrSize);
      //---------------------------------------------------------------------//
      ArrMax = ArrayMaximum(InsertArr,ArrSize,0);
      ArrMax = InsertArr[ArrMax];
      //---------------------------------------------------------------------//      
      ArrMin = ArrayMinimum(InsertArr,ArrSize,0);
      ArrMin = InsertArr[ArrMin];
      //---------------------------------------------------------------------//      
      ArrAverage = 0;
      for(i = 0; i<=ArrSize; i++)
      {
         ArrAverage = ArrAverage+InsertArr[i];
      }
      ArrAverage = ArrAverage/ArrSize;
      //---------------------------------------------------------------------// 
      FileClose(Handle);   

    //---------------------------------------------------------------------//
    //Смотрим если все значения есть, тогда запихиваем всё в массив и передаём его
    if(F_newFile != -1 && ArrSize != -1 && ArrMax != -1 && ArrMin != -1 && ArrAverage != -1)
    { 
      ArrInsertInt(RetArr,F_newFile);
      ArrInsertInt(RetArr,ArrSize);
      ArrInsertInt(RetArr,ArrMax);
      ArrInsertInt(RetArr,ArrMin);
      ArrInsertInt(RetArr,ArrAverage);
      ArrInsertInt(RetArr,Handle);
      Print(RetArr[0],"|",RetArr[1],"|",RetArr[2],"|",RetArr[3],"|",RetArr[4],"|",RetArr[5]);
      return (RetArr);
    }
    //---------------------------------------------------------------------//
    //иначе передаем только файловый указатель
    ArrInsertInt(RetArr,Handle);
    ArrInsertInt(RetArr,F_newFile);    
    return (RetArr);
}
void GetNameF()
{string symbol;//инструмент которым будем торговать
    //создаём имя файла
    symbol = Symbol();
    //---------------------------------------------------------------------------------------------------------------------------//
    FNLenUp = "length"+symbol+DoubleToStr(percent,4)+"up";
    //--------------------------------------------------------//
    FNSpeedUp = "speed"+symbol+DoubleToStr(percent,4)+"up";
    //--------------------------------------------------------//
    FNLenDown = "length"+symbol+DoubleToStr(percent,4)+"Down";
    //--------------------------------------------------------//
    FNSpeedDown = "speed"+symbol+DoubleToStr(percent,4)+"Down";
}
int ArrInsertInt(int& m[], int e, int p=-1) {
  int j, k=ArraySize(m);
   p=-1;

  ArrayResize(m, k+1);
  if (p>=0 && p<k) {
    for (j=k; j>p; j--) m[j]=m[j-1];
    m[p]=e;
  } else m[k]=e;

  return(k+1);
}

вот скрипт и один из файлов

 
puschistic:

Уважаемые форумчане помогите найти ошибку в скрипте.

Суть проблемы в следующем есть 4 файла со значениями нужно открыть каждый файл записать всё в массив и рассчитать средние максимальные и минимальные значения и передать потом в другой массив.

Ошибка состоит в следующем при очередном вызове функции GetFileData();, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value))); начинает туда дописывать значения а не писать их заново.

вот скрипт и один из файлов

файл почему то не прикрепляется. вот содержимое:

121
58
91
176
87
58
105
166
95
54
59
99
54
172
79
55
69
110
97
80
119
113
124
68
80
79
51
84
58
112
51
181

 
А можно ли в MetaEditor виделить какую-л переменую,допустим,красним цветом,или как еще?
 
MQL4. Как создать диалоговое окно с одним полем ввода?
 
API, ... DLL
 

Пытаюсь сравнить значения SAR-параболика, текущего и предыдущего. Но не выходит, вот уже день мучаюсь. Почему этот код не работает? Вот код скрипта:

int start()
{
   double sar0 = iSAR(Symbol(), 0, 0.02, 0.2, 0);
   double sar2 = iSAR(Symbol(), 0, 0.02, 0.2, 1);
   sar0 = sar2;
      if (sar0 == sar2)                            //если написать sar0 = sar2,
         Alert("SAR проверяется");                 //то работает, как в коде ниже
   return;
}
Этот вариант работает:
int start()
{
   double sar0 = iSAR(Symbol(), 0, 0.02, 0.2, 0);
   double sar2 = iSAR(Symbol(), 0, 0.02, 0.2, 1);
         Alert("sar0 до присваивания: ", sar0, "sar2 до присваивания: ", sar2); 
   sar0 = sar2;
   //if (sar0 == sar2)                              //если написать sar0 = sar2,
      Alert("sar0 после присваивания: ", sar0, 
      "sar2 после присваивания: ", sar2);             //то работает.
   return;
}