変換関数


CharToString

シンボルコードを1文字の文字列に変換します。

string  CharToString(
  uchar  char_code      // シンボルの数値コード
  );

パラメータ

char_code

[in]  ANSI シンボルのコード

戻り値

ANSI シンボルの文字列

参照

StringToCharArray, ShortToString, StringGetCharacter

CharArrayToString

uchar 型の配列の一部を複製して戻り値の文字列に変換します。

string  CharArrayToString(
  uchar  array[],              // 配列
  int    start=0,              // 配列の開始位置
  int    count=-1              // シンボル数
  uint    codepage=CP_ACP      // コードページ
  );

パラメータ

array[]

[in]  uchar 型の配列。

start=0

[in]  コピー開始位置。デフォルトでは 0。

count=-1

[in]  複製する要素数。結果の文字列の長さを定義します。初期値は、配列の最後または終了する 0まで複製することを意味する -1 です。

codepage=CP_ACP

[in]  コードページの値。よく使用されるコードページでは、内蔵された定数がいくつもあります。

戻り値

文字列

参照

StringToCharArray, ShortArrayToString, コードページの利用

 

CharArrayToStruct

uchar型の配列をPOD structureにコピーします。

bool  CharArrayToStruct(
  void&         struct_object,    // 構造体
  const uchar&  char_array[],    // 配列
  uint          start_pos=0      // 配列での開始位置
  );

パラメータ

struct_object

[in]  任意の型のPOD構造体への参照(単純なデータ型のみを含む)

char_array[]

[in] uchar型の配列。

start_pos=0

[in]  配列内のデータコピーが始まる位置

戻り値

成功の場合はtrue、それ以外の場合はfalse

参照

StringToCharArray、 ShortArrayToString、 StructToCharArray、コードページの使用、 FileReadStruct、 ユニオン(union)、 MathSwap

StructToCharArray

POD構造体をuchar型配列にコピーします。

bool  StructToCharArray(
  const void& struct_object,    // 構造体
  uchar&      char_array[],      // 配列
  uint        start_pos=0        // 配列の開始位置
  );

パラメータ

struct_object

[in]  任意の型のPOD構造体への参照(単純なデータ型のみを含む)

char_array[]

[in] uchar型の配列。

start_pos=0

[in]  コピーされたデータを追加する配列内の位置。

戻り値

成功の場合はtrue、それ以外の場合はfalse

注意事項

コピーすると、十分なスペースがない場合、動的配列が自動的に拡張されます(ArrayResize) 。配列を必要な値まで拡張できない場合、関数はエラーを返します。

参照

StringToCharArray、 ShortArrayToString、CharArrayToStruct、Use of a Codepage、 FileWriteStruct、Unions (union)、MathSwap

ColorToARGB

この関数は color 型を uint 型に変換し色の ARGB 表現を取得します。ARGB カラー形式は グラフィックリソースやテキスト表示に使用され、CCanvas 標準ライブラリクラスにも使用されます。

uint  ColorToARGB(
  color  clr,          // color フォーマットに変換された色
  uchar  alpha=255     // 色の透明度を管理するアルファチャンネル
  );

パラメータ

clr

[in]  color 型変数のカラー値。

alpha

[in] ARGB 形式で色を受け取るためのアルファチャンネルの値。値は 0 (前景ピクセル色は基礎ピクセル色の表示に影響しない)から 255(基本ピクセル色が完全に前景ピクセル色で置き換えられる)までです。百分率での色の透明度は (1-alpha/255)*100% のように計算されます。つまり、アルファチャンネルの小さい値は、より透明な色につながります。

戻り値

アルファ、赤、緑、青(アルファチャンネル、赤、緑、青)値が 4 つの uint 型のバイト直列で設定されている ARGB 形式で表現された色

注意事項

RGBは、コンピュータグラフィックスの画面上のピクセルの色の記述の基本に一般的に使用される形式です。基本色の名称は、赤、緑、青の色成分を設定するために使用されています。各コンポーネントは 0〜255( 16 進形式の 0x00 から 0XFF )の範囲の彩度を指定する 1 バイトで記述されています。白は全ての色を含むので 0xFFFFFF として記載されます。つまり、3 成分のそれぞれが最大値の 0xFF を持ちます。

