初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 929

 
Juer:

コード

このような結果を得ることができます。

私は何を間違えているのだろう?

すべての列挙メンバーに目を通すことはできません。組み込みの列挙型は、"0 "から "end "までのような配列として走査することはできない。インライン列挙をたどるには、列挙の各メンバーを 直接、正しくアドレス指定する必要があります。例えばこんな感じ。

//+------------------------------------------------------------------+
//|                                              ENUM_TIMEFRAMES.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("PERIOD_CURRENT ",PERIOD_M1,"\n",
         "PERIOD_M2 ",PERIOD_M2,"\n",
         "PERIOD_M3 ",PERIOD_M3,"\n",
         "PERIOD_M4 ",PERIOD_M4,"\n",
         "PERIOD_M5 ",PERIOD_M5,"\n",
         "PERIOD_M6 ",PERIOD_M6,"\n",
         "PERIOD_M10 ",PERIOD_M10,"\n",
         "PERIOD_M12 ",PERIOD_M12,"\n",
         "PERIOD_M15 ",PERIOD_M15,"\n",
         "PERIOD_M20 ",PERIOD_M20,"\n",
         "PERIOD_M30 ",PERIOD_M30,"\n",
         "PERIOD_H1 ",PERIOD_H1,"\n",
         "PERIOD_H2 ",PERIOD_H2,"\n",
         "PERIOD_H3 ",PERIOD_H3,"\n",
         "PERIOD_H4 ",PERIOD_H4,"\n",
         "PERIOD_H6 ",PERIOD_H6,"\n",
         "PERIOD_H8 ",PERIOD_H8,"\n",
         "PERIOD_H12 ",PERIOD_H12,"\n",
         "PERIOD_D1 ",PERIOD_D1,"\n",
         "PERIOD_W1 ",PERIOD_W1,"\n",
         "PERIOD_MN1 ",PERIOD_MN1,"\n");
  }
//+------------------------------------------------------------------+
ファイル:
 
Vladimir Karputov:

列挙されたメンバーを全部見て回るわけではありません。組み込みの列挙型は、"0 "から "end "までのような配列として走査することはできない。組み込まれた列挙にアクセスするには、列挙の各メンバーを 直接、正しくアドレス指定する必要があります。例えばこんな感じ。

誰が考えたんだろう...
 
int val=(int)PERIOD_H1;

このような式で、valは16385となる。この値は何ですか?

intとenumは簡単に相互変換できるとばかり思っていました :(

 
Juer:
誰が考えたんだろう...

標準的な列挙を配列として アクセスしたい場合は、まず自分でそのような 配列を宣言し、入力する必要があります。

//--- variant 2
   ENUM_TIMEFRAMES timeframes_array[21]=
     {
      PERIOD_M1,PERIOD_M2,PERIOD_M3,
      PERIOD_M4,PERIOD_M5,PERIOD_M6,
      PERIOD_M10,PERIOD_M12,PERIOD_M15,
      PERIOD_M20,PERIOD_M30,PERIOD_H1,
      PERIOD_H2,PERIOD_H3,PERIOD_H4,
      PERIOD_H6,PERIOD_H8,PERIOD_H12,
      PERIOD_D1,PERIOD_W1,PERIOD_MN1
     };
   int size=ArraySize(timeframes_array);
   for(int i=0;i<size;i++)
      Print(i,": ",EnumToString(timeframes_array[i])," ",timeframes_array[i]);
 
Juer:

このような式で、valは16385と なる。この値は何ですか?

intとenumは簡単に相互変換できるとばかり思っていました :(

上記の私の例):再現して数字を見てください。

 

ftpでのファイル転送を 設定しようとしているのですが。

Service-Settings-FTPのTestボタンを押すと、パスワードとパスが正しいことを確認し、ファイルを送信することができます。

プログラム的にできない。SendFTP("File_1.txt", "/ftp_failes") を実行し、スクリプトでファイルを送信すると、端末がハングアップする。File_1.txtは、Filesディレクトリにあります。

質問 スクリプトのTerminalInfoInteger( TERMINAL_FTP_ENABLED ) =0.どこでどのように設定されているのか、まったくわかりませんので、アドバイスをお願いします。

また、他に足りないものがあれば教えてください。
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

ftpでのファイル転送を 設定しようとしているのですが。

Service-Settings-FTPのTestボタンを押すと、パスワードとパスが正しいことを確認し、ファイルを送信することができます。

ソフトウェアでファイルを送信できない。SendFTP("File_1.txt", "/ftp_failes") を実行し、スクリプトでファイルを送信すると、端末がハングアップする。File_1.txtはFilesディレクトリにあります。

質問 スクリプトのTerminalInfoInteger( TERMINAL_FTP_ENABLED ) =0.どこでどのように設定されているのか、まったくわかりませんので、アドバイスをお願いします。

あと、私が見逃しているものを教えていただけますか?
理由は、「ロシア文字でのファイル名付けは禁止されている」でした。
この問題は解決されました。
 

ファイルから文字列を読み込もうとしているのですが、どうすればいいですか?

#include <Files\FileTxt.mqh>
CFileTxt          m_file_txt;
m_file_handle=m_file_txt.Open(m_file_name,FILE_CSV|FILE_READ|FILE_COMMON|FILE_ANSI,10);
m_file_txt.Seek(0,SEEK_SET);
string str=m_file_txt.ReadString();

以下は、そのファイルの1行目である。

,1,1,1,21,0,一致しない回数,IGNORECRLF

strに", "という文字が入るだけです。

 
FILE_UNICODE

が役に立ちましたが、この場合、漢字は読みます。

ANSIが必要な場合はどうすればよいですか?FILE_ANSI フラグを使用すると、文字列全体が読めないのはなぜですか?

 
できます。
   int cur_bars=Bars(_Symbol,PERIOD_CURRENT);

に置き換えます。

   int cur_bars=Bars(_Symbol,_Period);