章 07
● 公開

設定の保存と移行(.set)

Tool versions: OkurraButton 2.00 · OkurraGlobal 2.00 · O!kurra Capital Defense EA 2.00


目次

7.1 .setファイル — 持ち運び可能な設定アーティファクト 7.2 保存:.setはどのように作られるか 7.3 2種類の.set — フルと戦略のみ 7.4 パネルでの読み込み(Load)とファイルマネージャー 7.5 ファイルの置き場所:sets、history、作業状態 7.6 EAへの読み込み(F7 → Load) 7.7 実践:命名とバリエーションの管理 7.8 ライセンスキーと.setファイル 7.9 ポジション所有権レジストリと再起動


7.1 .setファイル — 持ち運び可能な設定アーティファクト

.setファイルは設計と実行をつなぐ橋であり、パネルで設計した戦略がロボットに届く唯一の手段です(第2.4章および第2.7章)。これはよく理解しておく価値があります。あなたの戦略アーカイブ全体が、まさに.setファイルの集まりだからです。

技術的には.setは、MetaTrader 5の標準的な設定フォーマットによる単なるテキストファイルです。各行がParameterName=Valueであり、セミコロン(;)で始まる行はコメントです。Okurraのパネルは、ファイルの先頭に短いコメントヘッダーを書き加え、そのファイルがどこからいつ来たのかという情報(銘柄、ブローカー、タイムスタンプ、そしてグローバルセクションを含むかどうかの注記)を記載します。EAは.setをネイティブに読み込みます。ロボットは、そのファイルがOkurraのインジケーターで作られたことを知りませんし、気にもしません。読み込める正しい.setとして見えるだけです。

このアプローチの最大の利点:設定は、はかない状態ではなく、永続的なドキュメントであるという点です。戦略のどのバリエーションにも名前を付け、アーカイブし、前のものと比較し、別の口座で読み込み、あるいは他者に渡すことができます。これは多くのバリエーションを研究するときに実を結ぶ規律です — うまくいったものを失うことがありません。


7.2 保存:.setはどのように作られるか

.setファイルは、パネルのSaveボタンで作成します(OkurraButtonまたはOkurraGlobal — 第4.8章および第5.7章)。

Saveをクリックすると小さな保存ダイアログが開き、そこですぐにファイル名を入力し、「V」で確定します(または「X」でキャンセル)。これは重要です:名前は保存の最中に付けます — 無機質なタイムスタンプ付きのファイルを作ってから後で名前を変える必要はありません。最初から読みやすいもの、たとえばXAUUSD_mean-rev_M1と入力できます。(後から名前を変えることも可能です — Loadダイアログで、セクション7.4。)

ファイルはMetaTraderのサンドボックス内のディレクトリMQL5/Files/OKU/sets/に保存されます。ファイルの先頭に、パネルは次のようなコメントヘッダーを書き込みます:

; --------------------------------------------
; F-ExportSet: Okurra .set written by OkurraButton
; --------------------------------------------
; symbol       : XAUUSD
; broker       : <broker name>
; timestamp    : 2026.06.13 14:22:05
; --------------------------------------------
; Note   : per-button sections only (B1..B5).
;          Global section: use OkurraGlobal [Save] for that.
; --------------------------------------------

OkurraGlobalから保存されたファイルも同様のヘッダーを持ちますが、説明が*「F-ExportSet: Okurra EA setup snapshot (.set)」*となり、source(ファイルの出所)とea_revision(その設定が対応するEAのリビジョン)という行が追加されます。これにより、数週間後にファイルを開いても、それがどこから来て何を含んでいるのかがすぐに分かります。


7.3 2種類の.set — フルと戦略のみ

どちらのパネルでSaveをクリックするかによって、ファイルに何が入るかが決まります(第2.4章):

OkurraGlobalでのSave → フルセットアップ。 ファイルにはグローバルセクション(EA全体に関わるすべての設定)、5つすべてのbutton(B1…B5)のパラメーターが含まれます。これはロボット全体の完全な設定です — 一度の操作でEAに読み込めば、すべてが揃います。完成したセットアップをEAへ移すとき、通常使うのはこのファイルです。

