[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 107

 
C'è un indicatore dei livelli di supporto e resistenza su questo sito per la giornata di trading, che non era ridisegnabile. Era anche possibile scegliere per quali candele doveva essere ridisegnato (giornaliero, mensile, settimanale). Se volessi usare questo indicatore come base per le mie stime, non dovrei guardarle troppo da vicino, ma mi aspetterei di ottenere un buon risultato.
 

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


Se non le dispiace, può spiegarsi meglio?
 
artmedia70:
Lascia che ti dia il dado e tu mi dici perché la macchina non parte... :)


Con il dado giusto, puoi dirmi... :-)

In allegato il file... Grazie in anticipo!

File:
demo1.3.1.mq4  36 kb
 
Pupersa:

Se non le dispiace, può spiegarsi meglio?
Cerca "lavorare con gli ordini" in un libro di testo o nella documentazione. usa la funzione di ricerca degli ordini per trovare un ordine secondo i tuoi parametri, cambialo con la funzione di modifica degli ordini.
 

Per favore aiutatemi a trovare un bug nello script.

L'essenza del problema è avere 4 file con i valori necessari per aprire ogni file, scrivere tutto in un array e calcolare la media dei valori massimi e minimi e poi passarla ad un altro array.

L'errore è questo: quando chiamo GetFileData();, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)); inizia ad aggiungere valori e non li scrive più.

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

ecco lo script e uno dei file

 
puschistic:

Per favore aiutatemi a trovare un bug nello script.

L'essenza del problema è avere 4 file con i valori necessari per aprire ogni file, scrivere tutto in un array e calcolare la media dei valori massimi e minimi e poi passarla ad un altro array.

L'errore è questo: quando chiamo GetFileData();, ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)); inizia ad aggiungere valori e non li scrive più.

ecco lo script e uno dei file

Il file non è allegato per qualche motivo. ecco il contenuto:

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

 
È possibile vedere una variabile in MetaEditor, per esempio in rosso o altro?
 
MQL4. Come si crea una finestra di dialogo con un solo campo di input?
 
API, ... DLL
 

Sto cercando di confrontare la parabolica SAR, quella attuale e quella precedente. Ma non funziona, sto lottando da un giorno. Perché questo codice non funziona? Ecco il codice dello 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;
}
Questa variante funziona:
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;
}