どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1117

 

むかし、フォーラムでMT5にカスタムのヒストリカルデータをインポート する機能が追加されるという話がありましたが、これは実装されたのでしょうか?

 
Top2n:

//--- путь к файлу
   string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- прочитаем все данные из файла в массив
      FileReadArray(file_handle,arr);
      //--- получим размер массива
      int size=ArraySize(arr);
      //--- распечатаем данные из массива
         Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
      Print("Total data = ",size);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  = 0.0  = 0.0  = 0.0
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  Total data = 1020100

何が足りないのか、2次元配列への逆変換は理解できたのですが、どうやって

もちろん、正しく保存していれば別ですが。

for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y
        {
         for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
           {
            arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5);                // M(I) SMA
           }
        }
      WriteData(1000);
//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

そういう線もあっていいと思います。

//--- входные параметры
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";

簡単なものから始めてください。全部をスクリプトに書き込む。1つはファイルを書き込むため、もう1つは読み込んで読んだものを印刷するためです。書き込みのために、単純な2x2の配列を作成します。

int arr[2][2];

void OnStart()
{
int z = 0;
for(int i = 0; i < 2; i++)
  {
   arr[i][z] = i+z+1;
    z++;
  }
WriteData();
}

で、書きたい要素の数を削除してください。こうすることで、ファイル全体が 最初から最後まで書き込ま れます。指定されたパスにファイルがあるかどうか確認する。

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
そして、目についたものを読み、印刷する。1と3が表示された場合は、アレイに問題があります。
 
Top2n:

こんな感じです。

スクリプトコードを書く。

//+------------------------------------------------------------------+
//|                                                   WriteArray.mq5 |
//|                                                         Viktorov |
//|                                                v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";  
string path=InpDirectoryName+"//"+InpFileName;
int arr[3][3];
int handle;
void OnStart()
{
int i = 0, z = 0;
for(i = 0; i < 3; i++)
  {
   for(z = 0; z < 3; z++)
    {
     arr[i][z] = i*z+1;
    }
  }
  WriteData();
}
//+------------------------------------------------------------------+
void WriteData()
  {
//--- откроем файл
   ResetLastError();
   handle=FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

スクリプトコードを読み込む。

//+------------------------------------------------------------------+
//|                                                    ReadArray.mq5 |
//|                                                         Viktorov |
//|                                                v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";  
string path=InpDirectoryName+"//"+InpFileName;
int handle;
void OnStart()
{
int arr[3][3];
int i = 0, z = 0;
handle = FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
FileReadArray(handle, arr);
for(i = 0; i < 3; i++)
  {
   for(z = 0; z < 3; z++)
    {
     Print("arr[", i, "][", z, "]", arr[i][z]);
    }
  }
}
//+------------------------------------------------------------------+

と印刷されているものです。

2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][1]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][2]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][1]2
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][2]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][1]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][2]5

だから、コンバージョンのギミックは必要ないのです。最初から同じ配列を設定すればよいのです。

mql5だからといって気にしないでください、mql4でも同じように動きますよ。

 
Alexey Viktorov:
そして、手に入れたものを読み、プリントアウトする。1と3が表示された場合、アレイへの入力に問題があることを意味します。

正直なところ、何が起こったのかわからないのですが、すべてうまくいきました。ただ、新しいバー ごとに行を追加しなければなりません。)

ありがとうございました。

 

みなさん、こんにちは!!!私はクリーンなMT4をダウンロードしたいのですが、オフサイトパンプスからMT5だけを、どこにも見つけることができませんので、アドバイスお願いします。最新のビルドをお願いします。ありがとうございました!!!

 
stepan.brend:

みなさん、こんにちは!!!私はクリーンなMT4をダウンロードしたいのですが、オフサイトパンプスからMT5だけを、どこにも見つけることができません、私に助言してください。最新のビルドをお願いします。ありがとうございました!!!

好きな証券会社をダウンロードして、最新版を入手することができます。 違いはショートカットのロゴだけです。
 
Vitaly Muzichenko:
ショートカットのロゴが違うだけですね。
問題は、マーケットが機能しないことで、MT4にユーティリティをインストールすることができないのです。どうしたらよいかアドバイスをお願いします)ユーティリティのインストールが本当に必要です
 
stepan.brend:
問題は、マーケットが機能しないことで、MT4にユーティリティをインストールすることができないのです。どうしたらよいかアドバイスをお願いします)ユーティリティのインストールが本当に必要
他の証券会社で口座を開設する。またはその他の種類のアカウント。市場の有無は、完全にアカウントに依存します。
 
Vitalie Postolache:
他の証券会社で口座を開設する。または別の種類のアカウント。マーケットプレイスが利用できるかどうかは、すべてアカウントに依存します
ヴィタリー・ポストラッシュ
他の証券会社で口座を開設する。または別の種類のアカウント。市場が機能しない場合は、アカウントに依存します。

3つのDCと異なるアカウントで試しましたが、マーケットはまだ動きません(

 
stepan.brend3つのDCと異なるアカウントで試しましたが、マーケットはまだ動き ません(
奇跡はない。端末のバージョンは何ですか?シグナルタブがないアカウントも見かけますが、ほとんどの場合、マーケットがあります。