より新しいグローバル設定も.setで移動します。 OkurraGlobalからのフルファイルは、とりわけ「own only」モードのスイッチ(Global_MonitorOwnOnly、第5.5章)、「own only」のトレードマーカーフィルター(Global_TradeMarkers_OwnOnly)、クローズモデル(Global_CloseModel)とそのcooldown(Global_CloseAdaptive_CooldownMin)を運びます — セットアップを別の端末に移せば、これらの挙動も一緒に移ります。意図的な例外が1つ:Global_OwnOnly_AdoptExisting(既存ポジションを「own only」レジストリへ一度だけ取り込む機能)はEAのInputsウィンドウ(F7)にのみ存在し、.setでは移動しません — これは、設定と一緒にうっかり持ち運びたくない運用上の安全ヒューズです。

OkurraButtonでのSave → 戦略のみ。 ファイルにはbutton B1…B5のパラメーターだけが含まれ、グローバルセクションは含まれません(ファイルのヘッダーが明示的にそう述べています:「per-button sections only」)。EAにすでにあるグローバル設定を保ったまま、戦略だけを移したいときに便利です。

どちらを使うべきか? 完全なセットアップを設計していて、ロボットに読み込ませるファイルを1つにしたいなら — OkurraGlobal(フル)から保存してください。OkurraButtonからのファイルは、戦略とグローバル設定を意図的に分けたいときに意味があります(たとえば、1つのグローバルセットと、その上でテストする複数の異なるbuttonセットがある場合)。

