この記事の内容
この記事を読むと…
- 通常配列で直近確定足がどの添字か説明する。
- 未準備・空値・有効値と約定成功を区別する。
- 再送と復旧で現在建玉を照合する。
記事内で用語を調べる
バックテスト トレーディングプラン デモ口座(仮想資金の練習口座) ドローダウン ストップロス リクオート(新価格の提示)MQL5のExpert AdvisorはMT5でイベントに反応するプログラムです。必要な許可が有効なら規則の判定と取引要求の送信ができます。イベント処理・権限・サーバー応答と実際の約定は別。チャートに追加しただけでは成績は確認できません。
MQL5のEAと実行ファイル
MetaEditorはMQ5ソースをEX5へコンパイルします。EX5はソースなしでも配布でき、言語を学んでも非公開の内部規則が判明するわけではありません。EAは許された取引要求を送れます。指標にも計算・通知がありますが、イベントと禁止取引機能が違い、描画だけとする説明も狭すぎます。
MQL5 EAはMT5環境を使用。MT4にも別言語・インターフェースのExpert Advisorがあり、他の自動システムには別の注文接続があります。実際の依存と権限を比べます。 MT4とMT5のEA。 自動取引の最初の手順。
配列の添字0が直近確定足とは限らない
AS_SERIESなしの通常配列へstart_pos=1、count=3でCopyBufferが全件成功したと仮定。三確定足を選び、物理メモリーは最古が先頭です。この設定では直近確定足は添字2です。
横へスクロールして図全体を確認 →
横にスクロールすると図全体を確認できます。
架空の103・101・102を三件すべて、部分取得・エラーなしで受信した模型です。AS_SERIESなしの通常配列で102.5はデータ選択の試験、売買信号ではありません。CopyBuffer資料は現在足からのstart_posと、物理メモリー先頭に最古要素を置く点を定義しています。
start_pos、返却件数、受取配列の添字方向を記録。件数だけ合っても足を誤選択できます。別の配列設定にも添字2を一律適用しません。
OnInit・OnTick・OnDeinitと他のイベント
OnInitは初期化を扱います。利用期間中に一回だけとの保証ではありません。必要な資源を確認し、初期化不可なら失敗状態を返します。
OnTickは取付チャート銘柄のNewTickを処理。同種イベントが待機中・処理中なら新たなものは追加されません。EAには他イベントもありOnTickは必須ではありません。AutoTrading無効化は新規要求を禁止しますが、計算停止や現在ハンドラーの中断ではありません。
OnDeinitは除去・終了・再初期化を伴う変更と理由を扱います。資源と保存状態を管理。OnTimerやOnTradeTransactionも重要になり、三関数だけの周期ではありません。複数銘柄EAで取付銘柄のティック到着だけから他銘柄の最新性は判断できません。
CTradeと約定確認
OrderSendのtrueは約定成功そのものではありません。戻りコードと注文・約定・建玉を照合。OrderCheckも事前確認で後の執行保証ではありません。架空障害試験で0.10ロット買い要求の応答が不明なとき、照合せず再送すると両方約定して0.20になる場合があります。ローカル確認なしはサーバー無処理の証明ではありません。
OnTradeTransactionは注文削除と約定履歴追加を区別し、到着優先順序を保証しません。初期建玉なし、確定買いD1=0.04・D2=0.06を仮定。ORDER_DELETEでゼロへ戻す誤カウンターはD1・D2・削除の順で0、削除・D1・D2なら0.10。確定買い合計は共に0.10です。注文状態と建玉リスクは別の欄。実台帳には売り・反転・履歴訂正・口座方式も必要です。
CTradeにはBuy、Sell、PositionClose等があります。Buyの構造確認成功でも実取引成功とは限らず、ResultRetcodeとResultDealを確認します。要求価格と約定価格の差も別に記録します。 スリッページ。
Strategy Testerと未使用の評価期間
テスターはモードと利用データにより生成ティックや業者収集の実ティックで過去試験できます。由来・時刻・契約条件・費用を結果と保存。実ティックを一律のMetaQuotes価格源と考えません。
選択に使った同じ履歴で最良結果を評価すると根拠を過大評価し得ます。ただし滑らかな曲線やライブ失敗を数学的に保証するものではありません。未使用期間を残し、繰り返した研究上の選択も記録します。 バックテスト。
EAの役割と限界
繰返し確認や指定銘柄の監視を実装できます。月二百件、夜間運転、速い判断は設計要件の候補であり利益の優位性の証拠ではありません。
取引しない条件も含め、どの情報とイベントを使うか指定。異例の発表や環境は試験・監督が必要ですが全自動化を排除するものではありません。販売図や特定できない掲示板調査は将来実績の確かな推定ではありません。
小さな自作プロジェクトで検証する
小規模EAは明確な規則が正しく実装されたか確認できます。技能と対象から学習量を選択。三~六か月や、自作か購入かという違いだけで良い結果は保証されません。
無人運転には基盤・権限・復旧手順が必要。ローカルAutoTrading無効は建玉決済や計算停止ではありません。サーバー受理済み通常ストップは端末終了後も残り得ますが、EAだけの出口には稼働と接続が必要。MetaQuotes Virtual Hostingは移行した別環境で自動取引が許可され、ローカルボタンは遠隔のEAを止めません。Windows VPSとも区別します。 VPSと遅延。
未準備データ、再起動、不正な数量刻み、不明な応答、手動建玉変更の受入試験を定義。古い信号を信頼する前に現在リスクを復元します。netting口座の同銘柄戦略は一つの純建玉を共有し、Magic Numberだけで資本・証拠金は分離しません。
ハンドル取得と指標値の準備は別
ハンドルができても必要足の計算完了とは限りません。BarsCalculatedは計算件数かエラー−1を返します。次にCopyBufferの実件数、バッファ、足位置を確認。取得失敗をゼロへ変換しません。RSIゼロは極端な値で、未準備とは別です。
ハンドルがあっても使える値とは限らない
横にスクロールすると図全体を確認できます。
一値が必要な模型。A:無効ハンドルは未取得。B:ハンドルあり・取得ゼロ件なら待つ。C:一件でもEMPTY_VALUEなら信号に使えない。D:有効値45を一件取得できれば規則を評価できます。45は架空の読値で投資信号ではありません。
EMPTY_VALUEの既定値DBL_MAXは有限値なので、有限性検査だけでは不十分。独自指標は別の空値を指定できます。契約を確認し、すべてのゼロを拒否しません。履歴不足、空値、有効数値を区別します。
練習:ハンドルあり、一件取得済みでもEMPTY_VALUE。次に何をしますか。
閾値の判定をせず、バッファ・足・空値を確認して未準備を記録し、次の適切なイベントで再試行。ゼロの観測値を捏造しません。
外部APIの情報には別の利用可能時点の確認が必要です。チャート依存の規則には別のテスト条件があります。 APIをオフラインで再現。 視覚テストの差。
次に行う確認
- 信頼できる提供元からMT5を入手しデモで学ぶ場合、テスターのMoving AverageやMACD SampleをEUR/USD H1で一回試し、資産曲線、ドローダウン、PFの定義を読みます。この練習は将来成果や実口座開設の推奨ではありません。 デモ口座、ドローダウン。
- 公式MQL5資料のOnInit、OnTick、CTradeから構成と例の場所を確認。三章だけですべてを理解したとはせず、機能に応じ他の仕様も調べます。
- 入力・入口・出口・数量・取引しない条件を書きます。裁量箇所は明記。文脈規則も情報源と条件を定義すれば形式化できる場合があります。 条件のチェックリスト。
- データ取得、イベント処理、注文応答の受入条件を備えた小さなプロジェクトを計画。期間と範囲は技能と必要機能次第です。
- 実リスクを検討する前にデモで運用手順を確認。一か月は例にすぎず、デモと実際の執行は異なり得ます。テスターの遅延模擬は将来の全実約定を測定したものではありません。
独立した再起動試験:同じ約定を二度数えない
実APIが必ず重複通知するという話ではなく、保存ログを再読する架空試験です。初期建玉なし、確定買いのdeal識別子D1は0.04ロット、D2は0.06ロット。復旧時の入力ログがD1・D1・D2なら単純加算0.14ですが、同じD1を一件として照合すると確定合計0.10です。注文IDやMagic Numberを約定IDと同一視しません。
別の架空USD/JPY仕様で一ロット10,000 USD、参考150 JPY/USDなら、誤集計0.14は1,400 USD=210,000 JPY、正しい0.10は1,000 USD=150,000 JPY。同じ必要率4%の単純計算で8,400対6,000 JPYになります。これは実口座残高でも国内の統一契約単位でもありません。重複排除だけでは売り・反転・訂正は処理できず、現在のサーバー履歴と建玉へ再照合します。
注文の削除で建玉をゼロへ戻さず、現在の履歴・実建玉と照合して復旧します。 小さな画面では横にスクロールするか、図を拡大できます。数値と要点は下のテキストにも記載しています。
理解度を確認
練習の目安: 約2分.
答えと解説を見る
正解。物理先頭は最古なので、この通常配列の末尾添字2がshift1です。
よくある質問
Pythonのボットとは何が違いますか。
動かすにはプログラミングが必要ですか。
テスターと実運用の結果が違う理由は?
VPSは必須ですか。
出典と検証
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.metatrader5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
計算例には前提条件を明記しています。現在の市場データや提供会社の取引条件の代わりにはなりません。