ただし、一部のタスクでは、透明性のある色で覆われている場合の画像の外観を記述するために、色の透明度を指定する必要があります。アルファチャンネルの概念は、このような場合のために導入されています。アルファチャンネルは、RGB 形式の付加的なコンポーネントとして実装されています。ARGB 形式の構造体は下記の通りです。

ARGB

ARGB値は、一般的に、それぞれ、アルファ、赤、緑、青のチャンネルの値を表す数字の各ペアに進形式を使用して表現されます。例えば 80FFFF00 は 50.2 パーセント不透明な黄色です。0x80 は初めに 0xFF の 50.2% である 50.2% アルファ値を設定します。そして、1 番目の FF ペアは赤成分の最大値を定義します。次の FF ペアは緑成分の最大値を定義します。最後の 00 ペアは、青色成分の最小値(青の不在)を表します。緑と赤の組み合わせは、黄色です。アルファチャンネルを使用しない場合、エントリは RRGGBB の6桁に低減することが出来ます。これがアルファチャンネル値を uint 整数型で先頭ビットに格納する理由です。

16 進数は状況に応じて「 0x 」または「 # 」プレフィックスを使用して書かれます(例えば 80FFFF00、0x80FFFF00 または #80FFFF00 )。

例:

//+——————————————————————+
//| スクリプトプログラムを開始する関数                                          |
//+——————————————————————+
void OnStart()
 {
//— 透明度を設定する
  uchar alpha=0x55; // 0x55 は 55/255=21.6 % 透明度を意味する
  //— clrBlue 色のために、ARGBへの変換を導き出す
  PrintFormat("0x%.8X – clrBlue",clrBlue);
  PrintFormat("0x%.8X – clrBlue ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
  //— clrGreen 色のために、ARGB への変換を導き出す
  PrintFormat("0x%.8X – clrGreen",clrGreen);
  PrintFormat("0x%.8X – clrGreen ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
  //— clrRed 色のために、ARGB への変換を導き出す
  PrintFormat("0x%.8X – clrRed",clrRed);
  PrintFormat("0x%.8X – clrRed ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
 }

参照

リソース、ResourceCreate()、TextOut()、color 型, char、short、int 及び long 型

ColorToString

color 値を「R,G,B」の文字列に変換します。

string  ColorToString(
  color  color_value,    // color 値
  bool  color_name      // 色の名称を表示するかどうか
  );

パラメータ

color_value

[in]  color 型変数のカラー値。

color_name

[in]  色の名称が事前に定義された color 定数 と同じ場合は色の名称を返します。

戻り値

「R,G,B」としての色の文字列表現。R、G 及び B は 文字列に変換された0 から 255 の 10 進数定数です。color_name=true パラメータが設定されている場合、カラー値から色の名称への変換が試みられます。

例:

  string clr=ColorToString(C'0,255,0'); // 緑
  Print(clr);
 
  clr=ColorToString(C'0,255,0',true);   // カラー定数を取得
  Print(clr);

参照

StringToColor, ColorToARGB

DoubleToString

数値をテキスト文字列に変換します。

string  DoubleToString(
  double  value,      // 数
  int    digits=8    // 小数点以下の桁数
  );

パラメータ

value

[in]  浮動小数点を持つ値

digits

[in]  精度フォーマット。digits 値が 0 から 16 の間の場合、指定された小数点以下の桁数で数値の文字列表現が取得されます。digits 値が -1 から -16 の間の場合、指定された小数点以下の桁数で数値の科学表記での文字列が表現取得されます。それ以外の場合では全て、文字列値には小数点以下8桁が含まれます。

戻り値

指定された精度の数のシンボル表現を含む文字列

例:

  Print("DoubleToString(120.0 + M_PI) : ",DoubleToString(120.0+M_PI));
  Print("DoubleToString(120.0 + M_PI,16) : ",DoubleToString(120.0+M_PI,16));
  Print("DoubleToString(120.0 + M_PI,-16) : ",DoubleToString(120.0+M_PI,-16));
  Print("DoubleToString(120.0 + M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
  Print("DoubleToString(120.0 + M_PI,-20) : ",DoubleToString(120.0+M_PI,-20));

参照

NormalizeDouble、StringToDouble

EnumToString

任意型の列挙値を文字列に変換します。

string  EnumToString(
  any_enum  value      // 任意型の列挙値
  );

パラメータ

value

[in]  任意型の列挙値

戻り値

列挙のテキスト表現を含む文字列。エラーメッセージを取得するには GetLastError() 関数が呼ばれます。

注意事項

この関数は _LastError 変数に下記のエラー値を設定することがあります。

  • ERR_INTERNAL_ERROR – 実行環境のエラー
  • ERR_NOT_ENOUGH_MEMORY – メモリが操作完了に不充分
  • ERR_INVALID_PARAMETER – 列挙値の名称が使用不可能

例:

enum interval // 名前付き定数の列挙
 {
  month=1,     // 1 ヶ月の間隔
  two_months, // 2 ヶ月
  quarter,     // 3 ヶ月(四半期)
  halfyear=6, // 半年
  year=12,     // 1 年( 12ヶ月)
 };
//+——————————————————————+
//| スクリプトプログラムを開始する関数                                          |
//+——————————————————————+
void OnStart()
 {
//— 時間間隔を 1 ヶ月に設定する
  interval period=month;
  Print(EnumToString(period)+"="+IntegerToString(period));
 
//— 時間間隔を四半期(3 ヶ月)に設定する
  period=quarter;
  Print(EnumToString(period)+"="+IntegerToString(period));
 
//— 時間間隔を 1 年(12ヶ月)に設定する
  period=year;
  Print(EnumToString(period)+"="+IntegerToString(period));
 
//— 注文の種類の表示をチェックする
  ENUM_ORDER_TYPE type=ORDER_TYPE_BUY;
  Print(EnumToString(type)+"="+IntegerToString(type));
 
//— 不正な値の表示をチェックする
  type=WRONG_VALUE;
  Print(EnumToString(type)+"="+IntegerToString(type));
 
// 結果:
// month=1
// quarter=3
// year=12
// ORDER_TYPE_BUY=0
// ENUM_ORDER_TYPE::-1=-1
 }

参照

列挙、入力変数

IntegerToString

この関数は、整数型の値を指定された長さの文字列に変換し、取得された文字列を返します。

string  IntegerToString(
  long    number,              // 数
  int    str_len=0,          // 結果の文字列の長さ
  ushort  fill_symbol=' '      // フィラー
  );

パラメータ

number

[in]  変換される数

str_len=0

[in]  文字列の長さ。結果の文字列が指定より長い場合、文字列は短くされません。結果の文字列が指定より短い場合には、フィラーシンボルが左側に追加されます。

fill_symbol=' '

[in]  フィラーシンボル。デフォルトではスペース。

戻り値

文字列

参照

StringToInteger

ShortToString

Unicode シンボルコードを 1 シンボルの文字列に変換して返します。

string  ShortToString(
  ushort  symbol_code      // シンボル
  );

パラメータ

symbol_code

[in]  シンボルコード。シンボルコードの代わりに、シンボルまたは Unicode の表にある 2 バイトの16 進コードの文字列を含むリテラル文字列を使用することが出来ます。

戻り値

文字列

参照

StringToCharArray, CharToString, StringGetCharacter

ShortArrayToString

配列の一部を戻り値の文字列に複製します。

string  ShortArrayToString(
  ushort  array[],      // 配列
  int    start=0,      // 配列でのコピー開始位置
  int    count=-1      // シンボル
  );

パラメータ

array[]

[in]  ushort 型の配列(wchar_t type 型のアナログ)

start=0

[in] コピー開始位置。デフォルトは 0。

count=-1

[in]  複製する配列要素数。結果の文字列の長さを定義します。初期値は、配列の最後または終了する 0まで複製することを意味する -1 です。

戻り値

文字列

参照

StringToShortArray, CharArrayToString, コードページの利用

TimeToString

1970年1月1日からの経過秒を含む値を「yyyy.mm.dd hh:mi 」フォーマットの文字列に変換します。

string  TimeToString(
  datetime  value,                          // 数
  int      mode=TIME_DATE|TIME_MINUTES      // 出力フォーマット
  );

パラメータ

value

[in]  01.01.1970 から経った秒数

mode=TIME_DATE|TIME_MINUTES

[[in] 任意のデータ入力モード。フラグまたはフラグの組み合わせです。
TIME_DATE の結果は "yyyy.mm.dd"、
TIME_MINUTES の結果は "hh:mi"、
TIME_SECONDS の結果は "hh:mi:ss" です。

戻り値

文字列

参照

StringToTime, TimeToStruct

NormalizeDouble

浮動小数点数を指定された精度に丸めます。

double  NormalizeDouble(
  double  value,      // 正規化数
  int    digits      // 小数点以下の桁数
  );

パラメータ

value

[in] 浮動小数点を持つ値

digits

[in]  精度フォーマット。0~8 の小数点以下の桁数。

戻り値

事前に定義された精度を持つdouble 型の値

注意事項

計算された決済逆指値及び決済指値、また未決注文の価格は Digits() で取得される値によって正規化する必要があります。

正規化数は小数点以下の桁数を多く含むことがあるので、Print() 関数を使用しての操作ログへの出力時にはご注意ください。例えば

  double a=76.671;             // 小数点以下3桁の正規化数
  Print("Print(76.671)=",a);   // そのまま出力
  Print("DoubleToString(a,8)=",DoubleToString(a,8)); // 事前定義された精度で出力

端末には下記が表示されます。

 DoubleToString(a,8)=76.67100000

 Print(76.671)=76.67100000000001

例:

  double pi=M_PI;
  Print("pi = ",DoubleToString(pi,16));
     
  double pi_3=NormalizeDouble(M_PI,3);
  Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
  ;
  double pi_8=NormalizeDouble(M_PI,8);
  Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
 
  double pi_0=NormalizeDouble(M_PI,0);
  Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
  結果:
  pi= 3.1415926535897931
  NormalizeDouble(pi,3)= 3.1419999999999999
  NormalizeDouble(pi,8)= 3.1415926499999998
  NormalizeDouble(pi,0)= 3.0000000000000000
*/

参照

DoubleToString、Real 型(double、float)、型の削減

StringToCharArray

Unicode から ANSI に変換された文字列をシンボルごとに uchar 型の配列の指定された一部に複製します。複製された要素の数が返されます。

int  StringToCharArray(
  string  text_string,        // ソースの文字列
  uchar& array[],            // 配列
  int    start=0,            // 配列でのコピー開始位置
  int    count=-1            // シンボル数
  uint    codepage=CP_ACP      // コードページ
  );

パラメータ

text_string

[in]  複製する文字列

array[]

[out]  uchar 型の配列

start=0

[in]  コピー開始位置。デフォルトでは 0。

count=-1

[in]  複製する配列要素数。結果の文字列の長さを定義します。初期値は、配列の最後または終了する 0まで複製することを意味する -1 です。文字列を終了する 0 は受け取り側の配列に複製され、動的配列のサイズは文字列のサイズに応じて増加出来ます。動的配列のサイズはが文字列の長さを超える場合は、配列のサイズは縮小されません。

codepage=CP_ACP

[in]  コードページの値。よく使用される コードページ では定数が提供されています。

戻り値

複製された要素の数

参照

CharArrayToString, StringToShortArray, コードページの利用

StringToColor

「R,G,B」の文字列またはカラー名を含む文字列を color 型の値に変換します。

color  StringToColor(
  string  color_string      // 色の文字列表現
  );

パラメータ

color_string

[in]  「R,G,B」型の色、または、事前定義されたウェブカラーの名称の文字列表現

戻り値

色の値

例:

  color str_color=StringToColor("0,127,0");
  Print(str_color);
  Print((string)str_color);
//— 色を少し変更する
  str_color=StringToColor("0,128,0");
  Print(str_color);
  Print((string)str_color);

参照

ColorToString, ColorToARGB

StringToDouble

この関数は数のシンボル表現を含む文字列を double 型の数値に変換します。

double  StringToDouble(
  string  value      // 文字列
  );

パラメータ

value

[in] 数のシンボル表現を含む文字列

戻り値

double 型の値

参照

NormalizeDouble, Real 型(double、float)、型の削減

StringToInteger

この関数は数のシンボル表現を含む文字列を int(整数)型の数値に変換します。

long  StringToInteger(
  string  value      // 文字列
  );

パラメータ

value

[in]  数を含む文字列

戻り値

long 型の値

参照

IntegerToString, Real 型(double、float)、型の削減

StringToShortArray

この関数は文字列をシンボルごとに ushort 型の配列の指定された部分にコピーし、 複製された要素の数を返します。

int  StringToShortArray(
  string  text_string,    // ソース文字列
  ushort& array[],        // 配列
  int    start=0,        // 配列でのコピー開始位置
  int    count=-1        // シンボル数
  );

パラメータ

text_string

[in]  複製する文字列

array[]

[out] ushort 型の配列(wchar_t type 型のアナログ)

start=0

[in]  コピー開始位置。デフォルトでは 0。

count=-1

[in]  複製する配列要素数。結果の文字列の長さを定義します。初期値は、配列の最後または終了する 0まで複製することを意味する -1です。最後の 0 も受け取り側の配列に複製され、動的配列のサイズは文字列のサイズに応じて増加出来ます。動的配列のサイズはが文字列の長さを超える場合は、配列のサイズは縮小されません。

戻り値

複製された要素の数

参照

ShortArrayToString, StringToCharArray, コードページの利用

StringToTime

"yyyy.mm.dd [hh:mi]”形式の時刻および/または日付を含む文字列を日時型の数値に変換します。

datetime  StringToTime(
  const string  time_string      // 日付の文字列
  );

パラメータ

time_string

[in]  次のいずれかで指定された形式での文字列:

  •  "yyyy.mm.dd [hh:mi]"
  •  "yyyy.mm.dd [hh:mi:ss]"
  •  "yyyymmdd [hh:mi:ss]"
  •  "yyyymmdd [hhmiss]"
  •  "yyyy/mm/dd [hh:mi:ss]"
  •  "yyyy-mm-dd [hh:mi:ss]"

戻り値

1970年1月1日からの経過秒数の合計を含むdatetime型の値

注意事項

StringToTime()を呼び出す前のtime_stringによる追加処理を避けるために、日付と時刻の間にある一連のスペースと集計文字は単一スペースと見なされます。

参照

TimeToString、TimeToStruct

StringFormat

この関数は、取得されたパラメータをフォーマットして文字列として返します。

string  StringFormat(
  string  format,    // フォーマット記述した文字列
              // パラメータ
  );

パラメータ

フォーマットでありません。

[in]  フォーマット方法を含む文字列。フォーマットの規則は PrintFormat 関数の場合と同じです。

[in]  コンマで区切られたパラメータ

戻り値

文字列

例:

void OnStart()
{
//– 文字列変数
  string output_string;
  string temp_string;
  string format_string;
//— ヘッダを準備
  temp_string=StringFormat("Contract specification for %s:n",_Symbol);
  StringAdd(output_string,temp_string);
//— int 値の出力
  int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
  temp_string=StringFormat("   SYMBOL_DIGITS = %d (number of digits after the decimal point)n",
                          digits);
  StringAdd(output_string,temp_string);
//— double 値の出力(小数点以下の桁数は変動)
  double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
  format_string=StringFormat("   SYMBOL_POINT = %%.%df (point value)n",
                            digits);
  temp_string=StringFormat(format_string,point_value);
  StringAdd(output_string,temp_string);
//— int value output
  int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
  temp_string=StringFormat("   SYMBOL_SPREAD = %d (current spread in points)n",
                          spread);
  StringAdd(output_string,temp_string);
//— int 値の出力
  int min_stop=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
  temp_string=StringFormat("   SYMBOL_TRADE_STOPS_LEVEL = %d (minimal indention in points for Stop orders)n",
                          min_stop);
  StringAdd(output_string,temp_string);
//— double (分数部なし)
  double contract_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
  temp_string=StringFormat("   SYMBOL_TRADE_CONTRACT_SIZE = %.f (contract size)n",
                          contract_size);
  StringAdd(output_string,temp_string);
//— デフォルト精度での double 値の出力
  double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
  temp_string=StringFormat("   SYMBOL_TRADE_TICK_SIZE = %f (minimal price change)n",
                          tick_size);
  StringAdd(output_string,temp_string);
//— スワップ計算モードの決定
  int swap_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_SWAP_MODE);
  string str_swap_mode;
  switch(swap_mode)
    {
    case SYMBOL_SWAP_MODE_DISABLED: str_swap_mode="SYMBOL_SWAP_MODE_DISABLED (no swaps)"; break;
    case SYMBOL_SWAP_MODE_POINTS: str_swap_mode="SYMBOL_SWAP_MODE_POINTS (in points)"; break;
    case SYMBOL_SWAP_MODE_CURRENCY_SYMBOL: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_SYMBOL (in money, in base currency of the symbol)"; break;
    case SYMBOL_SWAP_MODE_CURRENCY_MARGIN: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_MARGIN (in money, in margin currency of the symbol)"; break;
    case SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT (in money, in client deposit currency)"; break;
    case SYMBOL_SWAP_MODE_INTEREST_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_CURRENT (as the specified annual interest from the instrument price at calculation of swap)"; break;
    case SYMBOL_SWAP_MODE_INTEREST_OPEN: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_OPEN (as the specified annual interest from the position open price)"; break;
    case SYMBOL_SWAP_MODE_REOPEN_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_CURRENT (by reopening positions by the close price +/- specified number of points)"; break;
    case SYMBOL_SWAP_MODE_REOPEN_BID: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_BID (by reopening positions by the current Bid price +/- specified number of points)"; break;
    }
//— 文字列値の出力
  temp_string=StringFormat("   SYMBOL_SWAP_MODE = %sn",
                          str_swap_mode);
  StringAdd(output_string,temp_string);
//— デフォルト精度でのdouble 値の出力
  double swap_long=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);
  temp_string=StringFormat("   SYMBOL_SWAP_LONG = %f (long swap value)n",
                          swap_long);
  StringAdd(output_string,temp_string);
//— デフォルト精度でのdouble 値の出力
  double swap_short=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
  temp_string=StringFormat("   SYMBOL_SWAP_SHORT = %f (short swap value)n",
                          swap_short);
  StringAdd(output_string,temp_string);
//— 取引モードの決定
  int trade_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE);
  string str_trade_mode;
  switch(trade_mode)
    {
    case SYMBOL_TRADE_MODE_DISABLED: str_trade_mode="SYMBOL_TRADE_MODE_DISABLED (trade is disabled for the symbol)"; break;
    case SYMBOL_TRADE_MODE_LONGONLY: str_trade_mode="SYMBOL_TRADE_MODE_LONGONLY (only long positions are allowed)"; break;
    case SYMBOL_TRADE_MODE_SHORTONLY: str_trade_mode="SYMBOL_TRADE_MODE_SHORTONLY (only short positions are allowed)"; break;
    case SYMBOL_TRADE_MODE_CLOSEONLY: str_trade_mode="SYMBOL_TRADE_MODE_CLOSEONLY (only position close operations are allowed)"; break;
    case SYMBOL_TRADE_MODE_FULL: str_trade_mode="SYMBOL_TRADE_MODE_FULL (no trade restrictions)"; break;
    }
//— 文字列値の出力
  temp_string=StringFormat("   SYMBOL_TRADE_MODE = %sn",
                          str_trade_mode);
  StringAdd(output_string,temp_string);
//— コンパクトな形式での double 値の出力
  double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
  temp_string=StringFormat("   SYMBOL_VOLUME_MIN = %g (minimal volume for a deal)n",volume_min);
  StringAdd(output_string,temp_string);
//— コンパクトな形式での double 値の出力
  double volume_step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
  temp_string=StringFormat("   SYMBOL_VOLUME_STEP = %g (minimal volume change step)n",volume_step);
  StringAdd(output_string,temp_string);
//— コンパクトな形式での double 値の出力
  double volume_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
  temp_string=StringFormat("   SYMBOL_VOLUME_MAX = %g (maximal volume for a deal)n",volume_max);
  StringAdd(output_string,temp_string);
//— 契約金計算モードの決定
  int calc_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE);
  string str_calc_mode;
  switch(calc_mode)
    {
    case SYMBOL_CALC_MODE_FOREX:str_calc_mode="SYMBOL_CALC_MODE_FOREX (Forex)";break;
    case SYMBOL_CALC_MODE_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_FUTURES (futures)";break;
    case SYMBOL_CALC_MODE_CFD:str_calc_mode="SYMBOL_CALC_MODE_CFD (CFD)";break;
    case SYMBOL_CALC_MODE_CFDINDEX:str_calc_mode="SYMBOL_CALC_MODE_CFDINDEX (CFD for indices)";break;
    case SYMBOL_CALC_MODE_CFDLEVERAGE:str_calc_mode="SYMBOL_CALC_MODE_CFDLEVERAGE (CFD at leverage trading)";break;
    case SYMBOL_CALC_MODE_EXCH_STOCKS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_STOCKS (trading securities on a stock exchange)";break;
    case SYMBOL_CALC_MODE_EXCH_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES (trading futures contracts on a stock exchange)";break;
    case SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS (trading futures contracts on FORTS)";break;
    }
//— 文字列値の出力
  temp_string=StringFormat("   SYMBOL_TRADE_CALC_MODE = %sn",
                          str_calc_mode);
  StringAdd(output_string,temp_string);
//— 小数点以下の桁数が 2 桁の double 値の出力
  double margin_initial=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);
  temp_string=StringFormat("   SYMBOL_MARGIN_INITIAL = %.2f (initial margin)n",
                          margin_initial);
  StringAdd(output_string,temp_string);
//— 小数点以下の桁数が 2 桁の double 値の出力
  double margin_maintenance=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE);
  temp_string=StringFormat("   SYMBOL_MARGIN_MAINTENANCE = %.2f (maintenance margin)n",
                          margin_maintenance);
  StringAdd(output_string,temp_string);
//— int 値の出力
  int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
  temp_string=StringFormat("   SYMBOL_TRADE_FREEZE_LEVEL = %d (order freeze level in points)",
                          freeze_level);
  StringAdd(output_string,temp_string);
  Print(output_string);
  Comment(output_string);
/* execution result
  Contract specification for EURUSD:
    SYMBOL_DIGITS = 5 (number of digits after the decimal point)
    SYMBOL_POINT = 0.00001 (point value)
    SYMBOL_SPREAD = 10 (current spread in points)
    SYMBOL_TRADE_STOPS_LEVEL = 18 (minimal indention in points for Stop orders)
    SYMBOL_TRADE_CONTRACT_SIZE = 100000 (contract size)
    SYMBOL_TRADE_TICK_SIZE = 0.000010 (minimal price change)
    SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS (in points)
    SYMBOL_SWAP_LONG = -0.700000 (buy order swap value)
    SYMBOL_SWAP_SHORT = -1.000000 (sell order swap value)
    SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL (no trade restrictions)
    SYMBOL_VOLUME_MIN = 0.01 (minimal volume for a deal)
    SYMBOL_VOLUME_STEP = 0.01 (minimal volume change step)
    SYMBOL_VOLUME_MAX = 500 (maximal volume for a deal)
    SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX (Forex)
    SYMBOL_MARGIN_INITIAL = 0.00 (initial margin)
    SYMBOL_MARGIN_MAINTENANCE = 0.00 (maintenance margin)
    SYMBOL_TRADE_FREEZE_LEVEL = 0 (order freeze level in points)
*/
}

参照

PrintFormat、DoubleToString、ColorToString、TimeToString

Originally posted 2019-07-29 23:03:13.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">