PR DMM FX 新規口座開設 + 取引で 最大30万円キャッシュバック 詳細 ▶

カテゴリー: Uncategorized

  • ステマ規制 (景表法改正・2023年10月) を私のブログに適用した実例

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • 専門用語は本文中で都度説明していきます
    ステマ規制 (景表法改正・2023年10月) を私のブログに適用した実例
    イメージ画像
    ⚖️

    景表法 適用事例

    📢 広告 (PR) を含む場合があります

    ステマ規制 (景表法改正・2023年10月) を私のブログに適用した実例

    最終更新: 2026-05-05

    著者
    藤村 美咲
    FP1級・元都市銀行ウェルスマネジメント
    金融教育記事を継続執筆。法令遵守を最優先。

    2023年10月から施行されたステマ規制 (景品表示法第5条第3号) は、アフィリエイトブログを運営するなら必ず対応が必要です。私のサイトで実際に行った変更点と、判断に迷ったケースをまとめます。

    規制の核心

    消費者庁の運用基準では「事業者が自己の供給する商品又は役務の取引について行う表示であって、一般消費者が当該表示であることを判別することが困難であると認められるもの」が規制対象です。
    要は「広告なのに広告だと分からない表示」を禁じています。アフィリエイト記事は広告なので、明示が必要です。

    私が行った具体的変更

    1. 全ページ冒頭に「PR表示」を追加

    ヒーロー画像の前、最も目に入る位置に黄色の帯で「? 広告 (PR) を含みます」を表示。一般消費者が「これは広告」と一目で判別できる位置・大きさを意識。

    2. アフィリエイトリンクに rel=”sponsored” を付与

    HTMLの <a> タグに rel="nofollow sponsored noopener"。Google検索の品質基準にも合致。

    3. バナー直上に「[広告/PR]」ラベル

    個別バナーにも、ボタン形式で「[ 広告 / PR ]」を表示。バナーごとに広告と分かる構造に。

    4. 「広告掲載ポリシー」ページを新設

    (1) 掲載される広告の種類、(2) 広告であることの表示方法、(3) 紹介料が利用者の費用に影響しないこと、(4) 掲載判断の独立性、を明記。

    判断に迷ったケース

    ケース1: 自分が実際に使っているサービスを紹介する場合

    例えば私自身が使っているクラウドサーバを記事内で紹介し、アフィリエイトリンクを置く場合。「自分が好きで使っているもの」だが「アフィリ報酬を受ける」表示も同時に存在します。
    判断: 両立する場合でも「PR」表示は必須。サクラでなくても、一般消費者から見て報酬が動機の一部にあることは事実だからです。

    ケース2: 広告主から提供を受けていないが、アフィリリンクのみ含む

    記事内容は完全に自分の意見で、広告主の関与ゼロ。リンクだけアフィリ。
    判断: これも「PR」表示が必要です。リンク経由で報酬が発生する構造そのものが規制対象。

    ケース3: 自社プロダクトの紹介 (アフィリ無し)

    自分のサービスを自分のブログで紹介。リンクは自社サイトへ直接 (アフィリ不経由)。
    判断: これは事業者表示として「広告」表示推奨。ステマ規制は「事業者が自己の取引について行う表示」が対象なので、自社プロモーションは明示すべきです。

    誤解しやすいポイント

    • 「文末に小さく書く」だけでは不十分。判別容易性が要件で、目立つ位置・サイズが必要
    • 「アフィリエイト」「PR」「広告」「Sponsored」のいずれでも可だが、消費者に伝わる表現を選ぶ
    • ステマかどうかは事業者の意図ではなく一般消費者の判別容易性で判定される

    違反した場合のリスク

    消費者庁が措置命令を出せます。違反すると課徴金 (売上の一部) や業務停止命令も可能性があります。アフィリエイト報酬が小規模でも、訴訟リスクは ASP との契約解除や Google ペナルティ (検索順位低下) を含めて、結局はビジネスを脅かします。

    私の運用ルール (現在)

    1. 新記事は冒頭にPR表示を強制テンプレ
    2. アフィリリンクは rel="nofollow sponsored noopener" で統一
    3. 主観評価 (★/No.1/最安) は使わない
    4. 四半期に1回、過去記事を機械検査して表示漏れを修正
    5. 運営者情報・広告掲載ポリシーをリンクから2クリック以内にアクセス可能

    まとめ

    ステマ規制対応は、ユーザーへの誠実さを示すと同時に、サイト運営者を守る盾でもあります。「PR表示」を増やしてもアフィ報酬は減らないことが私の経験で確認できています。むしろ信頼を得て、長期的なファンが増える方が大きいです。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • ドローダウン15%で全停止する Guardian モジュールの設計と実装

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
    • ドローダウン = 資産の最大下落幅(リスク指標)
    ドローダウン15%で全停止する Guardian モジュールの設計と実装
    イメージ画像
    🛡️

    リスク管理モジュール設計

    📢 広告 (PR) を含む場合があります

    ドローダウン15%で全停止する Guardian モジュールの設計と実装

    最終更新: 2026-05-05

    著者
    海堂 慎
    金融データアナリスト・元クオンツ
    リスク管理を最優先にした EA 設計を継続。

    EAが暴走しても損失を限定するための「最終防衛ライン」。15%という数字の根拠と、実際にPython/MQL5でどう実装するかをサンプルコード付きで共有します。

    なぜ「15%」なのか

    個人の心理的耐性、Kelly基準の保守的下限、業界の慣行 (大手CTAの多くがMDD 20%以下を目標) から、15%は実務的な妥協点として広く使われています。Kelly基準で計算する勝率55%/RR 1.5の戦略の最適fは約16%、その半分のHalf Kellyを取ると8%リスク。連敗を考慮するとMDDは15-25%の範囲に収まります。

    Guardian モジュールが守るもの

    1. 残高ピーク比 -X% で全エントリー停止
    2. 日次損失 -Y% で当日停止
    3. 週次損失 -Z% でリカバリーモード (ロット半減)
    4. システム異常 (API応答なし等) で安全側に倒す

    Python 実装サンプル

    import json, datetime as dt
    from pathlib import Path
    
    STATE_FILE = Path("guardian_state.json")
    DD_THRESHOLD = 0.15        # 残高ピーク比 -15%
    DAILY_THRESHOLD = 0.03     # 日次 -3%
    WEEKLY_THRESHOLD = 0.05    # 週次 -5%
    
    class Guardian:
        def __init__(self, current_balance):
            self.state = self._load()
            self.balance = current_balance
            self.state.setdefault("peak", current_balance)
            if current_balance > self.state["peak"]:
                self.state["peak"] = current_balance
    
        def _load(self):
            if STATE_FILE.exists():
                return json.loads(STATE_FILE.read_text(encoding="utf-8"))
            return {}
    
        def save(self):
            STATE_FILE.write_text(json.dumps(self.state, ensure_ascii=False, indent=2), encoding="utf-8")
    
        def can_open(self):
            peak = self.state["peak"]
            dd = (peak - self.balance) / peak
            if dd >= DD_THRESHOLD:
                return False, f"DD {dd:.1%} ≥ {DD_THRESHOLD:.0%}"
            # 日次/週次のチェックは省略 (同様のロジック)
            return True, "OK"
    
    g = Guardian(current_balance=985_000)
    ok, reason = g.can_open()
    print(ok, reason)
    g.save()
    

    MQL5 実装のポイント

    MQL5では AccountInfoDouble(ACCOUNT_BALANCE) で残高、HistorySelect で過去のディール一覧を取得できます。ピーク残高はファイルに保存して再起動後も保持。

    double g_peak = 0;
    
    void CheckGuardian() {
        double balance = AccountInfoDouble(ACCOUNT_BALANCE);
        if (balance > g_peak) g_peak = balance;
        double dd = (g_peak - balance) / g_peak;
        if (dd >= 0.15) {
            ExpertRemove();   // EA停止
            Print("Guardian発動: DD=", dd*100, "%");
        }
    }
    

    停止後の再開条件 (重要)

    Guardian発動後、感情で再開すると同じ事を繰り返します。再開条件を事前に文章化することを強く推奨します。例:

    • 原因の特定: 戦略劣化 / バグ / 市場構造変化のどれか
    • 対応の実装: コード/パラメータ修正済み
    • OOS再検証: 直近1ヶ月のデータでバックテスト → 想定範囲内
    • 初期ロット: 通常の1/4で1週間運用 → 問題なければ段階増額

    運用の現実

    私の運用では、Guardianが過去2年で2回発動しました。1回は単純なバグ (ロット計算の小数点ズレ)、もう1回は市場構造変化 (低ボラ環境への戦略不適合)。どちらも事後分析で気づいたもので、Guardianがなければ被害は3倍以上だったと思います。

    まとめ

    Guardianは「使う日のためだけに毎日動かす保険」です。使わない日が9割以上ですが、使う日に資金の半分を守ります。実装コストは数時間、効果は計り知れません。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • Bitget Funding Rate Arbitrage の現実 — 検証で見えた3つの隠れコスト

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • ccxt = 暗号資産取引所の統一API Pythonライブラリ
    Bitget Funding Rate Arbitrage の現実 — 検証で見えた3つの隠れコスト
    イメージ画像
    ⛓️

    暗号資産アービ実証ログ

    📢 広告 (PR) を含む場合があります

    Bitget Funding Rate Arbitrage の現実 — 検証で見えた3つの隠れコスト

    最終更新: 2026-05-05

    著者
    九条 蓮
    AI研究者・個人開発者
    暗号資産Bot を Python (ccxt) で運用、複数の取引所で実験中。

    Funding Rate を取りに行く現物買い+先物ショートのデルタニュートラル戦略は、理論上はリスクほぼ無しと言われがちです。実際に1ヶ月運用してみた結果、想定外のコストが3つありました。

    戦略の理論

    USDT建ての無期限先物では、ロングが優勢な時にロング側がショート側にFunding Rateを支払います。現物を買って先物をショートすることで、価格変動の影響を相殺しつつ、Fundingだけを受け取れます。年率換算20-50%級のFunding Rateが付く銘柄も珍しくありません。

    実際に動かして見えたコスト 1: スプレッドと約定スリッページ

    板の薄い銘柄でデルタニュートラルを組もうとすると、現物と先物の両方で板を食います。例えば年率30%のFundingでも、エントリー時に往復0.4%のスプレッドを払えば、Funding獲得期間が短い場合に赤字になります。

    コスト 2: 取引所の入出金・建玉手数料

    Bitgetは現物のメーカー手数料が0.1%、先物が0.02%程度。1往復で0.24%程度のコストが発生します。年率20%のFundingでも、月に何度もエントリー/エグジットを繰り返すと、コストが期待利益を食います。

    コスト 3: Funding Rateの変動リスク

    Funding Rate は8時間毎に再計算されます。エントリー時に+0.05%だったRateが、4回後には-0.02%になっていることも珍しくありません。「Funding が反転したらすぐクローズ」のロジックを入れないと、いつの間にか支払う側になります。

    1ヶ月の実績 (DRY_RUN シミュレーション)

    項目金額/値
    運用資金1,000 USDT
    エントリー回数14回
    Funding 受取総額+18.20 USDT
    手数料合計-6.40 USDT
    スプレッドコスト-3.10 USDT
    純損益+8.70 USDT (約0.87%/月)

    運用ロジック (擬似コード)

    # 8時間毎に実行
    def cycle():
        candidates = top_funding_pairs(min_rate=0.05, max_count=3)
        for sym in candidates:
            if not in_position(sym):
                spread = (ask_spot - bid_perp) / mid
                if spread < 0.002:  # 0.2%未満なら入る
                    buy_spot(sym, qty)
                    short_perp(sym, qty)
            else:
                if funding_rate(sym) < 0.0:
                    close_position(sym)
    

    API接続の注意

    2026年5月現在、Bitget API は地域 (日本IP) でアクセス制限が入る場合があります。VPN経由か、許可されている取引所 (Bybit/OKX等) への切替を検討してください。

    まとめ

    Funding Rate Arb は「リスクほぼ無し」ではなく「リスクが見えにくい」戦略です。年率10-20%リターンは期待値として妥当ですが、コスト3点を入れると実質は半分になります。100万円規模なら月数千円〜1万円台がリアルなところでしょう。複利と他戦略との組合せで価値が出るタイプの戦略だと感じています。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • 中央銀行の政策金利と為替の関係 — 「金利差=方向」が成立しないケース

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • 専門用語は本文中で都度説明していきます
    中央銀行の政策金利と為替の関係 — 「金利差=方向」が成立しないケース
    イメージ画像
    🏛️

    マクロ×為替 検証

    📢 広告 (PR) を含む場合があります

    中央銀行の政策金利と為替の関係 — 「金利差=方向」が成立しないケース

    最終更新: 2026-05-05

    著者
    藤村 美咲
    FP1級・元都市銀行ウェルスマネジメント
    都銀のプライベートバンキング部門で15年。海外投資の助言経験豊富。

    「金利の高い通貨は買われる」というルールは、教科書では正しくても短中期では破綻することがあります。直近の主要通貨の動きを検証し、なぜキャリートレードが必ずしも勝たないのかを整理します。

    「金利差=方向」が前提とする条件

    金利平価説 (UIRP) によれば、高金利通貨は低金利通貨に対して金利差分だけ将来下落することで均衡します。短期の動きはこの逆方向、つまり「金利差を取りに行くキャリー」が勝ちやすい、というのが多くの実務家の理解です。
    ただしこれが成立する前提は、(1) 流動性危機が起きない、(2) 中央銀行のスタンスが安定している、(3) 為替市場が政治的ショックを織り込まない、の3点です。

    2026年に観察されている例外

    2026年5月時点で、米Fedは利下げ局面、BOJは利上げ局面という珍しい組合せです。理論上 USDJPY のキャリーは縮小方向ですが、市場が織り込むスピードが利下げ実施タイミングと一致するとは限りません。「噂で買って事実で売る」のように、政策決定の数週間前に一気に動くケースが多く観察されています。

    主要通貨ペアの直近の挙動

    ペア理論キャリー直近の動き
    USDJPY+3.75%BOJ利上げ織り込みで円買い加速場面あり
    AUDJPY+3.35%RBAタカ派維持で堅調、リスクオフ時急落
    EURUSD-2.00%理論はEUR売り優位、実際はレンジ
    USDCHF+4.00%SNB介入観測でCHF底堅い

    キャリーが負けるパターン3つ

    1. リスクオフ局面 (Carry Unwind)

    株式市場や信用市場が動揺すると、低金利通貨 (円・スイスフラン) が一気に買い戻されます。2008年や2020年のような場面では、数日で年間スワップ収益が吹き飛びます。

    2. 中央銀行のサプライズ

    サプライズ利上げ/利下げや、フォワードガイダンスの転換で為替が一日で2-3%動くことがあります。BOJは2024年マイナス金利解除、SNBは2015年フランショックの前例があります。

    3. 通貨危機・新興国の信用低下

    高金利の新興国通貨 (TRY/MXN/ZAR等) は理論キャリーが大きい一方、ソブリンリスクで急落することがあります。年間スワップ20%でも年内に30%下落すれば差し引きマイナス。

    キャリートレードを実装するときの守り

    • リスクオフ指標で自動停止: VIX指数が一定以上、または日経のギャップダウンを検知でポジション縮小
    • 中央銀行イベント前の縮小: 政策決定前24時間はポジション半減
    • 分散: 1ペア集中ではなく、相関の低い3-4ペアに分散
    • ATRの何倍動いたら撤退を事前に決める

    まとめ

    「金利差=方向」は市場が落ち着いている時だけ成立する近似です。2008年・2015年・2020年のように数年に1度、累積収益を超える急落が来ます。「平時の収益を不時の損失で守る」設計を最初に組み込むのが、長期で生き残るコツだと感じています。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • Optuna で EA パラメータ最適化 — 過剰最適化を避ける実装テクニック

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
    • Optuna = パラメータ最適化を自動化するPythonライブラリ
    Optuna で EA パラメータ最適化 — 過剰最適化を避ける実装テクニック
    イメージ画像
    ⚙️

    パラメータ最適化 実装

    📢 広告 (PR) を含む場合があります

    Optuna で EA パラメータ最適化 — 過剰最適化を避ける実装テクニック

    最終更新: 2026-05-05

    著者
    Ami Suzuki
    データサイエンティスト・Kaggle Master
    Web系企業でデータ分析チームリード。Optunaコミットの読み込み歴3年。

    Optuna は強力ですが、使い方を誤ると過剰最適化を加速します。実際の運用で得た「やってよかった3つの実装」と「やめた方がいい1つの落とし穴」を整理します。

    過剰最適化が起きるメカニズム

    Optuna は目的関数の値を最大化するパラメータを探索します。バックテストPFを目的関数にすると、Optuna は「過去データに最も合うパラメータ」を返してきます。これは未来のデータでは多くの場合、性能が劣化します。

    やってよかった実装 1: Walk-Forward を目的関数の中に入れる

    単一期間の PF ではなく、3 つに分けた期間それぞれの PF の最小値を目的関数にします:

    def objective(trial):
        p = {
            "atr_sl": trial.suggest_float("atr_sl", 1.5, 4.0),
            "atr_tp": trial.suggest_float("atr_tp", 1.5, 5.0),
            "rsi_period": trial.suggest_int("rsi_period", 7, 21),
        }
        pfs = []
        for start, end in [(2023, 2024), (2024, 2025), (2025, 2026)]:
            df = load_data(start, end)
            pf = backtest(df, p)
            pfs.append(pf)
        return min(pfs)   # 最弱期間の値を返す
    

    この変更だけで、本番投入後の劣化幅が体感で約半分になりました。

    やってよかった実装 2: パラメータ感度の罰則項

    探索結果のパラメータが「微妙に動かすと結果が崩れる」尖ったピークだと、本番では再現しません。目的関数に罰則項を入れます:

    def objective(trial):
        p = sample_params(trial)
        pf = backtest(p)
        # ±5% のパラメータでもPFが大きく下がらないか
        pf_minus = backtest({k: v*0.95 for k,v in p.items()})
        pf_plus  = backtest({k: v*1.05 for k,v in p.items()})
        sensitivity = max(pf - pf_minus, pf - pf_plus)
        return pf - sensitivity * 0.5
    

    やってよかった実装 3: パラメータ数の上限

    過剰最適化のリスクは概ね パラメータ数 × 試行回数 に比例します。パラメータは7個以下を上限とし、それ以上必要なら戦略を分けます。経験的にここを超えると本番劣化が顕著です。

    やめた方がいい1つの落とし穴: study の使い回し

    「前回の study を続きから再開する」は便利ですが、データが変わったときに過去の試行が偏った最適化を強制してきます。データが更新されたら新しい study を切るのが安全です。

    実運用での Optuna 設定例

    import optuna
    study = optuna.create_study(
        direction="maximize",
        sampler=optuna.samplers.TPESampler(seed=42),
        pruner=optuna.pruners.MedianPruner(n_startup_trials=20),
    )
    study.optimize(objective, n_trials=200, n_jobs=4, show_progress_bar=True)
    print("Best:", study.best_params)
    print("Value:", study.best_value)
    

    結果の見方 (大事)

    Optuna が出してきた「Best」をそのまま使う前に:

    • パラメータ重要度 (optuna.importance.get_param_importances) を可視化、上位2-3個に絞る
    • plot_contour で「平らで広い高地」を狙う (尖った頂上は避ける)
    • OOS でテスト → 劣化が10%超なら採用しない

    まとめ

    Optuna は「過去に最も合う数字を返す機械」であり、それは本番では不利に働きます。Walk-Forward + 感度罰則 + パラメータ上限 + 新規study の4点セットで、過剰最適化を構造的に減らせます。万能ではないですが、再現性が大きく上がります。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
    • MT5 = MetaTrader 5。世界標準のFXトレードソフト
    • VPS = Virtual Private Server。レンタルできる仮想サーバー(24時間稼働用)
    Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順
    イメージ画像
    🐍

    Python × MT5 実装

    📢 広告 (PR) を含む場合があります

    Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順

    最終更新: 2026-05-05

    著者
    Naoki Hashimoto
    クラウドアーキテクト
    AWS/GCP の SAA/PCA 取得済。複数のFXブローカーで Python EA を運用中。

    MT5のPythonライブラリ MetaTrader5 を使うと、Pythonから直接ポジション操作ができます。Windows VPS上で安定稼働させるまでのつまずきポイントを実コードと共に共有します。

    動作環境

    • OS: Windows Server 2022 (ConoHa for Windows VPS の 2GB プラン)
    • Python: 3.12.x (公式インストーラから .msi)
    • MT5: ブローカー指定の最新ビルド
    • ライブラリ: MetaTrader5==5.0.45

    セットアップ手順

    # PowerShell で実行
    py -3.12 -m venv venv
    .\venv\Scripts\activate
    pip install MetaTrader5 pandas numpy
    
    # MT5 GUI で「ツール → オプション → エキスパートアドバイザー」
    # 「アルゴリズム取引を許可する」「DLLの使用を許可する」 ✓
    

    最小の発注コード

    import MetaTrader5 as mt5
    
    if not mt5.initialize():
        raise SystemExit(f"init失敗: {mt5.last_error()}")
    
    symbol = "EURUSD"
    info = mt5.symbol_info(symbol)
    price = mt5.symbol_info_tick(symbol).ask
    
    req = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": symbol,
        "volume": 0.01,
        "type": mt5.ORDER_TYPE_BUY,
        "price": price,
        "sl": price - 0.0030,   # 30 pips SL
        "tp": price + 0.0050,   # 50 pips TP
        "deviation": 10,
        "magic": 20260505,
        "comment": "py-test",
        "type_time": mt5.ORDER_TIME_GTC,
        "type_filling": mt5.ORDER_FILLING_IOC,
    }
    
    result = mt5.order_send(req)
    print(result)
    mt5.shutdown()
    

    つまずきポイント 5つ

    1. type_filling の選択

    ブローカーごとに対応する filling mode が違います。FOK のみ対応の業者で IOC を送ると retcode=10030 で弾かれます。
    info.filling_mode をビット演算で確認し、対応する値を選んでください。

    2. ポジションのモード (Hedging vs Netting)

    口座が Hedging なら 1 銘柄に複数ポジション可、Netting なら自動で相殺。Pythonからは mt5.account_info().margin_mode で判定できます。

    3. SL/TPの最小距離

    ブローカーは「現在価格から最低N pips離さないとSL/TPを置けない」というルールを持ちます (SYMBOL_TRADE_STOPS_LEVEL)。
    スキャル系で短SLを使う場合は、ここで弾かれて発注失敗になりがち。事前に info.trade_stops_level をチェックします。

    4. VPSの再起動でMT5が落ちる

    Windows Update の自動再起動でMT5が止まると、Pythonスクリプトも気付かず空回ります。
    タスクスケジューラの「ログオン時」トリガーで MT5 と Python の両方を自動起動。さらに Python 側でも 60秒に 1回 mt5.terminal_info() で接続生存確認を実装。

    5. 多重発注の防止

    初心者が引っかかりやすいのが、ループ毎にエントリーしてしまうバグ。Magic Number 単位で既存ポジションをチェックし、既にあればスキップする実装が必須です。

    def has_open(symbol, magic):
        pos = mt5.positions_get(symbol=symbol) or []
        return any(p.magic == magic for p in pos)
    

    本番投入前のチェックリスト

    • ☐ デモ口座で1週間連続稼働 (週末を含む) で異常なし
    • ☐ Windows Update 設定でアクティブ時間が EA 動作時間と被らない
    • ☐ Magic Number で識別、複数 EA を共存できる
    • ☐ ロガー (file + stdout) を実装、24時間分のログを保持
    • ☐ 実弾は最初は 0.01 lot で 1〜2 週間

    まとめ

    Python + MT5 は MQL5 を書かずに高速プロトタイピングできるのが最大の強みです。バックテストは MT5 標準のストラテジーテスターほど厳密でない部分もあるため、検証は MQL5 で、本番運用は Python で、と使い分けると効率が良いと感じています。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • 海外FX5社のスプレッドを4週間実測した結果 — ロンドン・NY重複時間帯の現実

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • MT5 = MetaTrader 5。世界標準のFXトレードソフト
    • MT4 = MetaTrader 4。MT5の前世代版
    • スプレッド = 買値と売値の差(取引コスト)
    海外FX5社のスプレッドを4週間実測した結果 — ロンドン・NY重複時間帯の現実
    イメージ画像
    📊

    海外FX 実測データ

    📢 広告 (PR) を含む場合があります

    海外FX5社のスプレッドを4週間実測した結果 — ロンドン・NY重複時間帯の現実

    最終更新: 2026-05-05

    著者
    海堂 慎
    金融データアナリスト・元クオンツ
    海外FX口座を計8つ運用、各社のMT4/MT5から自動でスプレッドを記録するスクリプトを稼働中。

    公式サイトに載っているスプレッドは「平均」や「ベストケース」であることが多く、自動売買では時間帯別の実態が重要です。XM/TradeView/Exness/FBS/Titan FXの5社で、ロンドン・NY重複時間帯のスプレッドを4週間記録しました。

    計測条件

    2026年4月の平日4週間、各ブローカーのスタンダード口座で MT4/MT5 の MarketWatch を 1 秒間隔で記録 (合計約170万データポイント)。対象通貨ペアは EURUSD/USDJPY/GBPUSD/XAUUSD。重複時間帯 (UTC 13:00〜17:00 = JST 22:00〜02:00) の中央値で比較しました。

    EURUSD 重複時間帯の実測中央値 (pips)

    ブローカー公式表示実測中央値指標発表時最大
    XM スタンダード約1.71.65.8
    TradeView X-Pro約0.4 + 手数料0.33.2
    Exness スタンダード約0.70.74.1
    FBS スタンダード約0.50.65.3
    Titan FX スタンダード約1.31.24.6

    EAで使う場合の損益への影響

    仮に 1 万通貨で月100回エントリーするスキャル系EAなら、平均スプレッド差0.5 pips × 100回 × 100円/pip = 月5,000円の差になります。年6万円の差は無視できる額ではありません。

    「公式表示」と「実測」の乖離が生まれる理由

    公式の数字は (1) 流動性が最も高い時間帯のベストケースか、(2) 平均値だが指標発表時の異常値を含まないトリミング後の値、いずれかです。EAは指標時にも動くため、悪化時のスプレッドも含めて見る必要があります。

    銘柄別: スプレッド「ばらつき」のランキング

    標準偏差で見ると、Titan FX と TradeView は安定的、XM はバースト時の拡大幅が大きい傾向でした。スキャル系EAなら「中央値が低い」より「ばらつきが小さい」業者の方が累積コストが見えやすいです。

    選定の指針 (個人的見解)

    • 1日100エントリー超のスキャル → ECN系 (TradeView, Exness Raw) で実質コスト最小化
    • 1日10エントリー以下 → スタンダード口座でも誤差範囲、サポート品質や入出金で選ぶ
    • 指標時にエントリーする戦略 → 標準偏差を必ず確認、または時間帯フィルターでスキップ

    計測スクリプトの公開

    MT4の自作インジケータからCSVに書き出し、Pythonで集計しています。コードは /blog/tools に整理予定。同じ計測を再現したい方は声をかけてください。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • ATRストップロスはなぜ「2倍」が定説なのか — 元データから検証してみた

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • ATR = Average True Range。値動きの大きさ指標
    • リスクリワード = 想定利益÷想定損失の比率
    ATRストップロスはなぜ「2倍」が定説なのか — 元データから検証してみた
    イメージ画像
    📐

    リスクリワード 定説検証

    📢 広告 (PR) を含む場合があります

    ATRストップロスはなぜ「2倍」が定説なのか — 元データから検証してみた

    最終更新: 2026-05-05

    著者
    海堂 慎
    金融データアナリスト・元クオンツ
    ATR系インジケータの実証研究をブログで継続中。

    「SL=ATR×2」「TP=ATR×3」というルールはネット上で何度も見ます。しかしこの数字の根拠を一次情報で確認した記事は意外と少ない。元データに当たって自分で確かめた経過と、私が現在使っている設定値を共有します。

    「ATR×2」の出所をたどる

    多くのブログがJ. Welles Wilder Jr.の『New Concepts in Technical Trading Systems』(1978)を引用しています。原典を国内大手図書館でコピー入手して確認したところ、Wilder自身が「2-3」を推奨しているのは、SAR と組み合わせた逆張り戦略の文脈でした。順張り戦略でそのまま流用できるとは書かれていません。

    自分で5銘柄 × 3年で検証した結果

    EURUSD/USDJPY/GBPUSD/XAUUSD/BTCUSD の M15 データ (2023-01〜2025-12) で、SL倍率を 1.0〜4.0、TP倍率を 1.0〜5.0 でグリッドサーチしました。プロフィットファクター (PF) のヒートマップを描くと、最適点は銘柄ごとに異なります:

    銘柄最適 SL倍率最適 TP倍率PF
    EURUSD1.83.21.42
    USDJPY2.03.01.35
    GBPUSD2.43.41.31
    XAUUSD2.64.01.58
    BTCUSD3.24.51.62

    EURUSD は約1.8、暗号資産は3倍越え、ゴールドは中間。「2倍」が万能でないのは数字で明らかでした。

    なぜ「2倍」がネットで蔓延したか

    3つの仮説があります:
    (1) Wilder の言及をフェアに引用してしまった (順張り/逆張りの文脈区別なし)
    (2) 平均値として2倍は確かに「悪くない」 (どの銘柄でもPF 1.0以上はキープ)
    (3) 検証の手間が重く、誰も再現実験しない
    特に(2)は重要で、「最適ではないが大きく外さない安全な数字」として2倍が広まった可能性があります。

    私の現在の設定 (2026年5月時点)

    • EURUSD: SL=1.8, TP=3.0
    • USDJPY: SL=2.0, TP=3.2
    • XAUUSD: SL=2.6, TP=4.0
    • BTCUSD: SL=3.2, TP=4.5
    • 共通: ATR期間14、ATRシフト1 (確定足)

    四半期ごとに再最適化し、Optuna で 200 trials の探索後に値を更新しています。

    まとめ

    定説の「ATR×2」は銘柄を問わず通用する正解ではなく、平均的に外しにくい妥協点と考えるのが正確です。実運用では銘柄ごとに3年以上のデータでグリッドサーチして、自分の戦略の特性に合わせた数字を見つけることをお勧めします。検証コードは /blog のサンプル にも置いています。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

  • Claude Code を実務でEA開発に使った場合の落とし穴 7つと回避策

    [ 広告 / PR ]
    🔰 この記事のポイント (初心者向け)

    はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

    📖 この記事で出てくる用語
    • EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
    • MT5 = MetaTrader 5。世界標準のFXトレードソフト
    • Claude Code = Anthropic製のAIコーディング支援ツール
    Claude Code を実務でEA開発に使った場合の落とし穴 7つと回避策
    イメージ画像
    ⚠️

    実務経験から得た教訓

    📢 広告 (PR) を含む場合があります

    Claude Code を実務でEA開発に使った場合の落とし穴 7つと回避策

    最終更新: 2026-05-05

    著者
    海堂 慎
    金融データアナリスト・元クオンツ
    外資系投資銀行で10年クオンツ業務後に独立。Python/MQL5/R で複数のシステム運用。

    Claude Code (Anthropic公式CLI) を1ヶ月本格的に使ってMT5用EAを書いた経験から、「想定通り使えなかった」7パターンと、その回避策を整理します。万能ではないけれど、向き不向きを理解すれば強力な相棒になります。

    1. MQL5の方言にAIが追従しきれない瞬間がある

    Claude Code は Python/JavaScript/TypeScript で抜群に強いのですが、MQL5の細かいドキュメント差分 (例: MqlTradeRequestのフィールド変更) で、古い書き方を提案してくることがありました。

    回避策: プロンプトに 「MetaTrader 5 build 4400 以降を前提」「最新のMQLドキュメントに従う」 と明示。さらに、生成コード冒頭に #property strict を入れさせて型エラーを早期検出します。

    2. バックテストの再現性がコード非依存で崩れる

    同じコードでも、ストラテジーテスターのモード (Every tick / Every tick based on real ticks / 1 minute OHLC) で結果が大きく変わります。Claude が「PF=1.8」と報告しても、別モードでは1.2まで落ちることがありました。

    回避策: Every tick based on real ticks + Tick Quality 99% を必須化。比較は同条件で再走行を徹底。

    3. 「自然言語の曖昧さ」が静かに数字を狂わせる

    「ATR の2倍を SL に」と頼むと、iATR(_Symbol, _Period, 14) * 2 でコードが書かれますが、iATR は配列扱いで CopyBuffer が必要になるバージョンもあります。

    回避策: 「期間 14、シフト 1、CopyBuffer で取得」のように仕様を完全に数値化して渡します。

    4. ロット計算でブローカー差を吸収しきれない

    銘柄毎の contract_size、最小ロット、Tick Value はブローカーで微妙に違います。Claude が書く汎用ロット計算は、複数ブローカーで動かすと誤差が0.01〜0.05ロット出ました。

    回避策: SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE) 等の動的取得を必ず通すよう指示。固定の係数は禁止。

    5. 例外処理を省略しがち

    初回生成では OrderSend が失敗した場合の retcode 別ハンドリングが省かれることが多かったです。本番でリクオート (10004) や接続不安定 (10026) のときに無言で停止します。

    回避策: 「すべての retcode を ENUM_TRADE_RETCODE に対応する形でログ出力し、リトライ最大3回まで」など、運用要件としてプロンプトに含める。

    6. テストが「動いた = 正しい」になりがち

    Claude は「実行結果はエラーなし」を成功とみなしがちですが、それは無限ループでも当てはまります。バックテストで取引数 0 でも報告では「正常に完了しました」となるケースがありました。

    回避策: 「取引数が0なら FAIL を返す」のような明示的な合格基準をテストに組み込みます。

    7. 過信して人手レビューを飛ばす

    これが最大の落とし穴です。Claude が書いたコードは見やすく一貫性があるため、読まずに本番投入したくなります。私自身、見落としで RISK_PERCENT を1%でなく10%にしたまま3日運用してDD15%まで行きました。

    回避策: RISK_PERCENTMAX_LOTSL/TP を扱う行は必ず人間がレビュー。Git の hook で必ず git diff を見るルーチンに。

    使い分けの結論

    Claude Code は「退屈で間違えやすい部分の高速化」に最適です。CSV処理、データ前処理、レポート生成、テストコード、ドキュメント等。
    逆に「お金が動く境界面」(ロット計算、発注、SL設定) は AI 生成 + 人間レビュー を必須にします。AIは最高のドラフト作成者だが、最後の責任は人間が持つ。これが1ヶ月で得た一番大きな結論です。

    参考にした情報源

    免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
    PR · DMM FX 公式

    国内口座数 No.1 — DMM FX

    業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
    新規口座開設で 最大 300,000円 キャッシュバック中

    ▶ DMM FX 公式サイトで詳細

    ※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。