MQL5/Files/OKU/ ディレクトリのマップ:3つのサブフォルダ(.setファイルを含むsets/ とキャプション「F7でEAに読み込み可能」、auto_*.iniを含むhistory/ とキャプション「ローリングバックアップ、削除は手動」、B<N>_applied.iniを含むapplied/ とキャプション「パネルの作業状態 — EAは読まない」)、sets/ からEAアイコンへの矢印(F7 Load)、強調点:EAに届くのはsets/ の.setだけ
図 7.1 — MQL5/Files/OKU/ ディレクトリのマップ:3つのサブフォルダ(.setファイルを含むsets/ とキャプション「F7でEAに読み込み可能」、auto

7.4 パネルでの読み込み(Load)とファイルマネージャー

パネルのLoadボタンは、OKU/sets/ディレクトリの**.setファイルのブラウザ**を開きます。これは単なる「ファイル選択」ではありません — ダイアログは小さなマネージャーのように機能します:

  • 読み込み — ファイルを選ぶと、パネルはそれをただちに現在の設定として採用します。あとからApplyをクリックする必要はありません — 読み込まれた.setが適用済みの状態となり、companion indicatorsはそれに合わせて再描画されます。(実際には:フィールドは金色に光りません。読み込み後は「作業中」と「適用済み」が同一だからです — 第4.7章。)
  • 名前の変更 — ダイアログ内でファイルの名前を変更できます(たとえば無機質なButton_<timestamp>.setXAUUSD_scalp_M1.setへ)。パネルを離れずにアーカイブを整理できる便利な方法です。
  • 削除 — 不要になった.setファイルを削除することもできます。削除は2段階です(誤クリックへの安全策):最初のクリックはボタンをarmするだけで(確認を求めます)、2回目のクリックで初めてファイルが削除されます。1回のクリックでは何も消えません — 5秒以内に2回目をクリックしなければ、安全策は自動的にdisarmされ、ファイルは手つかずのまま残ります。

読み込み時のクロス同期。 チャートに両方のパネルがある場合、片方で.setを読み込むともう片方が自動的に更新されます(第2.5章の仕組み):OkurraGlobalでフルの.setを読み込む → Globalがグローバルセクションを採用し、OkurraButtonが同じファイルからB1…B5を採用します(逆も同様)。読み込みは1回で十分です — 同じファイルを二度読み込む必要はありません。


7.5 ファイルの置き場所:sets、history、作業状態

ツールが保存するものはすべてMQL5/Files/OKU/ディレクトリに入ります。日々の作業の観点では、そこへ手動で入ることはありません — ただし何がどこにあるかは知っておく価値があります。これらは3つの別物だからです:

サブフォルダ内容役割
OKU/sets/.setファイル(保存したあなたの設定)EAに読み込むもの(F7)、そしてパネルのLoadが読み込むもの
OKU/history/コピーauto_B<N>_<TS>.iniauto_Global_<TS>.ini、名前付きプリセットmanual_B<N>_<label>.ini、より古いoffline_B<N>_<TS>.iniローリングバックアップ+プリセット — Applyのたびに追記される自動コピー。manual_...は、OkurraButtonのPダイアログで保存に自分の名前を付けたときに作られます(第4.8章)
OKU/applied/B<N>_c<id>_applied.iniGlobal_c<id>_applied.ini、作業ファイルパネルの作業状態 — チャート更新をまたぐメモリ
OKU/ea_memory/とりわけEAの自己ポジションレジストリownreg_acc<login>_<sym>_mb<base>_ch<id>.csvEA自身のメモリ(「own only」モード、第5.5章) — 端末の再起動を生き延びます。手動で触らないでください
OKU/diag/ea_activity.log(および診断ファイル)EAのアクティビティジャーナル — エントリー、トレード、保護イベントの記録(第21章)

覚えておく価値のある4つのこと:

  1. EA に渡るのは sets/ にある .set だけです。 history/applied/ にある .ini ファイルはパネルの内部メモリであり、ロボットはそれらを決して読みません(第2.6章)。ひとつニュアンスがあります: EA は自身のプレビューファイルをサブフォルダ applied/viz/ に書き込みます — EA のチャート上の companion indicators がそれを読みます(ロボットが実際に見ているものを表示するため)。これは逆方向のトラフィックであり、EA は依然として applied/ から何も設定として読み込みません。
  2. 作業状態のファイル名にはチャートの接尾辞が付きます。 applied/ のファイルは B<N>_c<id>_applied.ini / Global_c<id>_applied.ini という名前で、<id> は短縮されたチャート識別子です — これにより、同じ銘柄の2つのチャートが互いの設計状態を混同しません。手作業でファイルを探すときに覚えておく価値があります。
  3. 履歴(history/)は安全網です。 Apply のたびにパネルはそこにコピーを追記します。自動的にクリーンアップされません — ファイルは蓄積され、あなたが適当と判断したときに手動で削除します。これにより、.set として保存していなくても、以前の設計状態に戻ることができます。
  4. パネルの Reset(R)は履歴に触れません。 Reset は作業状態(applied/)をクリアしますが、history/ は残ります — つまりリセット後でも設定を復元する材料が手元にあります(第4.8章)。

7.6 EA への読み込み(F7 → Load)

これは橋渡しの最終ステップです: 設計した設定を稼働中のロボットへ移すことです。これはEA 自身の中で、MetaTrader の標準的な仕組みによって行われます — ここには、以前に保存した .set ファイルを指定するという点以外に Okurra 固有のものは何もありません。

手順は次のとおりです:

  1. EA の設定ウィンドウを開きます。 稼働中(または投入したばかり)の EA が載っているチャート上で F7 を押します — またはチャートを右クリック → Expert Advisors → PropertiesInputs タブのあるウィンドウが開きます。
  2. Load をクリックします(MT5 設定ウィンドウ下部のボタン)。
  3. OKU/sets/.set ファイルを指定します — パネルで保存したもの(できれば OkurraGlobal からの完全版)。
  4. OK で確定します。 EA は読み込まれた設定で起動(または再起動)します — すべてのグローバル設定と5つの button が一度に反映されます。

第2.7章からのリマインダー。 design panels と EA は別々のチャートで動作します。.set ファイルは design chart(パネルのある方)で保存し、execution chart(EA のある方)で読み込みます。これは意図的な移送です — ロボットが設定を変更するのは、あなた自身が .set を読み込んだときだけで、パネルから「ライブで」変わることは決してありません。

.set は双方向に機能します。 EA は .set読み込むだけでなく、現在の設定を .set保存することもできます — 同じ F7 ウィンドウ内のネイティブな Save ボタンで(MetaTrader の標準)。そのようなファイルはパネルからの .set とまったく同じパラメータ名を持つため、OkurraButton/OkurraGlobal に読み戻し(Load)、design chart 上で修正して新しい .set として保存できます。これにより .set はパネルとロボットのあいだの完全な双方向の交換フォーマットになります — 単なる「パネル → EA」ではありません。(これは依然としてファイルによる移送であり、ライブ接続ではありません — 第2.7章。)

リリース 1.28 より前の set — その移行方法。 新しいフィールド(Extreme Mode、Filters Mode、OKUR bounce の行)は古いファイルを読み込んだときに既定値をとります。つまり1.28 以前とまったく同じ挙動です — ただし1つ例外があります: 古い set で「Keep Extreme Across Zone Exits」(1.28 で削除されたフィールド)が有効になっていた場合、その設定はパネル経由でのみ移行します。そのファイルを OkurraButton に読み込んでください(Load) — パネルが古いキーを Extreme Mode = Keep Across Exits に変換します — その後 Apply と Save を行うと新しいフォーマットのファイルができます。古いファイルを F7 から EA に直接読み込むと、そのキーは黙って無視され、button は Classic に戻ります(MetaTrader は未知の名前を警告なしに無視します)。第9.6章。

7-button の set(リリース 2.00 より前のもの) — その移行方法。 B6_*/B7_* のキーは読み込み時に黙ってスキップされ(他の未知の名前と同様)、ファイル内の B1–B5 の戦略はそのまま動作します。その過程で1つだけ能動的に整理されるものがあります: かつての B6/B7 を指しているトリガーのターゲット — EA はそれを無視し、存在しないターゲットについてのメッセージをジャーナルに書き込みます。また Button パネルはファイルを読み込んだ時点でそのターゲットをすでにクリーンアップするため、新しい保存には決して引き継がれません。工場出荷時の既定値の2つの変更(EA はスイッチ OFF で起動する、Price Movement の sensor は工場出荷時に無効)は、それらのキーを含まない set に影響します — アップデート時の完全なチェックリスト: 第3.5章。

反復。 デモで観察したあとに戦略を変えたくなったら: パネルに戻り、調整し、新しい .set を保存して、EA に読み込みます(また F7)。古い .set はアーカイブとして sets/ に残ります — あとで戻って比較できます。


7.7 実践: 命名とバリアントの管理

.set はあなたの研究アーカイブです — いくつかの習慣があれば、2週間後でもどれが何なのか分かるようになります:

  • 保存時にすぐ説明的な名前を付けましょう。 Button_20260613_142205.set の代わりに、保存ダイアログで内容を説明するものを入力します: XAUUSD_meanrev_M1_v1NAS100_momentum_3butthedge_symetryczny_test。名前は Load ダイアログで最初に目にするものです。
  • 接尾辞で手動バージョン管理をしましょう。 同じアイデアを反復するときは _v1_v2_v3 を付け足します。前のバージョンを上書きしないでください — 基準点として残しておきましょう。これはバリアントの「手動履歴」であり、history/ の自動コピーより読み取りやすいものです。
  • 1つのセットアップにつき「完全な」ファイルを1つ持ちましょう。 OkurraGlobal からの完全なファイル(Global + B1…B5)で運用するのが最も便利です — 1ファイル = ロボットの設定全体。OkurraButton からの「戦略のみ」のファイルは、意図的なケース(1つのグローバルセット、多数の button セット)のために残しておきましょう。
  • history/ が膨らんだら片付けましょう。 Apply ごとの自動コピーは自分では消えません。フォルダが膨れ上がったら、古いものを手動で削除してください — 重要なバリアントはどうせ名前を付けた .set ファイルとして保存してあるはずです。
  • その .set が何を示すためのものだったかをメモしましょう。 ファイルはどう設定したかは語りますが、なぜかは語りません。短いメモ(「v3 — しきい値を深く、シグナルを減らし、トレンド向けのテスト」)をデモの観察と並べておくと全体像が完成します。ファイルのコメントヘッダーに、普通のテキストエディタで自分の説明を追記することもできます — なにしろ純粋なテキストなのですから。

これらすべてが O!kurra での作業リズムを構成します: indicators で設計する → .set を保存する → EA に読み込む → デモで観察する → 設計に戻る.set ファイルはこのサイクルの軸であり — あなたが学んだことのアーカイブでもあります。


7.8 ライセンスキーと .set ファイル

EA のライセンスキー(LicenseKey パラメータ、第3.7章)は .set ファイルの中を移動することが — できますが、必ずしもそうする必要はありません。どのファイルがそれを運ぶのか、読み込み時に何が起こるのかを知っておく価値があります:

LicenseKey の行を含むファイル:

  • OkurraGlobal からの完全な .set常に LicenseKey= の行を含みます。Global パネルはキーを検証しません(indicators は無料です) — そのキーのフィールドは最後に読み込んだファイルの値のプレビューにすぎないため、実際には保存される行はほとんどの場合です。
  • OkurraButton からの「戦略のみ」のファイル — キーを決して含みません(グローバルセクションは保存されません)。
  • リリースの工場出荷時 setOkurra-Defaults-<version>.set)と Creator からの set意図的に LicenseKey の行をまったく含みません

F7 → Load で読み込んだときに何が起こるか:

  • ファイルが LicenseKey= の行を含む場合(空の行であっても)、その値が EA ウィンドウのキーのフィールドを上書きします。空の行 = キーがクリアされる — 起動時に EA は “Enter your License key in EA inputs” というアラートを表示し、有効なライセンスを取得しません。
  • ファイルがその行を含まない場合、キーのフィールドは手つかずのまま残ります — 以前に貼り付けたキーは読み込みを生き延びます。だからこそ工場出荷時と Creator の set はこの行を省いているのです。

恒久的なものでも危険なものでもありません。 クリアされたキーはローカルな不便にすぎません — もう一度貼り付けるだけです(ライセンスは okurra.com のサーバー上にあり、あなたのアカウントに紐付けられています)。そして、たとえあなたのキーが共有したファイルの中を「旅した」としても: キーはokurra.com パネルでそれに割り当てられた MT5 の口座番号のみで機能します — 他人の口座では検証を通りません。

set を共有するときの衛生ルール: OkurraGlobal から保存したファイルを共有する前に、テキストエディタで開いて LicenseKey=... の行(または少なくともその値)を削除してください。キーは共有しないものです — そして受け取る側にも、あなたのファイルを読み込んだ後に自分のキーがクリアされるという驚きを味わわせずに済みます。


