1年で口座残高が8倍に増えるEA(FX自動売買システム)がつくりたい
2022/02/13
1. 目標 【年8倍】
年利700%、すなわち元金を1年で8倍に増やそうというのが目標です。
コレに関してまず月間でいくら儲かればいいのかを考えます。トレードで得た利益も使って注文ロット数を増やしていけば複利でいけます。毎月末に残高に応じてロットを増やすと仮定した場合、年で8倍にするには月におよそ1.2倍、つまり月間20%増やせればOK※1。
(※1 実装時にトレード毎に残高から最適ロット数を調整するようにしておくのが理想的ですが今回は計算を簡単にするためコレで。月にr倍とおくと r12 = 8 より r = 1.189… ≒ 1.2 ちなみに実際には利益に対して課税もされるので手取りはもっと減るんですが、ややこしくなるのでその分は後で考えることとします。)
また、FX市場が開いている月~金のうち米国市場休業日や大きな指標発表日は荒れやすいのでなるべく避けるとすると現実的にトレードできる日数は月におよそ20日です。ということは元金に対して平均して日利1%が出せれば目標に届きます。
さて、まずはこの平均1日1%の利益を継続して出すために必要な勝率と利益幅、及び負けた際に許容できる損失幅を計算していきます。
2. FXにおける損益の基本 ~~損益の出し方とレバレッジ~~
まずはFXがどのように利益や損失を出すかを米ドル/円を例に確認しましょう。(このあたりご存じの方はこの節は読み飛ばしてもらってOKです。)
さて、あるとき【1ドル=110円25銭】だったので1ドルをこの値段で買ったとします※2。
この数時間後、ドルの価値が【1ドル=110円75銭】に上がりました。ここで先程買った1ドルを売ると、110円25銭払って110円75銭戻ってきたので、差し引きで50銭を手に入れたことになります。これがFXにおける利益です。
またあるとき【1ドル=110円25.0銭】に戻ったので1ドルをこの値段で買ったとします。
この数時間後、ドルの価値が【1ドル=109円95銭】に下がってしまいました。
ここで先程買った1ドルを売ると、110円25銭払って109円95銭戻ってくるので、差し引きで30銭を失ったことになります。これがFXにおける損失です。
(※2 現在価格で売る権利だけを確保しておいてあとでドルを買ってきて渡す空売りというのもありますが、損益の出方は実質同様なので例としては買いだけを挙げています。)

……コレどう考えても
しょぼい
ですね。
+50銭だの-30銭だのと言ったって100銭=1円なのでこんなん+0.5円と-0.3円です。1円にも満たない損益があったところで嬉しくも悔しくもありません。最低でも○○千円くらいはほしい。そしてゆくゆくは△△千万円とかほしい。1ドルしか買わないのではお話にならない。
というわけで最初から1万ドル買っておけば利益も損失も1万倍です。+50銭の1万倍は+5000円だし-0.3円の1万倍は-3000円です。このくらいなら自分の財布から増減すると思えばまぁ嬉しかったり悔しかったりします。
実際の売買のときにはこのように1万ドルや10万ドルのようにある程度まとめて扱うので、このひとまとまりをロットと呼びます。ロットはトレードを行う会社にもよりますが日本の会社だと【1ロット=1万ドル】をよくみます。(海外だと1ロット=10万ドルが多い印象です。)

……が、最初に1万ドル買うには当然元手も1万倍必要なので先の設定のように【1ドル=110円25銭】だと【1ロット=1万ドル=110万2500円】必要です。最初からこんなにお金があるなら5000円程度の増減じゃ大して喜べないんですよ……。
というわけでここで登場するのがレバレッジというやつです。
これは「1万ドル買うときに手持ちの円が足りなければ証券会社が一時的に必要額を貸してくれて、後で1万ドル売ったときに借りたのと同額を返す」システムだと思ってまぁよいです。
もちろん貸す側としても無一文にお金を貸したらもしあとで損が出ていたときに回収できなくなるリスクがあるため、ある程度の手持ち円がある人にしか貸してくれません。
このある程度の手持ちを必要証拠金と呼んでいます。必要証拠金の額をいくらにするかは取引を行う証券会社によって異なりますが、日本国内の会社だと1万ドルごとに買うのに必要な額(円)の4%以上となっています。本来必要な額の4%を担保に100%分、つまり25倍のお金を借りて運用するのでこの場合レバレッジ25倍となります(※3)。
(※3 もちろん手持ちで10%ぐらいある場合でも100%分借りて運用できるので、このようなときはレバレッジ10倍ということになります。)
例での設定のように【1ドル=110円25銭】なら運用するのに【1ロット=1万ドル=110万2500円】必要なので、証拠金として最低この4%、すなわち【110万2500円×0.04=4万4100円】あれば最小単位での取引が可能になるわけです。

