mql5言語の特徴、微妙なニュアンスとテクニック - ページ 18 1...111213141516171819202122232425...247 新しいコメント fxsaber 2017.03.10 08:54 #171 デニス・キリチェンコ なぜ静電 容量なのか、お聞かせください。 文脈から切り離されているため、元の記事を 参照してください。 Sergey Gritsay 2017.03.10 12:34 #172 OnInit()関数の 文書化されていない機能で、この関数はプログラムのどの部分でも実行することができます。テストコード//+------------------------------------------------------------------+ //| test10.mq5 | //| Sergey Gritsay | //| https://www.mql5.com/ru/users/sergey1294 | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com/ru/users/sergey1294" #property version "1.00" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CNevBar { private: datetime curbar; datetime lastbar; public: CNevBar(); ~CNevBar(); bool bar(string symbol,ENUM_TIMEFRAMES period); }; //+------------------------------------------------------------------+ void CNevBar::CNevBar() { } //+------------------------------------------------------------------+ void CNevBar::~CNevBar(void) { } //+------------------------------------------------------------------+ bool CNevBar:: bar(string symbol,ENUM_TIMEFRAMES period) { curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE); if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE); if(lastbar!=curbar) { lastbar=curbar; return(true); } return(false); } int test=0; CNevBar newbar; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- test=5; Print(__FUNCTION__,": test = ",test); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(newbar.bar(_Symbol,PERIOD_CURRENT)) { test=10; Print(__FUNCTION__,": test = ",test); OnInit(); } } //+------------------------------------------------------------------+ 結果2017.03.10 19:26:02.977 test10 (EURUSD,M1) OnInit: test = 5 2017.03.10 19:27:03.041 test10 (EURUSD,M1) OnTick: test = 10 2017.03.10 19:27:03.042 test10 (EURUSD,M1) OnInit: test = 5 2017.03.10 19:28:03.245 test10 (EURUSD,M1) OnTick: test = 10 2017.03.10 19:28:03.245 test10 (EURUSD,M1) OnInit: test = 5 2017.03.10 19:29:02.995 test10 (EURUSD,M1) OnTick: test = 10 2017.03.10 19:29:02.995 test10 (EURUSD,M1) OnInit: test = 5 ... fxsaber 2017.03.10 12:36 #173 セルゲイ・グリツァイOnInit()関数の 文書化されていない機能で、この関数はプログラムのどの部分でも実行することができます。テストコード On関数はすべて通常の関数なので、好きなときに呼び出すことができます。OnCalculate または OnTradeTransaction。 Sergey Gritsay 2017.03.10 12:42 #174 fxsaber On関数はすべて通常の関数であり、したがって、好きなときに呼び出すことができる。OnCalculate または OnTradeTransaction のいずれか。 しかし、ドキュメントに書かれているわけではありませんオンイットOnInit()関数は、OnInitイベントハンドラです。型はvoidまたはintで、パラメータは ありません。voidOnInit()。InitイベントはExpert Advisorやインジケータをロードした直後に生成され、このイベントはスクリプトには生成されません。OnInit()関数は、初期化に使用される。OnInit()の戻り値が int の場合、0 以外は初期化に失敗したことを意味し、初期化解除理由コード REASON_INITFAILED で Deinit イベントを発生さ せる。エキスパートの入力パラメータを最適化するために、ENUM_INIT_RETCODE列挙の値をリターンコードとして使用することが推奨されます。これらの値は、最適な検査 薬の選択など、最適化の過程をコントロールするために使用される。テスト開始前のExpert Advisorの初期化中に、TerminalInfoInteger() 関数を使用して、エージェントの構成とリソースに関する情報(コア数、空きメモリ量など)を要求することができます。得られた情報に基づいて、このテストエージェントの使用を許可するか、このExpert Advisorの最適化の際に使用を拒否することができます。enum_init_retcode識別子商品説明INIT_SUCCEEDED初期化が成功すると、Expert Advisor のテストを続行できます。このコードはゼロと同じ意味です - テスターのExpert Advisorの初期化が成功したことを意味します。INIT_FAILED初期化に失敗し、回復不能なエラーのためテストは無意味です。例えば、Expert Advisorの動作に必要なインジケータの作成に失敗した場合。この値が返された場合、0以外の値が返された場合と同様に、テスター内のExpert Advisorの初期化に失敗していることを意味します。init_parameters_incorrectこのリターンコードを含む結果文字列は、一般的な最適化テーブルで赤色でハイライトされるように設計されています。Expert Advisorのこのパラメータのセットに対するテストは実行されず、エージェントは新しいタスクを受け取るために自由になります。この値を受け取ると、ストラテジーテスターは、このジョブを他のエージェントに渡して繰り返し実行させないことが保証されます。init_agent_not_suitable初期化中のエラーはありませんが、何らかの理由で指定されたエージェントはテストに適していません。例えば、RAMの不足、OpenCLの サポートなどです。このコードが返された後、エージェントはこの最適化が 終了するまでタスクを受け取りません。void 型の OnInit()関数は、常に初期化の成功を意味する。 Документация по MQL5: Программы MQL5 / События клиентского терминала www.mql5.com Программы MQL5 / События клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Dmitiry Ananiev 2017.03.10 12:44 #175 週末にコードを書くときは、OnInitの中にOnTickを挿入しています。そして、新しいダニが入ってこなくても、すべて順調です fxsaber 2017.03.10 12:48 #176 セルゲイ・グリツァイ しかし、ドキュメントに書かれているわけではありませんオンイットOnInit()関数は、OnInitイベントハンドラです。型はvoidまたはintで、パラメータは ありません。voidOnInit()。InitイベントはExpert AdvisorまたはIndicatorをロードした直後に生成されます。機能であると書いてあります。OnInitの前とOnDeinitの後に、グローバルオブジェクトのコンストラクタ/デストラクタの呼び出しがある(ヘルプに不正確な記述があります)。そのため、例えばインジケータでは、OnInitを使わずにインジケータ・バッファを宣言することができます。初歩の初歩は以下の通りです。 fxsaber 2017.03.10 13:10 #177 FullOnCalculateを検索 すると、MT4/MT5でインジケータ・バッファを使用する際の完全に文書化されていない多くの機能にすぐにたどり着きます。 Roffild 2017.03.10 19:52 #178 これが、私が最終的に描いた問題解決のイメージです。iCustom(... inputs, PRICE_CLOSE, color &colors[], int &widths[], int &styles[] ); iAlligator(... params, PRICE_CLOSE, color &colors[], int &widths[], int &styles[] ); 例えば、あるインジケータがこのようなパラメータを持っているとします。#property indicator_plots 5 #property indicator_color1 clrAquamarine, clrBeige, clrBurlyWood #property indicator_color2 clrRed, clrGreen #property indicator_color5 clrGold, clrCrimson, clrCadetBlue とすると、その色配列は次のようになります。color colors[] = { clrAquamarine, clrBeige, clrBurlyWood, // 1 plot clrRed, clrGreen, // 2 plot clrBlack, // 3 plot clrWhite, // 4 plot clrGold, clrCrimson, clrCadetBlue, // 5 plot clrBurlyWood, clrBlue // ignore };配列が小さい場合は、一部の色しか転送されません。配列が大きくなると切り捨てられる。width 配列と style 配列の場合も原理は同じである。 Artyom Trishkin 2017.03.12 05:21 #179 fxsaber OrderSendSyncでは、オーバーロードされた(上記参照)HistoryDealSelectが呼び出される。最後のポジションをオープンした時刻と、最後のポジションをクローズした時刻は、どのように判断すればよいのでしょうか?また、一般的に、mql5のオープン/クローズドポジションの情報を得るための一般的な原理やアルゴリズムが知りたいです。何を考慮する必要があるのか、現時点ではどのような仕様になっているのか。 Alexey Viktorov 2017.03.12 06:21 #180 アルチョム・トリシキン最後のポジションをオープンした時刻と、最後のポジションをクローズした時刻は、どのように判断すればよいのでしょうか?一般的に、mql5でオープン/クローズドポジションの情報を得るための一般的な原理とアルゴリズムを知りたいです。何を考慮すべきなのか、現時点での特殊性は? これはすべて、注文と取引履歴を選択し、注文のプロパティを読み取ることで決定されます。bool HistorySelectByPosition( long position_id // идентификатор позиции - POSITION_IDENTIFIER );position_identifierポジション識別子は一意の番号であり、新しく開設されたポジションに割り当てられ、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。ネッティングモード(単一イン/アウト取引)でポジションを反転させる場合、ポジションのPOSITION_IDENTIFIER識別子は変更されません。ただし、POSITION_TICKETは逆転を招いたオーダーチケットに変更されます。ヘッジモードでは、ポジションの反転はありません。長そして、列挙型ENUM_DEAL_ENTRY からプロパティを使用する。DEAL_ENTRY_IN市場への参入DEAL_ENTRY_OUT市場の出口取引参加者ユーターン取引参加者カウンターポジションを閉じる 1...111213141516171819202122232425...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜ静電 容量なのか、お聞かせください。
文脈から切り離されているため、元の記事を 参照してください。
OnInit()関数の 文書化されていない機能で、この関数はプログラムのどの部分でも実行することができます。テストコード
結果
...
OnInit()関数の 文書化されていない機能で、この関数はプログラムのどの部分でも実行することができます。テストコード
On関数はすべて通常の関数なので、好きなときに呼び出すことができます。OnCalculate または OnTradeTransaction。
On関数はすべて通常の関数であり、したがって、好きなときに呼び出すことができる。OnCalculate または OnTradeTransaction のいずれか。
しかし、ドキュメントに書かれているわけではありません
オンイット
OnInit()関数は、OnInitイベントハンドラです。型はvoidまたはintで、パラメータは ありません。
voidOnInit()。
InitイベントはExpert Advisorやインジケータをロードした直後に生成され、このイベントはスクリプトには生成されません。OnInit()関数は、初期化に使用される。OnInit()の戻り値が int の場合、0 以外は初期化に失敗したことを意味し、初期化解除理由コード REASON_INITFAILED で Deinit イベントを発生さ せる。
エキスパートの入力パラメータを最適化するために、ENUM_INIT_RETCODE列挙の値をリターンコードとして使用することが推奨されます。これらの値は、最適な検査 薬の選択など、最適化の過程をコントロールするために使用される。テスト開始前のExpert Advisorの初期化中に、TerminalInfoInteger() 関数を使用して、エージェントの構成とリソースに関する情報(コア数、空きメモリ量など)を要求することができます。得られた情報に基づいて、このテストエージェントの使用を許可するか、このExpert Advisorの最適化の際に使用を拒否することができます。
enum_init_retcode
識別子
商品説明
INIT_SUCCEEDED
初期化が成功すると、Expert Advisor のテストを続行できます。
このコードはゼロと同じ意味です - テスターのExpert Advisorの初期化が成功したことを意味します。
INIT_FAILED
初期化に失敗し、回復不能なエラーのためテストは無意味です。例えば、Expert Advisorの動作に必要なインジケータの作成に失敗した場合。
この値が返された場合、0以外の値が返された場合と同様に、テスター内のExpert Advisorの初期化に失敗していることを意味します。
init_parameters_incorrect
このリターンコードを含む結果文字列は、一般的な最適化テーブルで赤色でハイライトされるように設計されています。
Expert Advisorのこのパラメータのセットに対するテストは実行されず、エージェントは新しいタスクを受け取るために自由になります。
この値を受け取ると、ストラテジーテスターは、このジョブを他のエージェントに渡して繰り返し実行させないことが保証されます。
init_agent_not_suitable
初期化中のエラーはありませんが、何らかの理由で指定されたエージェントはテストに適していません。例えば、RAMの不足、OpenCLの サポートなどです。
このコードが返された後、エージェントはこの最適化が 終了するまでタスクを受け取りません。
void 型の OnInit()関数は、常に初期化の成功を意味する。
しかし、ドキュメントに書かれているわけではありません
オンイット
OnInit()関数は、OnInitイベントハンドラです。型はvoidまたはintで、パラメータは ありません。
voidOnInit()。
InitイベントはExpert AdvisorまたはIndicatorをロードした直後に生成されます。
機能であると書いてあります。
OnInitの前とOnDeinitの後に、グローバルオブジェクトのコンストラクタ/デストラクタの呼び出しがある(ヘルプに不正確な記述があります)。そのため、例えばインジケータでは、OnInitを使わずにインジケータ・バッファを宣言することができます。初歩の初歩は以下の通りです。
配列が小さい場合は、一部の色しか転送されません。配列が大きくなると切り捨てられる。
width 配列と style 配列の場合も原理は同じである。
OrderSendSyncでは、オーバーロードされた(上記参照)HistoryDealSelectが呼び出される。
最後のポジションをオープンした時刻と、最後のポジションをクローズした時刻は、どのように判断すればよいのでしょうか?
また、一般的に、mql5のオープン/クローズドポジションの情報を得るための一般的な原理やアルゴリズムが知りたいです。
何を考慮する必要があるのか、現時点ではどのような仕様になっているのか。
最後のポジションをオープンした時刻と、最後のポジションをクローズした時刻は、どのように判断すればよいのでしょうか?
一般的に、mql5でオープン/クローズドポジションの情報を得るための一般的な原理とアルゴリズムを知りたいです。
何を考慮すべきなのか、現時点での特殊性は?
これはすべて、注文と取引履歴を選択し、注文のプロパティを読み取ることで決定されます。
position_identifier
ポジション識別子は一意の番号であり、新しく開設されたポジションに割り当てられ、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。
ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。
ネッティングモード(単一イン/アウト取引)でポジションを反転させる場合、ポジションのPOSITION_IDENTIFIER識別子は変更されません。ただし、POSITION_TICKETは逆転を招いたオーダーチケットに変更されます。ヘッジモードでは、ポジションの反転はありません。
長
そして、列挙型ENUM_DEAL_ENTRY からプロパティを使用する。
DEAL_ENTRY_IN
市場への参入
DEAL_ENTRY_OUT
市場の出口
取引参加者
ユーターン
取引参加者
カウンターポジションを閉じる