7.9 ポジション所有権レジストリと再起動

3枚のカード:通常動作(ノートへの記録、再起動、管理が復帰)、孤児ポジションの発生源(オフライン中に約定した pending / VPS / netting)、EA 1.26 での検出と修復(工場出荷では Alert → 証拠付きの Adopt)
図 7.2 — 3枚のカード:通常動作(ノートへの記録、再起動、管理が復帰)、孤児ポジションの発生源(オフライン中に約定した pending / VPS / netting)、

「own only」モード(Global_MonitorOwnOnly、第5.5章 — 工場出荷時の挙動)で動作するロボットは、自分のポジションについて専用のノートを付けています。ポジションを建てるたびに、そのポジション番号をターミナルのディスク上の小さなファイルに書き込みます。プラットフォームの再起動、F7による再読み込み、あるいは再コンパイルの後、EAはそのノートを読み戻し、自分自身が建てたポジションだけを正確に管理します — 同じ銘柄上の兄弟インスタンスには決して手を出しません。ノートは 口座 + 銘柄 + Magic Number ベース + チャート の組み合わせごとに別々に作られます。

これが実務上どういう意味を持つか:

  • 通常のプラットフォーム再起動は安全です。 ノートは生き残り、ポジションは完全な管理下(BE/TS、仮想(ステルス)SL/TP、バスケット、Close All)に戻ります。
  • pending order は再起動を生き残りません — これは意図的な設計です。 監視対象の pending リストはロボットのメモリ内にしか存在しません。再起動のたびにEAは、ブローカー側に残った自分の pending を**掃除(sweep)**します。古く、もはや監視されていないセットアップが数日後に発火しないようにするためです。EA 1.26 以降はそれについて通知が届きます(以前は無言で行われていました — だからこそ「再起動後にロボットが私の注文を切った」という報告が出ていたのです)。
  • 孤児(orphan)ポジション。 ロボットの Magic Number を持つポジションがノートに載っていない場合、「own only」モードのロボットはそれを管理しません:ブレイクイーブンもトレーリングもなし、仮想(ステルス)SL/TPもなし(Virtual SL が有効な場合、そのポジションは**裸(naked)**です — ブローカー側にもストップは存在しません!)、BEa バスケットおよび口座ガーディアンの対象外で、Close All でも閉じられません。孤児が生まれる原因:
    • プラットフォームが停止している間に約定した pending order(例:週末明けのギャップ) — ノートへの記録が行われる機会がなかったため。
    • 別の環境で建てられたポジション — 内蔵の MetaTrader VPS はロボットのファイルを移行しません(ファイルフォルダはご自身のコンピュータに残ります)ので、VPSとローカルマシンは別々のノートを付けます。
    • まれなケース:netting 口座やブローカーの確認応答が遅い場合に、ノートへ誤った番号が記録された。