3. 含み損と強制ロスカット
通貨を新規に売り買いして最後に決済するまでの状態を【ポジションを持っている】といいます。FXではポジションを持っているとき常に「今この瞬間に売ったら差し引き損益は〇〇円」というのが表示されています。これを含み益あるいは含み損といいます。
レバレッジによる借り入れの返済は基本的に決済のときなのですが、含み損が出てきた場合のみ少し話が変わってきます。
含み損が出ているということは、このままにしておくと最終的に大損するかもしれない。(このあと戻すことだってあるのであくまで ”かもしれない” 。)
あまりにも大損を出されてしまうと、担保に出している証拠金をあわせても返済ができなくなってしまいます。貸し主である証券会社側としてもそれは避けたい。
そこで【口座残高から含み損を差し引いた額が必要証拠金の何割かを下回った】場合、証券会社側の判断でトレードを即時決済&返済させます(※4)。 いわゆる強制ロスカットというやつです。何割まで許容するかは証券会社や規約次第で、日本だと5割のところを多く見ます。海外なんかだと2割まで許容してくれるところもあります。
「強制ロスカット喰らうと借金がヤバイ!!」みたいなイメージがありますが強制ロスカットが ”きちんと(※5)” 執行されれば口座のお金がガッツリ減るだけでマイナスに突っ込むことはほぼないです(まぁ最初から口座に振り込んだお金がどこかで借りてきたものだったらそれはヤバイですが……)。むしろ強制ロスカット制度のおかげでマイナスに突っ込むことがほぼなくなっているので、実質的には最終安全装置としての意味合いの方が強いですね。
強制ロスカットは安全装置である、というそれはそれとして、”堅実に利益を増やす運用”という観点で考えればマージンコール(※4)だの強制ロスカットだのという状況になっている時点で既に終わっています。クソ雑魚運用です。
ゆえに基本的には【ある程度の含み損が発生しても口座残高が必要証拠金を下回らない】ぐらいのお金を用意しておく必要があります。
(※4 実際のところいきなり強制ロスカットになることはあまりなくて、だいたいはある割合を下回ったと判定された段階でマージンコール(追加証拠金:いわゆる追証(おいしょう)の振込要求)がきます。マージンコールがきたら基本は追証を振り込むか、ポジションの一部を決済して必要証拠金そのものを縮小させる必要があります。・含み損が大きくなって口座残高が証拠金の一定割合を下回る→マージンコールがくる→含み損が拡大し過ぎるor〆切までに追証などの対処をしない→強制ロスカット の流れが多いです。)
(※5 相場があまりに急変動した場合、強制ロスカットの発動から実際の執行までに決済が追いつかず、とんでもない価格で約定してしまう可能性があります。この場合は口座残高がマイナスになることが理論上ありえます。)
4. 利回りと余剰
さてドル円に話を戻すと、1ドルはおよそ115円(※6)なので1ロット(1万ドル)あたりの必要証拠金は 115[ドル/円] × 1[ロット/1万ドル] × 0.04=46000 となり約4万6000円です。
口座には最低でもこの額を入れないと取引が始められず、さらに安定した運用をするためには余裕を持っていなければなりません。利回りを考えるなら原資としてはこの余裕分も加味する必要があります。
(※6 2022年2月初旬現在)
5. 平均日利1%を出すために必要な値動き
さてドル円で取引するとして、以下の設定を考えます。
・取引はL[ロット](L万ドル)ずつ行う
・口座には1[ロット]あたりN[万円]、すなわちL×N[万円]用意する (4万6000円<N万円)
このとき1%の利益を出すために必要な値動き幅を計算していきます。
値動き幅はドル円の場合[円]または[銭]ですが、これだと損益そのものの[円]と混同する可能性があるので値動き幅の単位として以後は[pips]を使います。ドル円の場合1銭の値動き幅が1[pips]に相当します。
まず値動きが利益方向にt[pips]のとき、利益は
$$t[pips] × (10000 × L)=10000tL[銭]=100tL[円] -①$$
また口座残高( L×N [万円])に対して1%の利益とは
$$(L × N) × 0.01=0.01NL[万円]=100NL[円] -②$$
①=②となればよいので
$100tL=100NL$ すなわち $t=N -③$
よって1ロットあたりN[万円]用意する場合、ロット数LによらずN[pips]の値動き分だけ利益を出せればよいことがわかります。つまり平均して1日にN[pips]値動きを当てられればOKということです。
6. 平均1日N[pips]取るために満たすべき不等式
次はN[pips]を取りにいくために必要な条件を考えるため、以下の仮定を追加します。
・トレード1回あたりの勝率をpとする(0<p<1)
・負けトレードの場合、1回あたりの損失方向値幅は R [pips]とする
・勝ちトレードの場合、1回あたりの利益方向値幅は R×r [pips]とする(※7)
・1日あたり平均してn回のトレードを行う
(※7 負けトレード時の損失サイズに対する勝ちトレード時の利益サイズの比をPOR(ペイオフレシオ)といいます。今回はPOR=r としています。)
このとき、1回あたりの期待値幅を$E1[pips]$とおくと、
$$E_1[pips] = p × (R × r) +(1-p) × (-R) = R (pr+p-1) -④$$
となります。もちろん 0<E1 でなければ意味がないので勝率と定数kについては、
$0 < pr+p-1$ すなわち $\frac{1}{r+1} < p -⑤$
の不等式を満たすようにします。
1日あたり平均n回のトレードを行ったときにN[pips]以上の値幅を得るなら、
$N \leq E_1 × n$ すなわち $N \leq nR(pr+p-1) -⑥$
が成立すればよいことがわかります。
5分足チャートを見ながらトレードすると考えると足は1時間に12本増えるので1日に追加される足の数は288本です。とはいえ、トレードを仕掛けるべきタイミング(好形の足配置)はそう頻繁にあるわけでもないので、せいぜい1日に1~3本程度だと考えられます。そこで⑥式において $n=2$として、
$$N \leq 2R(pr+p-1) -⑥'$$
とできます。
この不等式⑥’のパラメータを調整して目標勝率やPORを探っていくことになります。
例えば1ロットあたり6万円を口座に入れてあるとき、1回のトレードごとに負ければ-5[pips](-500円)、勝てば+20[pips](+2000円)となるように設定するなら $N=6, R=5, r=4$ を代入して、
$6 \leq 2×5×(4p+p-1)$ すなわち $0.32 \leq p$
となるのでこの例だと勝率32%以上を目指せばいいとわかります。
これに加えて制約条件があるのですが長くなったのでひとまずここまで。次で制約条件書きます。