[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 107

 
Existe-t-il sur ce site un indicateur des niveaux de soutien et de résistance pour la journée de négociation, qui n'était pas redessinable. Il était également possible de choisir pour quelles bougies il devait être redessiné (quotidien, mensuel, hebdomadaire). Si je voulais utiliser cet indicateur comme base pour mes propres estimations, je ne devrais pas les examiner de trop près, mais je m'attendrais à obtenir de bons résultats.
 

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


Si cela ne vous dérange pas, pouvez-vous développer ?
 
artmedia70:
Je vous donne l'écrou et vous me dites pourquoi la voiture ne démarre pas... :)


Avec le bon écrou, vous pouvez me dire... :-)

Ci-joint le fichier... Merci d'avance !

Dossiers :
demo1.3.1.mq4  36 kb
 
Pupersa:

Si cela ne vous dérange pas, pouvez-vous développer ?
Recherchez "travailler avec des ordres" dans un manuel ou une documentation. Utilisez la fonction de recherche d'ordres pour trouver un ordre correspondant à vos paramètres, modifiez-le avec la fonction de modification d'ordre.
 

S'il vous plaît, aidez-moi à trouver un bug dans le script.

L'essence du problème est d'avoir 4 fichiers avec les valeurs nécessaires pour ouvrir chaque fichier, écrire tout dans un tableau et calculer la moyenne des valeurs maximales et minimales et ensuite les passer à un autre tableau.

L'erreur est la suivante : lorsque j'appelle GetFileData() ;, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)) ; il commence à ajouter des valeurs et ne les réécrit pas.

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);
}

voici le script et un des fichiers

 
puschistic:

S'il vous plaît, aidez-moi à trouver un bug dans le script.

L'essence du problème est d'avoir 4 fichiers avec les valeurs nécessaires pour ouvrir chaque fichier, écrire tout dans un tableau et calculer la moyenne des valeurs maximales et minimales et ensuite les passer à un autre tableau.

L'erreur est la suivante : lorsque j'appelle GetFileData() ;, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)) ; il commence à ajouter des valeurs et ne les réécrit pas.

voici le script et un des fichiers

Le fichier n'est pas attaché pour une raison quelconque. Voici le contenu :

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

 
Est-il possible de voir une variable dans MetaEditor, par exemple en rouge ou autre ?
 
MQL4. Comment créer une boîte de dialogue avec un seul champ de saisie ?
 
API, ... DLL
 

J'essaie de comparer la parabole SAR, l'actuelle et la précédente. Mais ça ne marche pas, ça fait un jour que je me débats. Pourquoi ce code ne fonctionne-t-il pas ? Voici le code du script :

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;
}
Cette variante fonctionne :
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;
}
Raison: