カスタム銘柄

CustomSymbolCreate

指定されたグループで指定された名前を持つ新しいカスタム銘柄を作成します。

bool  CustomSymbolCreate(
const string     symbol_name,         // カスタム銘柄名
const string    symbol_path=””,     // 銘柄が作成されるグループ名
const string    symbol_origin=NULL  // カスタム銘柄を作成するの基盤として使用される銘柄の名前
);

パラメータ

symbol_name

[in]  カスタム銘柄名。銘柄が作成されたグループまたはサブグループを含んではいけない。

symbol_path=””

[in]  銘柄を持つグループの名前。

symbol_origin=NULL

[in]  作成するカスタム銘柄のプロパティのコピー元となる銘柄の名前。カスタム銘柄を作成した後は、適切な関数を使用して任意のプロパティ値を必要なものに変更できます。 <分節146763>

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

すべてのカスタム銘柄は特別なCustomセクションで作成されます。グループ名が指定されていない場合(CustomSymbolCreate関数のsymbol_path パラメータが空の文字列またはNULL)、カスタム銘柄はCustomセクションのルートに生成されます。ここでは、グループとサブグループをフォルダーとサブフォルダーとして表示できるファイルシステムとの類似性を引き出すことができます。

銘柄名とグループ名には、句読点、スペース、特殊文字を含まないラテン文字のみを含めることができます(“.”、 “_”、 “&”、”#”のみを含めることができます)。”<“、”>”、”:”、” “”、”/”、”|”、”?”、”*”の使用は推奨されません。

カスタム銘柄名は、それが作成されたグループの名前に関係なく一意である必要があります。同名の銘柄が既に存在する場合、CustomSymbolCreate()関数は’falseを返し、それ以降の GetLastError()の呼び出しはエラー5300(ERR_NOT_CUSTOM_SYMBOL)または5304(ERR_CUSTOM_SYMBOL_EXIST)を返します。

銘柄名は 31字を超えられません。さもないと、CustomSymbolCreate()は’false’を返し、エラー5302 – ERR_CUSTOM_SYMBOL_NAME_LONGがアクティブになります。

symbol_pathパラメータを設定する方法は2つあります。

  • カスタム銘柄名を含まないグループ名(例:”CFD\Metals”)。エラーを避けるにはこのオプションが最適です。
  • または<グループ>名 + グループ区切り文字”\”+<カスタム銘柄名>(例: “CFD\Metals\Platinum”)。この場合、グループ名は正確にカスタム銘柄名で終わる必要があります。不一致の場合、カスタム銘柄は作成されますが、意図したグループ内には作成されません。例として、symbol_path=”CFD\Metals\Platinum”でsymbol_name=”platinum” (register error)の場合、カスタム銘柄”platinum”は”CustomCFDMetalsPlatinum”グループに作成されます。SymbolInfoGetString(“platinum”,SYMBOL_PATH)関数は値”CustomCFDMetalsPlatinumplatinum”を返します。

 

SYMBOL_PATHプロパティは銘柄名で終わるパスを返すことにご注意ください。したがって、同じグループ内にカスタム銘柄を作成する場合は、変更を加えずにコピーすることはできません。この場合、上記の結果が得られないように、銘柄名を切り捨てる必要があります。

存在しない銘柄がsymbol_originパラメータとして設定されると、カスタム銘柄はsymbol_originパラメータが設定されていない場合と同じく、空で作成されます。この場合、エラー4301 – ERR_MARKET_UNKNOWN_SYMBOLがアクティブになります。

“Custom\”、”\”グループ区切り文字と銘柄名が最後に指定されている場合、symbol_pathパラメータは127文字を超えることはできません。

 

参照

SymbolName、SymbolSelect、CustomSymbolDelete

CustomSymbolDelete

指定された名前のカスタム銘柄を削除します。

bool  CustomSymbolDelete(
const string     symbol_name         // カスタム銘柄名
);

パラメータ

symbol

[in]  カスタム銘柄名既存のシンボルの名前と一致してはいけません。

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

板情報に表示されているカスタム銘柄またはチャートが開かれているカスタム銘柄は削除できません。

 

参照

SymbolName、SymbolSelect、CustomSymbolCreate

CustomSymbolSetInteger

カスタム銘柄の整数型プロパティ値を設定します。

bool  CustomSymbolSetInteger(
const string              symbol_name,      // 銘柄名
ENUM_SYMBOL_INFO_INTEGER property_id,     // プロパティID
long                     property_value   // プロパティ値
);

パラメータ

symbol_name

[in]  カスタム銘柄名

property_id

[in]  銘柄プロパティID値はENUM_SYMBOL_INFO_INTEGER列挙体のうちの一つです。

property_value

[in]  プロパティ値を含むlong型の変数

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

これらのプロパティのいずれかが銘柄仕様で変更されている場合、カスタム銘柄の分足及びティックの履歴は完全に削除されます。

  • SYMBOL_CHART_MODE – バー構築のための価格タイプ(BidまたはLast)
  • SYMBOL_DIGITS – 価格表示に使われる小数点以下の桁数

カスタム銘柄履歴を削除した後、端末は更新されたプロパティを使用して新たに履歴作成を試みます。カスタム銘柄のプロパティが手動で変更された場合も同様です。

参照

SymbolInfoInteger

CustomSymbolSetDouble

カスタム銘柄の実数型プロパティ値を設定します。

bool  CustomSymbolSetDouble(
const string              symbol_name,      // 銘柄名
ENUM_SYMBOL_INFO_DOUBLE property_id,     // プロパティID
double                   property_value   // プロパティ値
);

パラメータ

symbol_name

[in]  カスタム銘柄名

property_id

[in]  銘柄プロパティID値はENUM_SYMBOL_INFO_DOUBLE列挙体のうちの一つです。

property_value

[in]  プロパティ値を含むdouble型の変数

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

これらのプロパティのいずれかが銘柄仕様で変更されている場合、カスタム銘柄の分足及びティックの履歴は完全に削除されます。

  • SYMBOL_POINT – 1ポイント値
  • SYMBOL_TRADE_TICK_SIZE – 許容される最低価格の変更を指定するティックの値
  • SYMBOL_TRADE_TICK_VALUE – 収益性の高いポジションの1ティック価格変更値

カスタム銘柄履歴を削除した後、端末は更新されたプロパティを使用して新たに履歴作成を試みます。カスタム銘柄のプロパティが手動で変更された場合も同様です。

参照

SymbolInfoDouble

CustomSymbolSetString

カスタム銘柄の文字列型プロパティ値を設定します。

bool  CustomSymbolSetString(
const string              symbol_name,      // 銘柄名
ENUM_SYMBOL_INFO_STRING property_id,     // プロパティID
string                   property_value   // プロパティ値
);

パラメータ

symbol_name

[in]  カスタム銘柄名

property_id

[in]  銘柄プロパティID値はENUM_SYMBOL_INFO_STRING列挙体のうちの一つです。

property_value

[in]  プロパティ値を含む文字列型の変数

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

銘柄仕様でSYMBOL_FORMULAプロパティ(カスタム銘柄価格構成の式を設定)が変更された場合、カスタム銘柄の分足及びティック履歴は完全に削除されます。カスタム銘柄履歴を削除した後、端末は新しい式を使用して新たに履歴作成を試みます。カスタム銘柄の式が手動で変更された場合も同様です。

参照

SymbolInfoString

CustomSymbolSetMarginRate

カスタム銘柄の注文の種類と方向に応じて証拠金率を設定します。

bool  CustomSymbolSetMarginRate(
const string      symbol_name,              // 銘柄名
ENUM_ORDER_TYPE    order_type,               // 注文の種類
double             initial_margin_rate,     // 当初証拠金率
double             maintenance_margin_rate  // 維持証拠金率
);

パラメータ

symbol_name

[in]  カスタム銘柄名

order_type

[in]  注文の種類

initial_margin_rate

[in] 当初証拠金率を表すdouble型の変数。当初証拠金とは、適切な方向の1ロットの取引に対する保証金です。レートに当初証拠金を掛けて、指定された種類の注文を出す時に口座に予約される金額を受け取ります。

maintenance_margin_rate

[in] 維持証拠金率を表すdouble型の変数。維持証拠金は、適切な方向の1ロットのポジションを維持するのに必要な最低限の証拠金です。レートに維持証拠金を掛けて、指定された種類の注文を出す時に口座に予約される金額を受け取ります。

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

参照

SymbolInfoMarginRate

CustomSymbolSetSessionQuote

指定された銘柄と曜日の指定された相場セッションの開始時刻と終了時刻を設定します。

bool  CustomSymbolSetSessionQuote(
const string      symbol_name,         // 銘柄名
ENUM_DAY_OF_WEEK  day_of_week,         // 曜日
uint              session_index,      // セッションのインデックス
datetime         from,                // セッションの開始時間
datetime         to                  // セッションの終了時間
);

パラメータ

symbol_name

[in]  カスタム銘柄名

ENUM_DAY_OF_WEEK

[in] ENUM_DAY_OF_WEEK列挙からの値である曜日

uint

[in]  開始時刻と終了時刻を設定するセッションのインデックス。セッションインデックスは0から始まります。

from

[in]  セッション開始時間(00:00からの秒数)で、変数のデータ値は無視されます。

to

[in]  セッション終了時間(00:00からの秒数)で、変数のデータ値は無視されます。

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

指定されたsession_indexを持つセッションが既存する場合、この関数は単にセッションの開始と終了を編集します。

セッションの開始パラメータと終了パラメータにゼロが渡された場合(from=0to=0)、適切なsession_indexを持つセッションが削除され、セッションインデックスが下向きにシフトされます。

セッションは順番にしか追加できません。言い換えればsession_index=1は、インデックスが0であるセッションが既存する場合にのみ追加できます。このルールが守られていないと、新しいセッションは作成されず、関数自体は「false」を返します。

参照

SymbolInfoSessionQuote、Symbol info、TimeToStruct、Date structure

CustomSymbolSetSessionTrade

指定された銘柄と曜日の指定された取引セッションの開始時刻と終了時刻を設定します。

bool  CustomSymbolSetSessionTrade(
const string      symbol_name,        // 銘柄名
ENUM_DAY_OF_WEEK  day_of_week,         // 曜日
uint              session_index,      // セッションのインデックス
datetime         from,                // セッションの開始時間
datetime         to                  // セッションの終了時間
);

パラメータ

symbol_name

[in]  カスタム銘柄名

ENUM_DAY_OF_WEEK

[in] ENUM_DAY_OF_WEEK列挙からの値である曜日

uint

[in]  開始時刻と終了時刻を設定するセッションのインデックス。セッションインデックスは0から始まります。

from

[in]  セッション開始時間(00:00からの秒数)で、変数のデータ値は無視されます。

to

[in]  セッション終了時間(00:00からの秒数)で、変数のデータ値は無視されます。

戻り値

成功の場合はtrue、それ以外の場合はfalse。エラー情報を取得するためにはGetLastError()関数を呼び出します。

注意事項

指定されたsession_indexを持つセッションが既存する場合、この関数は単にセッションの開始と終了を編集します。

セッションの開始パラメータと終了パラメータにゼロが渡された場合(from=0to=0)、適切なsession_indexを持つセッションが削除され、セッションインデックスが下向きにシフトされます。

セッションは順番にしか追加できません。言い換えればsession_index=1は、インデックスが0であるセッションが既存する場合にのみ追加できます。このルールが守られていないと、新しいセッションは作成されず、関数自体は「false」を返します。

参照

SymbolInfoSessionTrade、Symbol info、TimeToStruct、Date structure

CustomRatesDelete

指定した時間間隔内のカスタム銘柄の価格履歴からすべてのバーを削除します。

int  CustomRatesDelete(
const string    symbol,      // 銘柄名
datetime        from,        // 開始の日付
datetime        to            // 終了の日付
);

パラメータ

symbol

[in]  カスタム銘柄名

from

[in]  削除する指定範囲内の価格履歴の最初のバーの時間

to

[in]  削除する指定範囲内の価格履歴の最後のバーの時間

戻り値

削除されたバーの数(エラーの場合は -1 )

 

参照

CustomRatesReplace、CustomRatesUpdate、CopyRates

CustomRatesReplace

指定された時間間隔内のカスタム銘柄の価格履歴をMqlRates型の配列からのデータで完全に置き換えます。

int  CustomRatesReplace(
const string    symbol,            // 銘柄名
datetime        from,              // 開始の日付
datetime        to,                // 終了の日付
const MqlRates& rates[],           // カスタム銘柄に適用されるデータの配列
uint            count=WHOLE_ARRAY  // 使用されるrates[]配列要素の数
);

パラメータ

symbol

[in]  カスタム銘柄名

from

[in]  更新する指定範囲内の価格履歴の最初のバーの時間

to

[in]  更新する指定範囲内の価格履歴の最後のバーの時間

rates[]

[in] MqlRates型のM1履歴データの配列

count=WHOLE_ARRAY

[in] 置換に使用されるrates[]配列要素の数。WHOLE_ARRAYはすべてのrates[]配列要素が置き換えに使用されることを意味します。

戻り値

更新されたバーの数(エラーの場合は -1 )

注意事項

指定された範囲を超えたrates[]配列のバーは無視されます。このようなバーがすでに価格履歴に存在して指定された範囲に入った場合は置き換えられます。現在の価格履歴の指定された範囲外のバーは変更されません。rates[]配列データはOHLC価格について正しく、バーが開く時間はM1時間枠に対応するべきです。

 

参照

CustomRatesDelete、CustomRatesUpdate、CopyRates

CustomRatesUpdate

カスタム銘柄履歴に欠けているバーを追加し、既存のデータをMqlRates型配列のものに置き換えます。

int  CustomRatesUpdate(
const string    symbol,            // カスタム銘柄名
const MqlRates& rates[],         // カスタム銘柄に適用されるデータの配列
uint            count=WHOLE_ARRAY  // 使用されるrates[]配列要素の数
);

パラメータ

symbol

[in]  カスタム銘柄名

rates[]

[in] MqlRates型のM1履歴データの配列

count=WHOLE_ARRAY

[in] 更新に使用されるrates[]配列要素の数。WHOLE_ARRAYはすべてのrates[]配列要素が使用されることを意味します。

戻り値

更新されたバーの数(エラーの場合は -1 )

注意事項

rates[] 配列のバーが現在のカスタム銘柄の履歴にない場合は追加され、そのようなバーがすでに存在する場合は置き換えられます。現在の価格履歴の他のバーは変更されません。rates[]配列データはOHLC価格について正しく、バーが開く時間はM1時間枠に対応するべきです。

参照

CustomRatesReplace、CustomRatesDelete、CopyRates

CustomTicksAdd

カスタム銘柄の価格履歴にMqlTick型の配列からデータを追加します。カスタム銘柄は気配値ウィンドウで選択されなければなりません。

int  CustomTicksAdd(
const string    symbol,            // 銘柄名
const MqlTick& ticks[],           // カスタム銘柄に適用されるティックデータの配列
uint            count=WHOLE_ARRAY  // 使用されるticks[]配列要素の数
);

パラメータ

symbol

[in]  カスタム銘柄名

ticks[]

[in]   [in]以前のデータから最近のものまでの時間順に配列されたMqlTick型のティックデータの配列、すなわちk<nの場合はticks[k].time_msc <= ticks[n].time_msc。

count=WHOLE_ARRAY

[in] 追加に使用されるticks[]配列要素の数。WHOLE_ARRAYはすべてのticks[]配列要素が使用されることを意味します。

戻り値

追加されたティックの数(エラーの場合は -1 )

さらなる注記

CustomTicksAdd関数は、気配値ウィンドウで開かれているカスタム銘柄に対してのみ機能します。銘柄が気配値ウィンドウで選択されていない場合にはCustomTicksReplaceを使用してティックを追加するべきです。

MqlTick 構造体には、1970年1月1日からカウントされた時間(秒単位のティック時間)とtime_msc(ミリ秒単位のティック時間)の2つの時間値を持つフィールドがあります。追加されたティックのこれらのフィールドは、次の順序で処理されます。

  1. ticks[k].time_msc!=0の場合、これはticks[k].timeフィールドへの書き入れに使われます。すなわちticks[k].time=ticks[k].time_msc/1000(整数除算)がtickに設定されます。
  2. ticks[k].time_msc==0でticks[k].time!=0の場合、ミリ秒単位の時間は、1000を掛けることによって得られます。すなわちticks[k].time_msc=ticks[k].time*1000です。
  3. ticks[k].time_msc==0でticks[k].time==0の場合、これらのフィールドにはCustomTicksAddが呼ばれたときの現在の取引サーバー時間がミリ秒まで書かれます。

ticks[k].bid, ticks[k].ask、ticks[k].lastまたはticks[k].volume の値が正の場合は、適切なフラグの組み合わせがticks[k].flags fieldに書かれます。

  • TICK_FLAG_BID – ティックが買値を変更した
  • TICK_FLAG_ASK  – ティックが売値を変更した
  • TICK_FLAG_LAST – ティックが直近の約定値を変更した
  • TICK_FLAG_VOLUME – ティックが取引量を変更した

フィールドの値がゼロ以下の場合、対応するフラグは ticks[k].flagsフィールドに書き込まれません。

 

TICK_FLAG_BUYフラグとTICK_FLAG_SELLフラグはカスタム銘柄の履歴には追加されません。

 

参照

CustomRatesDelete、CustomRatesUpdate、CustomTicksReplace、CopyTicks、CopyTicksRange

CustomTicksDelete

指定した時間間隔内のカスタム銘柄の価格履歴からすべてのティックを削除します。

int  CustomTicksDelete(
const string    symbol,            // 銘柄名
long           from_msc,         // 開始の日付
long           to_msc           // 終了の日付
);

パラメータ

symbol

[in]  カスタム銘柄名

from_msc

[in]  削除する指定範囲内の価格履歴の最初のティックの時間(1970.01.01 から経過したミリ秒)

to_msc

[in]  削除する指定範囲内の価格履歴の最後のティックの時間(1970.01.01 から経過したミリ秒)

戻り値

削除されたティックの数(エラーの場合は -1 )

参照

CustomRatesDelete、CustomRatesUpdate、CustomTicksReplace、CopyTicks、CopyTicksRange

CustomTicksReplace

指定された時間間隔内のカスタム銘柄の価格履歴をMqlTick型の配列からのデータで完全に置き換えます。

int  CustomTicksReplace(
const string    symbol,            // 銘柄名
long           from_msc,         // 開始の日付
long           to_msc,           // 終了の日付
const MqlTick& ticks[],           // カスタム銘柄に適用されるデータの配列
uint            count=WHOLE_ARRAY // 使用されるticks[]配列要素の数
);

パラメータ

symbol

[in]  カスタム銘柄名

from_msc

[in]  削除する指定範囲内の価格履歴の最初のティックの時間(1970.01.01 から経過したミリ秒)

to_msc

[in]  削除する指定範囲内の価格履歴の最後のティックの時間(1970.01.01 から経過したミリ秒)

ticks[]

[in] 昇順に並び替えられたMqlTick型のティックデータの配列

count=WHOLE_ARRAY

[in]  指定した時間間隔内の置き換えに使用されるticks[]配列要素の数。WHOLE_ARRAYはすべてのticks[]配列要素が使用されることを意味します。

戻り値

更新されたティックの数(エラーの場合は-1)

注意事項

クォーツの流れの中ではしばしば複数のティックがミリ秒単位で同じ時間を持つことがあるので(正確なティックの時間はMqlTick構造体のtime_mscフィールドに保存)、CustomTicksReplace関数は自動的にticks[]配列要素を時間順に並び替えることはありません。したがって、ティックの配列は事前に時間の昇順で並び替える必要があります。

ティックはto_mscで指定された時間まで、またはエラーが発生するまで、毎日連続して置き換えられます。指定された範囲の日は順番に処理され。ティック時間と昇順(非降順)の間の不一致が検出されると、現在の日のティックの置き換えが停止します。現在の日(間違ったティックの瞬間)と指定された間隔の残りは変更されませんが、その前日までのティックはすべて普通に置き換えられます。

ticks[] 配列にいずれの日のティックデータも含まれない場合は(一般的に、どの期間でも)、ticks[] からのティックデータが適応された後に、カスタム銘柄履歴には欠落したデータに対応する「穴」が表示されます。言い換えれば CustomTicksReplaceを欠陥したティックで呼び出すとティック履歴のその部分を削除され、これはCustomTicksDeleteを「穴」の範囲で呼び出すのと同じです。

 

参照

CustomRatesDelete、CustomRatesUpdate、CustomTicksDelete、CopyTicks、CopyTicksRange

CustomBookAdd

銘柄の板情報の構造体を渡します。ブローカーサーバーから価格が到着したかのように板情報をブロードキャストできます。

int  CustomBookAdd(
const string        symbol,           // 銘柄名
const MqlBookInfo& books[]            // 板情報要素の説明を持つ配列
uint               count=WHOLE_ARRAY  // 使用される要素の数
);

パラメータ

symbol

[in]  カスタム銘柄名。

books[]

[in]   The array of MqlBookInfo型データの配列で板情報のステータスを完全に記述します(すべての売買リクエスト)。渡された板情報は以前の者を完全に置き換えます。

count=WHOLE_ARRAY

[in]   関数に渡される’books’配列要素の数。デフォルトでは配列全体が使用されます。

戻り値

追加されたティック数(エラーの場合は -1 )。

注意事項

CustomBookAdd関数は板情報が開かれたカスタム銘柄とのみ作動します(プラットフォームインターフェイスまたはMarketBookAdd関数による)。

板情報を投入したとき、銘柄の買値と売値は更新されません。CustomTicksAddを使用して、最良価格の変更を制御してティックを投入する必要があります。

渡されたデータの妥当性が確認されます。価格と数量は負にすることはできません。また、各要素では、型、価格、数量(MqlBookInfo.volumeまたはMqlBookInfo.volume_real)も指定する必要があります。少なくとも1つの板情報要素が誤って記述されている場合、システムは渡されたステータスを完全に破棄します。

MqlBookInfo.volume_real拡張精度ボリュームは、通常のMqlBookInfo.volumeよりも優先順位が高くなります。板情報要素に両方の値が指定されている場合は、volume_realの値が使用されます。

‘books’配列内のMqlBookInfo要素の順序は関係ありません。データを保存するとき、端末は独自に価格によってデータを分類します。

データを保存するとき、受け取り側のカスタム銘柄の”Book depth” (SYMBOL_TICKS_BOOKDEPTH)パラメータが確認されます。渡された板情報で売りリクエストの数がこの値を超えると、超過レベルは破棄されます。買いリクエストについても同様です。

‘books’配列の書き込み例:

板情報ステータス

books[]の書き込み

板情報の例

books[0].type=BOOK_TYPE_SELL;
books[0].price=1.14337;
books[0].volume=100;
books[1].type=BOOK_TYPE_SELL;
books[1].price=1.14330;
books[1].volume=50;
books[2].type=BOOK_TYPE_SELL;
books[2].price=1.14335;
books[2].volume=40;
books[3].type=BOOK_TYPE_SELL;
books[3].price=1.14333;
books[3].volume=10;
books[4].type=BOOK_TYPE_BUY;
books[4].price=1.14322;
books[4].volume=10;
books[5].type=BOOK_TYPE_BUY;
books[5].price=1.14320;
books[5].volume=90;
books[6].type=BOOK_TYPE_BUY;
books[6].price=1.14319;
books[6].volume=100;
books[7].type=BOOK_TYPE_BUY;
books[7].price=1.14318;
books[7].volume=10;

例:

//+——————————————————————+
//| エキスパート初期化関数                                                 |
//+——————————————————————+
int OnInit()
{
//— データ源となる銘柄の板情報を有効にする
MarketBookAdd(Symbol());
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| エキスパート初期化解除関数                                             |
//+——————————————————————+
void OnDeinit(const int reason)
{
}
//+——————————————————————+
//| ティック関数                                                         |
//+——————————————————————+
void OnTick(void)
{
MqlTick ticks[];
ArrayResize(ticks,1);
//— 現在の価格を共通銘柄からカスタム銘柄にコピーする
if(SymbolInfoTick(Symbol(),ticks[0]))
{
string symbol_name=Symbol()+“.SYN”;
CustomTicksAdd(symbol_name,ticks);
}
}
//+——————————————————————+
//| Book function                                                    |
//+——————————————————————+
void OnBookEvent(const string &book_symbol)
{
//— 現在の板情報ステータスを共通銘柄からカスタム銘柄にコピーする
if(book_symbol==Symbol())
{
MqlBookInfo book_array[];
if(MarketBookGet(Symbol(),book_array))
{
string symbol_name=Symbol()+“.SYN”;
CustomBookAdd(symbol_name,book_array);
}
}
}
//+——————————————————————+

参照

MarketBookAdd、CustomTicksAdd、 OnBookEvent

Originally posted 2019-07-30 09:18:58.

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="">