FC_Copy_v2 利用マニュアル

ローカルコピートレード(同一PC・ファイルロックなし)

MT4→MT4 / MT4→MT5 / MT5→MT4 / MT5→MT5

ハブ: http://127.0.0.1:<HubPort> 推奨ポート 18765

概要

FC_Copy_v2 は、旧来の共有テキスト(OLF / TLF / CLF)ではなく、同一PC上の FC_CopyHub が注文イベントを中継するローカルコピーです(製品バージョン2)。

使える組み合わせ

MT4 → MT4送信MT4 / 受信MT4
MT4 → MT5送信MT4 / 受信MT5
MT5 → MT4送信MT5 / 受信MT4
MT5 → MT5送信MT5 / 受信MT5

同じ Channel と HubPort なら、どの組み合わせでもコピーできます。

前提: 同一 Windows PC 上の複数ターミナル向けです。別PC間のコピーには向きません。
MT5 受信側は ヘッジ口座を推奨します。

同梱物

ファイル内容
hub/FC_CopyHub.exeローカルハブ(必須・Python不要)
hub/FC_CopyHub.batハブ起動(ポート引数対応)
mt4/*.ex4MT4 送受信(Experts へコピー)
mt5/*.ex5MT5 送受信(Experts へコピー)
setup/Install.batCommon\Files\FC_Copy へ配置
MANUAL_JA.html本マニュアル

エンドユーザーへの配布に fc_copy_hub.py は不要です。

導入手順(最短)

  1. MT4 または MT5 を一度起動(Common フォルダ作成のため)
  2. setup\Install.bat をダブルクリック
    → %AppData%\MetaQuotes\Terminal\Common\Files\FC_Copy\ にハブを配置
  3. 同梱の mt4\*.ex4 / mt5\*.ex5 を各ターミナルの Experts フォルダへコピーし、チャートへセット
  4. ツール → オプション → エキスパートアドバイザ
    WebRequest で許可する URL に追加:
    http://127.0.0.1:18765
    HubPort を変えた場合は、そのポートに合わせる
  5. Sender と Receiver で 同じ Channel・同じ HubPort を設定

Install.bat を実行すると、こんな画面が出ます。
黒いコマンド画面に Next steps が出て、最後に JSON が返ればOKです。

コマンド プロンプト — FC_Copy Setup
Next steps:
 1. Copy mt4\*.ex4 to MT4 Experts / mt5\*.ex5 to MT5 Experts, then attach.
 2. MT4/MT5: Tools - Options - Expert Advisors
    Allow WebRequest for: http://127.0.0.1:<HubPort>
    Recommended: 18765   Allowed range: 1024-65535
 3. Set the same Channel and HubPort on Sender and Receiver.
    4. Symbol dictionary (shared, not Channel): FC_DIC_{DicName}.txt
    Default: Common\Files\FC_DIC_default.txt
    Sender: Upd List (init + button). Receiver: append-only / Show Dic / File Load
 5. Open MANUAL_JA.html in a browser for the full guide

Starting hub settings window once (port 18765)...
{"ok":true,"version":"1.1.0"}
最後に {"ok":true,"version":"1.1.0"} が出ればハブ起動は成功です。
ハブは タスクバー常駐の設定ウィンドウです。ポート・保持時間をそこから変更し、終了で完全停止します。
EA はハブを自動起動しません。つながらないときはチャート左下に「エラー: ハブとの接続ができません」が出ます。辞書が空のときなども同じラベルです。複数ある場合は優先度の高いものを表示し、解消されたら次を出します。
よくある原因(EA側では切り分け不可。見た目は同じエラー):
  • FC_CopyHub.exe が起動していない/設定窓を終了した
  • 送受信の HubPort とハブのポートが一致していない
  • HubPort が範囲外(1024~65535)→ 左下に「エラー: HubPort 範囲外」となりコピーしない(直すまで待機)
  • 古いハブプロセスが残っている/二重起動で想定と違う状態(タスクバーの設定窓を確認)
確認: ブラウザで http://127.0.0.1:<HubPort>/ → 監視画面(未処理の待ち一覧)。生存だけ見るなら /health → {"ok":true,...}。あとは EA の HubPort をそれに合わせる。

送信側(FC_SignalSender)

  1. コピー元口座のチャートに Sender をセット
  2. Channel(例: 1111)を決める
  3. CopyMode で対象を選ぶ(すべて/指定マジックのみ/裁量除外/裁量のみ)
  4. 複数 EA だけ送るなら「指定マジックのみ」+ MagicFilter=111,222,333(半角カンマ区切り)
  5. BufferMinutes で未処理の保持時間を設定(推奨 5分)
  6. 気配リストは起動時に1回送る。追加したら右下 Upd List(左下に青字「気配値リスト N」。同じなら「気配値リスト N(変更なし)」)

起動時点ですでに建っているポジションは再送しません。起動後の新規・決済から同期します。

受信側(FC_SignalReceiver)

  1. コピー先口座のチャートに Receiver をセット
  2. 送信側と同じ Channel / HubPort
  3. 必要なら CopyMode で受け取る対象を絞る
  4. LotMult でロット倍率を調整
  5. 銘柄名が違う場合は銘柄マップ(後述)を用意
DLL 許可が必要な場合があります(ハブ自動起動用 shell32)。また WebRequest 許可は必須です。

主なパラメータ

共通

名前説明
Channelペアリングコード(送受信で一致)
HubPortハブポート。範囲 1024~65535 / 推奨 18765。範囲外はエラー表示し稼働しない(18765 への自動読替はしない)
AutoStartHub未起動ならハブを起動(30秒に1回まで)

Sender

名前説明
BufferMinutesコピー完了までの保持時間(推奨 5分)
CopyModeすべて(裁量含む)/指定マジックのみ/裁量除外/裁量のみ
MagicFilter指定マジックのみのとき。半角カンマ区切りで複数可
例: 111,222,333
SendExistingON=起動時点の建玉も送信。OFF(既定)=起動後の新規・決済のみ

Receiver

名前説明
CopyMode / MagicFilter送信側マジックで受け取る対象。MagicFilter が空で「指定のみ」のときは MagicNo と同じ値で判定
MagicNo受信注文に付けるマジック(上記フォールバックにも使用)
LotMultロット倍率(1.0 = 100%)。倍率後がブローカー最小ロット未満ならコピーしない(最小への切り上げはしない)
PullIntervalSecハブ取得間隔(秒)
MaxRetryCount失敗再試行上限(0 = 期限まで)
DropOnExpire再試行上限到達時に破棄する
UseSymbolMapFC_DIC_{DicName}.txt を使用
DicName辞書名(既定 default。Channelではない)
指定マジックのみ … 受信で MagicFilter に送信側マジックを書く(例: 123)。空のままなら MagicNo と同じ値で判定。
送信で既にある建玉を試すときは SendExisting=ON(既定は起動後の新規のみ)。

辞書(銘柄マップ)

Channel(ペアリング)とは別です。辞書名 DicName(既定 default)で共有します。

ファイル: Common\Files\FC_DIC_{DicName}.txt
例: FC_DIC_default.txt

EURUSD=EURUSDm
EURUSD=EURUSD.
EURUSD=EURUSD+|EURUSDpro
USDJPY=USDJPYm

左 = 送信側銘柄、右 = 受信側銘柄。| でも複数候補を並べられます。

FAQ(問題 → 原因)

よくある「動かない」は、だいたい下のどれかです。チャート左下のエラーと Experts(エキスパート)タブも合わせて見てください。

問題原因(よくあるもの)
チャートに「ハブとの接続ができません」 ハブ未起動/終了したまま / EA とハブの HubPort が違う / 範囲外ポートで EA が止まっている など。
EA 側では「未起動」と「ポート違い」は同じ見え方になります。
「HubPort 範囲外 (1024-65535)」だけ出て何も動かない パラメータの HubPort が 1024~65535 以外。18765 などに直して再セット(自動で 18765 にはしません)。
ハブを二重起動した 仕様で 2 つ目はすぐ終了。先に開いている窓に赤文字「すでに起動中です…」。Channel を分けて複数コピーするときもハブは 1 個でよい。
コピーされない(新規建玉) Channel 不一致 / ハブ未接続 / 辞書に送信銘柄が無い(同名通過も不可) /  「指定マジックのみ」でフィルタと送信マジックが合っていない / 送信側も「指定のみ」でフィルタ空のまま など。
起動前からあった建玉がコピーされない 仕様(既定)。起動後の新規・決済のみ。既存も送りたいときは送信の SendExisting=ON。
「指定マジックのみ」なのに来ない/全部来る 指定マジック(MagicFilter)と受信に付けるマジック(MagicNo)は別物。
フィルタ空+指定のみのときは MagicNo と同じ値で送信側マジックを判定。
複数 EA だけ通すなら MagicFilter=111,222,333(半角カンマ)。
受信の建玉マジックが全部同じ(例: 123) 正常。受信側 MagicNo は「こっちの口座に付ける印」。送信側のマジックそのものではない。
辞書に変な行がある/行がくっついている 昔の追記で末尾改行が無く、次の行が同じ行にくっついた(例: USDCHFm=USDCHFmGBPUSDm=...)。
手で直して File Load。新しい受信 EA は追記前に改行を入れる。
辞書がおかしいのにコピーされた 旧版は先頭6文字などで自動推測していた。現在は辞書の完全一致か送受信で同名だけ。
違う名前なら必ず 送信名=受信名(例: USDJPYm=USDJPY)を書いて File Load。
Experts に no symbol map for send=... 辞書にその送信銘柄が無い(または右辺が空/使えない)。行を追加して File Load。
Experts に skip open ... magic= 受信の CopyMode フィルタで弾いた。送信建玉のマジックと MagicFilter/MagicNo を照合。
青字「気配値リスト N」は何? 送信側がハブに送った気配の銘柄数。累計カウンタではない。同じ内容で Upd List すると (変更なし) が付く。
Channel と DicName の違いは? Channel=送受信のペア(どのコピー線か)。DicName=辞書ファイル名(銘柄読み替えの共有名)。別物。
複数口座を同時にコピーしたい。ハブは何個? ハブは 1 個。ペアごとに Channel を分ける(例: 1111 と 2222)。ポートは同じでよい。
exe を上書き・削除できない 古い FC_CopyHub が残っている。設定窓の「終了」または setup\StopHub.bat。
ポートを変えたらつながらない ハブ設定・Sender・Receiver・(必要なら)WebRequest 許可 URL のポートをすべて同じにする。

トラブルシューティング(確認手順)

症状確認
ハブ生きてる? ブラウザで http://127.0.0.1:<HubPort>/(監視)または /health
EA のバージョン Experts に FC_Signal... v1.xx の Print。古い Experts コピーを使っていないか
辞書 Common\Files\FC_DIC_{DicName}.txt → 直したら受信で File Load
ログ チャート左下ラベル + ターミナルの Experts(ジャーナルではない)
動作確認: http://127.0.0.1:18765/health → {"ok":true,...} ならハブは正常です。詳細は FAQ を参照。