[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 107

 
このサイトの取引日のサポートと レジスタンスレベルのインジケータで、再描画できなかったものはありますか?また、どのローソクで再描画するか(日、月、週)を選択することも可能であった。この指標をもとに自分で推計しようと思えば、あまり細かく見る必要はないのですが、それなりの結果は期待できます。
 

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


差し支えなければ、詳しく教えてください。
 
artmedia70:
ナットを渡すから、なぜ車が動かないか教えてくれ...。:)


正しいナットで、私に教えてください...:-)

添付ファイル...ありがとうございました。

ファイル:
demo1.3.1.mq4  36 kb
 
Pupersa:

差し支えなければ、詳しく教えてください。
教科書や資料で「work with orders」と検索してください。注文検索機能を使って、パラメータに応じた注文を探し、注文変更機能で変更します。
 

スクリプトのバグを見つけるのを手伝ってください。

問題の本質は、値が必要な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);
}

以下は、スクリプトとファイルの1つです。

 
puschistic:

スクリプトのバグを見つけるのを手伝ってください。

問題の本質は、値が必要な4つのファイルを持っていて、それぞれのファイルを開き、すべてを配列に書き込み、平均の最大値と最小値を計算し、それを別の配列に渡すことです。

このエラーは、GetFileData();を呼び出すと、ArrInsertInt(InsertArr, MathAbs(StrToInteger(value)); が始まり、値を追加して再び書かないというものです。

以下はスクリプトとファイルの1つです。

なぜかファイルが添付されませんが、内容は以下の通りです。

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です。入力フィールドが1つのダイアログボックスを 作成するにはどうすればよいですか?
 
API、...DLL
 

SARのパラボリック、今回のものと以前のものを比較したいのです。しかし、うまくいかず、1日格闘しています。なぜこのコードは動かないのか?以下はスクリプトのコードです。

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