EA 1.26 の新機能 — 検出と修復:

Input (F7)工場出荷動作
Global_OwnOnly_ReconcileAlert起動時および毎分のスキャン:すべての孤児がジャーナルに記録されます。個別のポップアップは所有権の証拠(ownership proof)を持つ孤児だけに用いられます(本当にあなたの失われたポジションである場合 — まれで、かつ重大です)。残りのケース — 多くはロボットの範囲の magic を使用している他社製EA — はセッションごとに1つのまとめポップアップにまとめられるので、通知が画面を埋め尽くすことはありません。Alert = 情報のみ、取引は変わりません。 Adopt モードはさらに、孤児を管理下に取り戻します — 厳密に所有権の証拠がある場合のみ(記録された注文チケット、または同じ MN ベースを主張する2つ目の稼働インスタンスが存在しない状況での Okurra_btn トレードコメント)。曖昧な場合は決して推測されません — 代わりに説明付きのアラートが表示されます。
Global_OwnReg_TrackPendingOrdersoff発注した pending order のチケット番号もノートに記録します。これにより「不在中に約定した」pending から生まれたポジションが確固たる所有権の証拠を持つことになり、Adopt が確実に取り戻せます。
Global_StalePendings_OwnListOnlyoff再起動後の掃除がノートに存在する pending のみをキャンセルします(MN の範囲が重なっている場合に兄弟インスタンスを保護します)。上記のチケット記録が必要です。
Global_OwnReg_ConfirmTicketOnDealoffnetting 口座/約定確認が遅い場合向け:ノートの記録がブローカーの取引確認から確定されます(誤った記録を修復し、仮想(ステルス)SL/TPも張り替えます)。
Global_AlertOwnRegistryonレジストリのイベントに対するポップアップ(および有効なら push):孤児を検出、再起動後に pending を掃除、MagicBase ≤ 0 の警告。工場出荷で有効になっている唯一のアラートで、純粋に情報提供用です。

VPS と2台目のターミナル — 1つの鉄則。 1つの口座では、ある Magic Number ベースに対して同時に稼働するロボットは1つであるべきです。内蔵の MetaTrader VPS はこれを自ら守ります(VPSへ「移動」させたチャートはローカルでは動作を停止します)が、覚えておいてください:ロボットのファイルは移行しません — 移行のたびにVPS側のノートはゼロから始まり(初回起動時に MN によってポジションを自動 adopt します)、ローカルのノートはVPSで建てられたポジションを一切知りません。VPSから戻った後には孤児のアラートが表示されます — それはまさにこのメカニズムが働いているのです。reconcile を Adopt に切り替えれば(あるいは一度限りの Global_OwnOnly_AdoptExisting を使えば)、ロボットがそれらを取り戻します。

Magic Number 0。 Global_MagicBase=0 に設定すると、最初のボタンは MN = 0 で取引します — これは手動で建てられたポジションが持つ値と同じです(レポートでは magic 列が空欄になります)。ロボットと人間が区別できなくなります。1.26 以降、EAはこれについて大きく警告します。ベースは ≥ 1 に保ち、インスタンス間は少なくとも 5 の間隔を空けてください。


これで設計に関する部分(第4章〜第7章)を締めくくります。次の章では実行へ進みます — まずは EA コントロールパネルの全体構造から:設定を読み込んでロボットを起動した後にチャート上で何が見えるのか、そして稼働中にそれを戦術的にどう操作するのか、です。