全体の流れ

買い注文をし、100ドルの利益が出たら決済する

過去データ(ストラテジーテスター)を使って動作確認する

 

① 買い注文をし、100ドルの利益が出たら決済する

何をしているプログラムか

このEA(エキスパートアドバイザ)は、次のルールで動きます。

  1. まだポジションを持っていない場合

    • 成行で「買い注文」を1回だけ出す

  2. 保有中のポジションの合計利益を常に監視

    • 利益の合計が 100ドルを超えたら

      • すべてのポジションを決済する

      • その後は もう取引しない(停止フラグを立てる)

👉
「1回だけ買って、100ドル儲かったら全部決済して終了」
という練習用の自動売買です。


ソースコードの中身(処理内容を日本語で)

■ OnTick(毎回の価格更新時に実行)

  • 「今、ポジションが無いか?」を確認
    → 無ければ 買い注文を出す

  • 「今、全ポジションの利益はいくらか?」を確認
    → 100ドルを超えたら 全決済+停止


■ buy()(買い注文の処理)

  • 現在の価格(Ask)で

  • 1ロットの 成行買い注文 を出す

  • 利確・損切りは設定しない(今回は手動ロジックで管理)


■ getPositionCount()(ポジション数の確認)

  • 今トレード中の注文をすべて数える

  • 何個ポジションを持っているかを返す


■ getAllProfit()(利益の合計)

  • 現在持っているすべてのポジションについて

  • 利益を1つずつ足し算する

  • 合計利益(ドル) を返す


■ closeAllPosition()(全決済)

  • 今持っている全ポジションを順番に選択

  • 買いなら Bid、売りなら Ask で

  • 成行決済

  • 失敗した場合はログにエラーを出す


■ isStop フラグ

  • 一度100ドル利益で決済したら true

  • true の間は もう新規注文を出さない

  • → 無限売買を防ぐための安全装置


② 過去データを使ってプログラムを動かす

なぜ過去データを使う?

  • チャートに直接EAを入れると リアル取引が発生する

  • それを避けるために
    👉 ストラテジーテスターで過去データ検証 を行う


ストラテジーテスターの流れ

  1. 表示 → ストラテジーテスター

  2. 次を設定

    • エキスパートアドバイザ:Sample

    • 通貨ペア:US500Cash

    • モデル:始値のみ

    • 期間指定:ON

    • 開始日:2019/01/01

    • 終了日:2019/02/28

    • 時間足:Daily

  3. スタート を押す


テスト中に起きていること

  • 過去のチャートが時間順に再生される

  • 条件を満たしたところで

    • 買い注文

    • 利益が100ドルを超えたタイミングで決済

  • 「結果」タブで

    • 決済日

    • 利益額
      を確認できる