無料で差し上げます!
システムトレードの作り方エクセルファイル
・MACDのトレンド判定、RSIの作り方
・ストキャスティクスの作り方
・ボラティリティストップの作り方
・トレイリングストップの作り方
過去データの取得方法
まずは、FXのシステムトレードの作り方から進めていきたいと思います。FXの過去データの入手方法として、一番おすすめなのは、取引する証券会社から入手することです。これはFXが相対取引のため証券会社によって値動きが若干ですが違っているためです。
相対取引とは、取引を行うもの同士が1対1で売買を成立させる取引のことで、同じ時間に同じ注文を出しても取扱業者によってレートが違ってきます。なるべくなら自分が取引する状況に近い過去データを入手するべきだと考えています。
ただ、取扱業者によっては、過去データの提供サービスを行っていないところもありますし、もともと最小限のサービスで手数料が安いことを売りにしている取扱業者にはそんな高望みはできません。
そこで、今回は誰でも入手可能な方法をご紹介させていただきます。誰でも入手可能ということは、誰でも知っている方法だと思いますが、システムトレード初心者の方のためにということで。
infoseekマネーの外為レートを見れば、今のところ対円レートでは、米ドル、ユーロ、英ポンド、豪ドル、スイスフラン、カナダドル、ニュージーランドドル、対米ドルレートでは、ユーロの過去データが入手可能です。 尚、この時系列データは、平成16年6月から外為どっとコムにて提供されている情報です。
期間を指定すれば、米ドルであれば1990年1月からの過去データが入手可能です。また、表示方法として日別、週別、月別と3種類を選択することができます。
不便なところとしては、50明細までしか一度に表示されないところと、データを一括でダウンロードするような機能がないことです。投資先進国アメリカなら当たり前のようにダウンロード機能がついているのですが、日本はまだまだといったところでしょうか。
手動でエクセルに貼り付けるには、数値部分を選択&コピーし、右クリック>貼り付けの時に形式を選択して貼り付け>テキストでちゃんとセル分けして貼り付けることができます。
システムトレードの検証期間としては、スイングトレードで少なくとも2年、できれば5年から10年ほどほしいところです。この期間をコピー&貼り付けするのは、ちょっと面倒ですよね。エクセルのVBAを使用すれば瞬時にダウンロードすることができるようです。プログラミングの知識がある方は、是非トライしてみてください。
できれば、当サイトでも過去データを提供していきたいと考えています。と言っても私自身は、VBAのプログラミング知識があるわけではないので、協力者を探しているところです。只今交渉中ですので今しばらくお待ちください。
この四本値を入手することができなければ、Excel(lエクセル)によるシステムトレードは成立しません。他にもデータの入手方法があると思いますので、いろいろと調べてみてください。
過去データの入手方法 日経225先物編
日経225先物、もしくは日経225mini先物でシステムトレードをやるにしても、FXの時と同様に過去データが必要になります。過去データの入手方法にはいくつかの方法がありますので、私のわかる範囲内で説明したいと思います。
無料で入手する方法
システムトレードをはじめたばかりの方には過去データにお金を払うのはちょっと抵抗があるのではないでしょうか?やればやるほどその必要性がわかってくるのですが。そんなシステムトレード初心者の方におすすめしたい入手方法が2種類あります。
1.過去1年分の半日足データを利用する
このサイトは私が日経225miniを取引する前から使用していますし、今も実際の運用時のデータ更新に役立たせてもらっています。今も使用している理由については、SBI証券(イートレード証券)を利用している方ならわかると思うのですが、SBI証券では、夜に当日の過去データを見ようとすると夕場のデータしか表示されていません。そのような関係でこのサイトには今も大変お世話になっているのです。
日経225先物なら日経225先物1限月を、日経225mini先物なら日経225mini先物1限月を使用すればいいと思います。
株価時系列データ 日経225mini先物1限月 日中 前後場足
2.現物の過去データを利用する
おなじみのYahoo!ファイナンスです。こちらのサイトには先物の時系列データが存在しません。なので、現物データを利用するわけなのですが、先物の仕組み上、現物を源泉として作られた金融商品なので、現物データを使用してもさほど問題ないと考えられます。
ただ、あくまで現物データなので、そこらへんの事情を割り切って使用する必要があります。有名システムトレーダーの中には、このデータの使用をすすめている方もいましたのでここでご紹介させていただきました。
有料で入手する方法
自分のシステムを信じて使用し続けるためには、ある程度の期間で検証する必要があります。投資戦略は、統計学を利用したものがそのほとんどだと思いますし、システムトレードもそのひとつです。ですから、より多くの検証回数をこなすことが、優位性の証明につながります。
本格的にシステムトレードをやろうと決断された方におすすめの方法を1つご紹介します。
3.過去データのCD-ROMを購入する
相場過去データCD-ROM 株価指数・債券先物版 先物の過去データの入手方法としては、けっこう有名な入手先のようで、いろんなところで紹介されていましたので、私も購入しました。ちなみに、当サイトでこれから日経225先物の検証方法を説明する時に使用するのは、この過去データです。
日経225先物、オプション、債券先物の上場来全限月の日足ベースの四本値をすべて収録されています。また、1年以内なら割安で更新できます。ただし、日経225miniのデータは収録されていないので日経225miniでの運用を考えている方はその辺を割り切って使用する必要があります。
収録されている銘柄および期間は下記の通りです。
| 銘柄 | 取引所 | 始 | 終 |
| 日経225先物 | 大証 | 1988/09/03 | 2008/07/03 |
| 日経225先物 | SGX | 1986/09/03 | 2008/07/03 |
| 日経225先物 | CME | 1990/09/25 | 2008/07/03 |
| 日経225オプション | 大証 | 1989/06/12 | 2008/07/03 |
| 日経300先物 | 大証 | 1994/02/14 | 2008/07/03 |
| ダウ工業株30種先物 | CBOT | 1997/10/06 | 2008/07/03 |
| S&P500株価指数先物 | CME | 1982/04/21 | 2008/07/03 |
| 債権先物 | 東証 | 1985/10/19 | 2008/07/03 |
| T-Bond先物 | CBOT | 1977/08/22 | 2008/07/03 |
| 日本円先物 | CME | 1977/01/03 | 2008/07/03 |
| 米ドル先物 | TIFFE | 1991/04/22 | 2001/12/11 |
| TOPIX先物 | 東証 | 1990/04/03 | 2008/07/03 |
有料の価格データは、ちょっと高額ですね。 こちらのキャッシュバックキャンペーンをご利用ください。 キャッシュバックキャンペーン一覧
以上が、私が知っている過去データの入手方法です。これくらい知っていれば検証から実運用まで問題なくできると思います。 ですが、今後便利な方法が見つかり次第またご紹介しようと思います。
次は移動平均線です。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
移動平均線の作り方
移動平均とは、当日からN期間さかのぼったデータの平均値を結んだ線のことを言います。新しいデータが追加されるごとに、平均値を移動させるため移動平均と言います。テクニカル指標にはさまざまなものがありますが、移動平均はもっとも広く利用されている指標のひとつです。
移動平均は、ある一定の期間の平均値をとっているので、実際の価格の動きよりも遅く動くことになります。そのため価格が勢いよく上昇した場合には、移動平均の方が安くなります。また、逆に勢いよく下落した場合には、移動平均の方が高くなります。
このように価格と移動平均の位置関係で、上昇トレンドなのか下降トレンドなのかを判定することができます。移動平均線を使用したテクニカル分析として、上昇トレンドが続いている場合は今後も価格は上昇すると予想し、下降トレンドが続いている場合は今後も価格は下降すると予想することができます。この考え方をトレンドフォローといいます。
現在の価格が移動平均線より上にあれば上昇トレンド継続中と考え、
現在の価格が移動平均線より下にあれば下降トレンド継続中と考える。
言葉で説明するのは難しいのでExcelで移動平均線を描いてみよう!
1.F1に25日移動平均線と入力
2.F26に「=AVERAGE(E2:E26)」と入力
3.データの最終行までコピー
価格と移動平均をグラフ化したのが下の図です。
4.G1にトレンド判定と入力
5.G26に「=IF(E26>F26,"上昇","下降")」と入力
これは終値が移動平均よりも上に位置するなら上昇、下に位置するなら下降を意味する。
6.条件付き書式で上昇を青、下降を赤にする
7.F2でウィンドウ枠の固定を設定する
ここまで進むと下の図のようになります。
このようにトレンド判定部分を色分けしてやると、とても見やすい。トレンド判定に赤が何日も連続して表示されている期間は、下降トレンド継続中、青が何日も連続して表示されている期間は上昇トレンド継続中ということになります。
移動平均のドテン
前回作成した移動平均線によるトレンド判定を利用して、ドテン売買の簡単なシステムを作ってみようと思います。 ドテンとは、買っていたポジションを決済し、さらに売りを建てること。逆に売っていたポジションを決済し、さらに買いを建てることをいいます。売ったり買ったりと常に取引をしていることになります。
売買ルールは次の通りです。トレンド判定が赤色の下降から青色の上昇へ変わった日の翌日の始値で買い、その後上昇から下降へ変わったら、次の日の始値で決済する。売りの場合はその逆で、ドテン売買なので、売り買いを絶えず繰り返していく。 取引枚数は10,000通貨とし手数料は1,050円とする。スプレッドは、 0.04円とする。それでは早速作成していこう!!
まず、前回作成した移動平均線のトレンド判定ファイルを開きます。
F4にカーソルを合わせて、ウィンドウ枠の固定を設定します。
☆約定価格を計算
1.H1に「約定価格」と入力する
2.H37に「 =IF(G35<>G36,B37,H36) 」
Gのトレンド判定が前日と変わっていたら翌日の始値を約定価格としている
3.データのある最終行までコピーする
☆ポジションの種類を計算
4.I1に「種類」と入力する
5.I37に「 =IF(AND(G35<>G36,G36="上昇"),"買",IF(AND(G35<>G36,G36="下降"),"売",I36)) 」と入力する
前々日と前日のGが変わっていて、かつ前日のGが上昇なら買、前々日と前日のGが変わっていて、かつ前日のGが下降なら売と表示させている。Gに変更がなければ、前日のIを表示させる。
6.データのある最終行までコピーする
☆ポジションの日数を計算
7.J1に「日数」と入力する
8.J37に「=IF(G35<>G36,1,J36+1)」と入力する
前々日と前日のGが変わっていたら1を表示させ、変わっていなかったら前日のJに1をプラスする
9.データのある最終行までコピーする
☆決済価格を計算
10.K1に「決済価格」と入力する
11.K38に「 =IF(G36<>G37,B38,"") 」と入力する
前々日と前日のGが変わっていたらその日の始値を表示させ、それ以外は空白とする
12.データのある最終行までコピーする
☆損益を計算
13.L1に「損益」、L2に「10,000」、L3に「1,050」、K3に「0.04」と入力する
これは取引単位を10,000通貨、手数料を1,050円、スプレッドを0.04円にするため
14.L38に「 =IF(AND(K38<>"",I37="買"),(K38-H37)*$L$2-$L$3-K$3*L$2,IF(AND(K38<>"",I37="売"),(H37-K38)*$L$2-$L$3-K$3*L$2,"")) 」と入力する
Kが空白じゃなく、かつ I が買だった場合、決済価格Kから約定価格Hを引いてその値に10,000通貨を掛算、手数料とスプレッドをマイナスしている。逆にKが空白じゃなくかつ、I が売だった場合、約定価格Hから決済価格Kを引いてそのその値に10,000通貨を掛算、手数料とスプレッドをマイナスしている。それ以外は空白としている
16.データのある最終行までコピーする
※取引通貨と手数料、スプレッドに対しては絶対参照($)が使われていることに注意しよう。
移動平均ドテンの評価
前回作成した移動平均線のドテン売買のテスト結果を評価してみる。
まずは、前回作成した移動平均線のドテン売買のファイルを開く。
☆累積損益を計算
1.M1に「累積損益」と入力する
2.M38に「 =SUM(L38)+M37 」と入力する
3.データのある最終行までコピーする
☆最大損益を計算
4.N1に「最大損益」と入力する
5.N37に「=MAX(M37,N36)」と入力する
6.データのある最終行までコピーする
☆ドローダウンを計算
7.O1に「ドローダウン」と入力する
8.O38に「=IF(M38-N38>=0,0,M38-N38)」と入力する
9.データのある最終行までコピーする
☆評価シートを作成
10.シートを挿入して、名前を評価シートとする
☆勝率と売買回数を計算
11.勝ち回数 (B2)
「=COUNTIF(usdデータ!L$4:L$1001,">0")」
損益の中で0より大きな数値を数える
12.負け回数 (B4)
「=COUNTIF(usdデータ!L$4:L$1001,"<0")」
損益の中で0より小さな数値を数える
13.売買回数 (B6)
「=SUM(B2,B4)」
勝ち回数と負け回数の合計
14.勝率 (A2)
「=B2/B6」
勝ち回数÷売買回数
☆期待値を計算
15.利益合計 (C2)
「=SUMIF(usdデータ!L$4:L$1001,">0")」
損益の中で0より大きな数値を合計する
16.損失合計 (C4)
「=SUMIF(usdデータ!L$4:L$1001,"<0")」
損益の中で0より小さな数値を合計する
17.損益合計 (C6)
「=SUM(C2,C4)」
利益合計+損失合計
18.平均利益 (D2)
「=C2/B2」
利益合計÷勝ち回数
19.平均損失 (D4)
「=C4/B4」
損失合計÷負け回数
20.期待値 (D6)
「=(D2*A2)+(D4*(1-A2))」
(平均利益×勝率)+(平均損失×(1-勝率)))
☆最大利益、最大損失、最大ドローダウンを計算
21.最大利益 (E2)
「=MAX(usdデータ!L$4:L$1001)」
損益の中での最大値
22.最大損失(E4)
「=MIN(usdデータ!L$4:L$1001)」
損益の中での最小値
23.最大ドローダウン (E6)
「=MIN(usdデータ!O4:O1001)」
ドローダウンの最小値
評価項目は上の図のようになる。
参考にしてほしい。
時折大きなトレンドを捉えてはいるものの、だましと呼ばれる小さな損失が連続しているのが分かると思います。結果的に損益はマイナスになっています。今回は25日の移動平均線で試してみましたが、この日数を変更することによって結果が変わってくると思います。どのように変化するのか見てみるのもいいでしょう。
過去27年間の検証
前回まで25日移動平均線にしぼって検証してきましたが、今回は10日から100日の移動平均線について検証してみました。 しかも USD/JPN を27年間も!!下の図が移動平均線の日数を10日ずつ変えていった場合の年度ごとの損益結果です。
ちょっと見にくいですが、日数が大きいほど合計金額が大きくなっているように思えます。移動平均線を使った売買シグナルは、日数が大きければ大きいほど、大きなトレンドをとらえようとしますし、小さければ小さいほど、小さな動きにも反応しやすくなります。
日数を決定する時には、全体的な収益の安定も大切ですが、どのような値幅をターゲットにして利益を狙いに行くのかを考えるのもひとつの判断材料になると思います。そう考えれば自分のシステムの得意な動きが見えやすくなると思いますし、上手く機能しない場合にもある程度納得して使い続けることができるのではないでしょうか。
次は移動平均のクロスです。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
移動平均線クロスの作り方
前回、1本の移動平均線と当日の終値でトレント判定を行いましたが、小さな損失が多く全体でもマイナスのシステムとなってしまいました。そこで今回は2本の移動平均線を使用してトレンド判定をしたいと思います。 ルールは下記のとおりです。
短期の移動平均線が長期の移動平均線より上にあれば上昇トレンド継続中と考え、短期の移動平均線が長期の移動平均線より下にあれば下降トレンド継続中と考える
この移動平均線のクロスを使用したトレンド判定は、期間の違う2本のデータから判定されているので1本の移動平均線で作られたトレンド判定よりもだましは少なくなると予想されます。さっそく移動平均のクロスを作成してみましょう。
過去データをコピーしエクセルに貼り付けます。
1.F1に「10日移動平均線」と入力
2.F11に「 =AVERAGE(E2:E11) 」と入力
3.データの最終行までコピー
4.G1に「30日移動平均線」と入力
5.G31に「 =AVERAGE(E2:E31) 」と入力
6.データの最終行までコピー
7.H1にトレンド判定と入力
8.H31に「 =IF(F31>G31,"上昇","下降") 」と入力
これは短期の移動平均が長期の移動平均よりも上に位置するなら上昇、下に位置するなら下降を意味する。
10.F2でウィンドウ枠の固定を設定する
ここまで進むと下の図のようになる。
移動平均クロスのドテン
移動平均クロスによるトレンド判定を利用して、ドテン売買を検証してみます。売買ルールは下記の通りです。
トレンド判定が下降から上昇へ変わった日の翌日の始値で買い、その後上昇から下降へ変わったら、次の日の始値で決済。売りの場合はその逆で、ドテン売買なので、常時、売買を繰り返していく。
取引枚数は10,000通貨とし手数料は1,050円、スプレッドは0.04円とする。(移動平均のドテンの時とほとんど同じ数式。。。)それでは早速作成!!移動平均クロスによるトレンド判定の続きからです。
☆約定価格を計算
1.ウィンドウ枠の固定をF4に設定する
2.I1に「約定価格」と入力する
3.I49に「=IF(H47<>H48,B49,I48)」
Hのトレンド判定が変わっていたら翌日の始値を約定価格としている
4.データのある最終行までコピーする
☆ポジションの種類を計算
5.J1に「種類」と入力する
6.J49に「=IF(AND(H47<>H48,H48="上昇"),"買",IF(AND(H47<>H48,H48="下降"),"売",J48))」と入力する
前々日と前日のHが変わっていて、かつ前日のHが上昇なら買、前々日と前日のHが変わっていて、かつ前日のHが下降なら売と表示させている。Hに変更がなければ、前日のJを表示させる。
7.データのある最終行までコピーする
☆ポジションの日数を計算
8.K1に「日数」と入力する
9.K49に「=IF(H47<>H48,1,K48+1)」と入力する
これは前々日と前日のHが変わっていたら1を表示させ、変わっていなかったら前日のKに1をプラスする
10.データのある最終行までコピーする
☆決済価格を計算
11.L1に「決済価格」と入力する
12.L50に「=IF(H48<>H49,B50,"")」と入力する
これは前々日と前日のHが変わっていたらその日の始値を表示させ、それ以外は空白とする
13.データのある最終行までコピーする
☆損益を計算
14.M1に「損益」、M2に「10,000」、M3に「1,050」、L3に「0,04」と入力する
取引単位を10,000通貨、手数料を1,050円、スプレッドを0.04円にするため
15.M50に「 =IF(AND(L50<>"",J49="買"),(L50-I49)*$M$2-$M$3-L$3*M$2,IF(AND(L50<>"",J49="売"),(I49-L50)*$M$2-$M$3-L$3*M$2,"")) 」と入力する
Lが空白じゃなくかつJが買だった場合、決済価格Lから約定価格Iを引いてその値に10,000通貨を掛算、手数料、スプレッドをマイナスしている。逆にLが空白じゃなくかつ、Jが売だった場合、約定価格Iから決済価格Lを引いてそのその値に10,000通貨を掛算、手数料、スプレッドをマイナスしている。それ以外は空白としている
16.データのある最終行までコピーする
※取引通貨と手数料に対しては絶対参照($)が使われていることに注意しよう。
前回の移動平均のドテンとほとんど同じ数式だったから問題なくついてこれただろう。
一応、下の図を参考にして作成してほしい。
移動平均クロスのドテンの評価
移動平均クロスのドテン売買のテスト結果を評価してみます。まずは、評価をするための下準備からしていきます。
☆累積損益を計算
1.N1に「累積損益」と入力する
2.N50に「 =SUM(M50)+N49 」と入力する
3.データのある最終行までコピーする
☆最大損益を計算
4.O1に「最大損益」と入力する
5.O50に「 =MAX(N50,O49) 」と入力する
6.データのある最終行までコピーする
☆ドローダウンを計算
7.P1に「ドローダウン」と入力する
8.P50に「 =IF(N50-O50>=0,0,N50-O50) 」と入力する
9.データのある最終行までコピーする
☆評価シートを作成
10.シートを挿入して、名前を評価シートとする
☆勝率と売買回数を計算
11.勝ち回数 (B2)
「 =COUNTIF(usdデータ!M$4:M$1001,">0") 」
損益の中で0より大きな数値を数える
12.負け回数 (B4)
「 =COUNTIF(usdデータ!M$4:M$1001,"<0") 」
損益の中で0より小さな数値を数える
13.売買回数 (B6)
「 =SUM(B2,B4) 」
勝ち回数と負け回数の合計
14.勝率 (A2)
「 =B2/B6 」
勝ち回数÷売買回数
☆期待値を計算
15.利益合計 (C2)
「 =SUMIF(usdデータ!M$4:M$1001,">0") 」
損益の中で0より大きな数値を合計する
16.損失合計 (C4)
「 =SUMIF(usdデータ!M$4:M$1001,"<0") 」
損益の中で0より小さな数値を合計する
17.損益合計 (C6)
「 =SUM(C2,C4) 」
利益合計+損失合計
18.平均利益 (D2)
「=C2/B2」
利益合計÷勝ち回数
19.平均損失 (D4)
「=C4/B4」
損失合計÷負け回数
20.期待値 (D6)
「 =(D2*A2)+(D4*(1-A2)) 」
(平均利益×勝率)+(平均損失×(1-勝率)))
☆最大利益、最大損失、最大ドローダウンを計算
21.最大利益 (E2)
「 =MAX(usdデータ!M$4:M$1001) 」
損益の中での最大値
22.最大損失(E4)
「 =MIN(usdデータ!M$4:M$1001) 」
損益の中での最小値
23.最大ドローダウン (E6)
「 =MIN(usdデータ!P4:P1001) 」
ドローダウンの最小値
↑評価項目は上の図のようになる。
参考にしてほしい。
↑前回の移動平均のドテンの評価と比較。
改善点として注目すべきなのは、勝率と最大ドローダウン。勝率は24.8%(下図)から42.4%(上図)と良くなっているし、最大ドローダウンも-193,900から-83,050へと良くなっている。これは思わく通りにだましを減らすことに成功したことを表している。その証拠に期待値はマイナスからプラスに転じている。もちろんプラスと言ってもわずかなものなので今後の改善に期待したい。
思惑通りの改善が実現するとうれしいものです。次にもっと良くするためには何が必要なのかを考えて、検証する。この繰り返しの作業を苦にせず楽しめる人はシステムトレードに向いているのかもしれない。
過去27年間の検証(移動平均クロス)
前回まで、短期移動平均10日、長期移動平均を30日と固定して検証してきましたが、今回もいくつかの日数の組み合わせについて検証してみました。もちろん、USD/JPN の27年間で!下の図が、短期移動平均を5日から15日(5日ずつ)、長期移動平均を20日から80日(10日ずつ)づらして検証した結果です。
単純に合計だけ見ると、5-60、 10-60、 5-80、 10-20、が比較的いい数字を残しています。ただ、ざっと見てみると、2003年から2006年の期間に赤が目立ちます。試しに直近10年と直近5年について、収益の平均を調べてみましたが、全12の組み合わせ中プラスだったのは、直近10年では3組、直近5年では1組という結果でした。ということは、どの組み合わせも一見利益が出ているように見えますが、どれも10年以上前の利益がその多くの割合を占めているということが言えるでしょう。
次はMACDです。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
MACDの作り方
今回はMACDを使用してトレンド判定を作成してみようと思う。MACDとは、移動平均の収束と乖離を意味する「Moving Average Convergence Divergence」の頭文字をとったもの。マックデーと読む。MACDの計算は今までのトレンド判定よりもちょっと複雑なので、しっかり確認しておきたい。
MACDのトレンド判定を作るためには、
1.2本の指数平滑平均線を求める。
今日のn日指数平滑平均 = 昨日の指数平滑平均 + 2 / ( n + 1 ) × (今日の価格 - 昨日の指数平滑平均)
2.2本の指数平滑平均の差からMACDを求める。
3.MACDのn日移動平均からシグナルを求める。
トレンド判定ルールは下記のとおり
MACDがシグナルより上に位置するとき上昇トレンド継続中、MACDがシグナルより下に位置するとき下降トレンド継続中
12日指数平滑平均線を計算してみる!
1.F1に「12日EMA」と入力する
2.F13に「=AVERAGE(E2:E13)」と入力する
これは、はじめの指数平滑平均を求める時に前日の指数平滑平均を使うことが
できないため移動平均で代用している。
3.F14に「=F13+2/13*(E14-F13)」と入力する
4.データのある最終行までコピーする
26日指数平滑平均線を計算してみる!
5.G1に「26日EMA」と入力する
6.G27に「=AVERAGE(E2:E27)」と入力する
7.G28に「=G27+2/27*(E28-G27)」と入力する
8.データのある最終行までコピーする
MACDを計算してみる!
9.H1に「MACD」と入力する
10.H28に「=F28-G28」と入力する
11.データのある最終行までコピーする
9日シグナルを計算してみる!
12.I1に「9日シグナル」と入力する
13.I36に「=AVERAGE(H28:H36)」と入力する
14.データのある最終行までコピーする
トレンド判定を計算してみる!
15.J1に「トレンド判定」と入力
16.J41に「=IF(H41>I41,"上昇",IF(H41<I41,"下降"))」と入力
これはMACDが9日シグナルよりも上に位置するなら上昇、下に位置するなら下降を意味する。
17.条件付き書式で上昇を青、下降を赤にする
18.F2でウィンドウ枠の固定を設定する
ここまで進むと下の図のようになる。
MACDのドテン
MACDによるトレンド判定を利用して、ドテン売買をテストしてみる。売買ルールは次のとおりです。トレンド判定が下降から上昇へ変わった日の翌日の始値で買い、その後上昇から下降へ変わったら、次の日の始値で決済。売りの場合はその逆で、ドテン売買なので、売り買いを繰り返していく。取引枚数は10,000通貨とし手数料は1,050円、スプレッドは0.04円とする。それでは、作成開始!!MACDによるトレンド判定の続きからです。
☆約定価格を計算
1.ウィンドウ枠の固定をF4に設定する
2.K1に「約定価格」と入力する
3.K61に「=IF(J59<>J60,B61,K60)」
Jのトレンド判定が変わっていたら翌日の始値を約定価格としている
4.データのある最終行までコピーする
☆ポジションの種類を計算
5.L1に「種類」と入力する
6.L61に「=IF(AND(J59<>J60,J60="上昇"),"買",IF(AND(J59<>J60,J60="下降"),"売",L60))」と入力する
前々日と前日のJが変わっていて、かつ前日のJが上昇なら買、前々日と前日のJが変わっていて、かつ前日のJが下降なら売と表示させている。Jに変更がなければ、前日のLを表示させる。
7.データのある最終行までコピーする
☆ポジションの日数を計算
8.M1「日数」と入力する
9.M61に「=IF(J59<>J60,1,M60+1)」と入力する
前々日と前日のJが変わっていたら1を表示させ、変わっていなかったら前日のMに1をプラスする
10.データのある最終行までコピーする
☆決済価格を計算
11.N1に「決済価格」と入力する
12.N61に「=IF(J59<>J60,B61,"")」と入力する
前々日と前日のJが変わっていたらその日の始値を表示させ、それ以外は空白とする
13.データのある最終行までコピーする
☆損益を計算
14.O1に「損益」、O2に「10,000」、O3に「1,050」、N3に「0,04」と入力する
これは取引単位を10,000通貨、手数料を1,050円、スプレッドを0.04円にするため
15.O61に「 =IF(AND(N61<>"",L60="買"),(N61-K60)*$O$2-$O$3-N$3*O$2,IF(AND(N61<>"",L60="売"),(K60-N61)*$O$2-$O$3-N$3*O$2,"")) 」と入力する
これは決済価格Nが空白じゃなくかつポジションの種類Lが買だった場合、決済価格Nから約定価格Kを引いてその値に10,000通貨を掛算、手数料1050円、スプレッド0.04円をマイナスしている。逆に決済価格Nが空白じゃなくかつ、ポジションの種類Lが売だった場合、約定価格Kから決済価格Nを引いてそのその値に10,000通貨を掛算、手数料1050円、スプレッド0.04円をマイナスしている。それ以外は空白としている
16.データのある最終行までコピーする
※取引通貨と手数料に対しては絶対参照($)が使われていることに注意しよう。
一応、下の図を参考にしてほしい。
MACDのドテンの評価
前回作成したMACDのドテン売買のテスト結果を評価してみる。
MACDは信頼性が高いだの、移動平均よりも優れているだの、
褒められていることが多いので、ある意味た・の・し・み。←性格悪そう??
まずは、評価をするための下準備をする。
累積損益を計算
1.P1に「累積損益」と入力する
2.P61に「=SUM(O61)+P60」と入力する
3.データのある最終行までコピーする
最大損益を計算
4.Q1に「最大損益」と入力する
5.Q61に「=MAX(P61,Q60)」と入力する
6.データのある最終行までコピーする
ドローダウンを計算
7.R1に「ドローダウン」と入力する
8.R61に「=IF(P61-Q61>=0,0,P61-Q61)」と入力する
9.データのある最終行までコピーする
評価シートを作成
10.シートを挿入して、名前を評価シートとする
勝率と売買回数を計算
11.勝ち回数 (B2)
「=COUNTIF(usdデータ!O$4:O$1001,">0")」
損益の中で0より大きな数値を数える
12.負け回数 (B4)
「=COUNTIF(usdデータ!O$4:O$1001,"<0")」
損益の中で0より小さな数値を数える
13.売買回数 (B6)
「=SUM(B2,B4)」
勝ち回数と負け回数の合計
14.勝率 (A2)
「=B2/B6」
勝ち回数÷売買回数
期待値を計算
15.利益合計 (C2)
「=SUMIF(usdデータ!O$4:O$1001,">0")」
損益の中で0より大きな数値を合計する
16.損失合計 (C4)
「=SUMIF(usdデータ!O$4:O$1001,"<0")」
損益の中で0より小さな数値を合計する
17.損益合計 (C6)
「=SUM(C2,C4)」
利益合計+損失合計
18.平均利益 (D2)
「=C2/B2」
利益合計÷勝ち回数
19.平均損失 (D4)
「=C4/B4」
損失合計÷負け回数
20.期待値 (D6)
「=(D2*A2)+(D4*(1-A2))」
(平均利益×勝率)+(平均損失×(1-勝率)))
最大利益、最大損失、最大ドローダウンを計算
21.最大利益 (E2)
「=MAX(usdデータ!O$4:O$1001)」
損益の中での最大値
22.最大損失(E4)
「=MIN(usdデータ!O$4:O$1001)」
損益の中での最小値
23.最大ドローダウン (E6)
「=MIN(usdデータ!R4:R1001)」
ドローダウンの最小値
↑評価項目は上の図のようになる。
参考にしてほしい。
↑移動平均のドテンの評価と比較してほしい。
改善点として注目すべきなのは、勝率。
勝率は24.8%(下図)から41.0%(上図)と良くなっている。
あとはそれほど驚くような結果じゃない。。。
移動平均のクロスがプラスの期待値だったことを考えると やはりマイナスの期待値に終わったMACDはこれだけではもの足りなさを感じる。
売買回数は移動平均クロスと比べてMACDが2倍以上多いため、フィルターを組み合わせることによって改善されるかもしれない。
過去27年間の検証(MACD)
前回まで、12日、26日、9日のMACDに固定して検証してきましたが、今回もいくつかの日数の組み合わせについて検証してみました。(USD/JPN 27年間)短期指数移動平均を5日から20日(5日ずつ)、長期指数移動平均を20日から50日(10日ずつ)づらして検証しました。(シグナルは、9日で固定です)下の図は、そのうちの合計損益が100万円以上になったものだけをピックアップしたものです。
今回はあらかじめ、平均、直近10年平均、直近5年平均の3項目をつけたしてみました。27年間の過去データを検証するとMACDがそれなりに評価が高い理由がわかる気がします。
移動平均線、移動平均クロスについては、直近10年、直近5年についてほとんどの結果がマイナスに終わってしまっていました。それに比べるとMACDはそれなりのパフォーマンスを残していることがハッキリとわかります。
特に15-50についてはもっとも安定した結果となっています。2003年から2006年についても、多少赤が目立ちますが、合計ではプラスとなっています。
次はRSIの作り方です。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
RSIの作り方
RSIとは、「Relative Strength Index」 の略で、直訳すると「相対力指数」となります。RSIは、ある一定期間の値動きの幅を測定することによって、価格の上がり過ぎ、下がり過ぎを判定するオシレーター系の指標のひとつです。一般的には、RSIが80以上で買われ過ぎ、30以下で売られ過ぎと判断します。
RSIを式で表すと下記のようになります。
RSI = 値上がり幅 ÷ (値上がり幅 + 値下がり幅) × 100
では、さっそくRSIの作り方を説明していきます。四本値から計算を始めていきます。
1.値上り幅の計算
・F1に「値上り幅」と入力する。
・F3に「 =IF(E3<E2,0,E3-E2) 」と入力する。
これは、今日の終値が昨日の終値より小さい時、0を表示し、それ以外の時は (今日の終値 - 昨日の終値) を表示するという意味。
2.値下り幅の計算
・G1に「値下り幅」と入力する。
・G3に「 =IF(E3>E2,0,E2-E3) 」と入力する。
これは、今日の終値が昨日の終値より大きい時、0を表示し、それ以外の時は (昨日の終値 - 今日の終値) を表示するという意味。
3.RSIを計算(14日)
・H1に「RSI」と入力する。
・H16に「 =SUM(F3:F16)/SUM(F3:G16)*100 」と入力する。
これは、14日分の 「値上がり幅 ÷ (値上がり幅 + 値下がり幅) × 100」 という意味。
ここまで入力した数式をデータのある最終行までコピーすると下のようになる!
RSIが80以上で買われ過ぎ、30以下で売られ過ぎと言うのはあくまで目安でしかなく、大きなトレンドを形成している時には、80以上なっていてもさらに大きく上がり続けることもあるし、30以下でもさらに下がり続けることもあるので注意が必要です。
RSIのドテン
RSIを利用してドテン売買をテストしてみる。売買ルールは下記のとおり
RSIが70以上になったら、下降に反転するとして翌日の始値で売り、その後、RSIが30以下になったら、上昇に反転するとして翌日の始値で決済。買いの場合はその逆で、ドテン売買なので売り買いを常に繰り返していく。取引枚数は10,000通貨とし手数料は1,050円、スプレッドは0.04円とする。それでは、作成していきましょう。
☆トレンド判定
1.ウィンドウ枠の固定をF4に設定する
2.I1に「トレンド判定」と入力する
3.最初のRSIが計算されている日のトレンド判定(今回はI16)に「 =IF(H16<30,"上昇",IF(H16>70,"下降",I15)) 」と入力する。
RSIが30以下の場合、上昇に反転し、RSIが70以上の場合は下降に反転する。それ以外の場合は前日のトレンド判定を表示するという意味。
4.データのある最終行までコピーする
これ以降の計算は、過去にご紹介した「移動平均線のドテン売買」、「移動平均のクロスのドテン売買」、「MACDのドテン売買」とほぼ数式は同じなので省略します。
売買結果は下記のとおり
今回の「RSIのドテン売買」結果と今まで試してきた「移動平均線のドテン売買」、「移動平均のクロスのドテン売買」、「MACDのドテン売買」の結果を比べると数値がかなり良くなっていることに気がつくと思います。
これは、今まで使用してきた指標がトレンドフォロー系の指標だったのに対して、今回のRSIはオシレーター系の指標だからということが言えると思います。
トレンドフォロー系はその名のとおり発生しているトレンドに乗ることを目的に作られた指標であるのに対し、オシレーター系の指標はトレンドの反転時期を判定するために作られた指標なのです。
使用目的が違えば、当然得意な相場も違ってくるのです。これらのことを考えれば、何故システムトレーダーの多くが、複数のシステムを同時に運用することによって、安定的に収益を上げようとしているのかご理解いただけると思います。
次はストキャスティクスの作り方です。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
ストキャスティクスの作り方
ストキャスティクスとは、価格の上がり過ぎや下がり過ぎを表すオシレーター系のテクニカル指標のひとつです。直近の高値と安値の値幅に対する終値の関係を数値で表したもので、価格が上昇すればストキャスティクスも高くなり、価格が下降すればストキャスティクスも低くなります。一般的に70%以上が上がり過ぎ、30%以下が下がり過ぎと言われています。
ストキャスティクスには、%Kと%Dの2本のラインを使ったファーストストキャスティクスと%DとSDの2本のラインを使ったスローストキャスティクスの2種類があります。
ファーストストキャスティクスを計算するには、まず%Kを計算します。
%K = (今日の終値 - 過去n日間の最安値) ÷ (過去n日間の最高値 - 過去n日間の最安値) × 100
次に%Dを計算します。
%D = (今日の終値 - 過去n日間の最安値)の過去m日間の合計 ÷ (過去n日間の最高値 - 過去n日間の最安値)の過去m日間の合計 × 100
ファーストストキャスティクスは%Kと%Dの2本のラインのクロスによってシグナル判定します。 %Kが%Dを下から上にクロスしたら買いのシグナル、逆に%Kが%Dを上から下にクロスしたら売りのシグナルとなります。このクロス判定と上がり過ぎ、下がり過ぎの判定を組み合わせることによってシグナルの信頼性が増します。
スローストキャスティクスを計算するには、まず%Dを計算します。次にSDを計算します。
SD = %Dのn日間の平均
スローストキャスティクスは%DとSDの2本のラインのクロスによってシグナル判定します。%DがSDを下から上にクロスしたら買いのシグナル、逆に%DがSDを上から下にクロスしたら売りのシグナルとなります。スローストキャスティクスもファーストストキャスティクス同様に、クロス判定と上がり過ぎ、下がり過ぎの判定を組み合わせることによってシグナルの信頼性が増します。
では、さっそくストキャスティクスの作り方を説明していきます。四本値から計算を始めていきます。
1. 最安値を計算(過去5日)
・F1に「最安値」と入力する。
・F6に「=MIN(D2:D6)」と入力する。
2.最高値を計算(過去5日)
・G1に「最高値」と入力する。
・G6に「=MAX(C2:C6)」と入力する。
3.終値 - 最安値を計算する
・H1に「終-安」と入力する
・H6に「=E6-F6」と入力する。
4.最高値 - 最安値を計算する
・I1に「高-安」と入力する
・I6に「=G6-F6」と入力する。
5.%Kを計算する(5日)
・J1に「%K」と入力する
・J6に「=(H6)/(I6)*100」と入力する
これは、%K = (今日の終値 - 過去5日間の最安値) ÷ (過去5日間の最高値 - 過去n日間の最安値) × 100 を表す。
6.%Dを計算する(3日)
・K1に「%D」と入力する
・K8に「=SUM(H6:H8)/SUM(I6:I8)*100」と入力する
これは、%D = (今日の終値 - 過去5日間の最安値)の過去3日間の合計 ÷ (過去5日間の最高値 - 過去5日間の最安値)の過去3日間の合計 × 100 を表す
7.SDを計算する (3日)
・L1に「SD」と入力する
・L10に「=AVERAGE(K8:K10)」と入力する。
これは、SD = %Dの3日間の平均 を表す。
最後に各列の数式をデータ最終行までコピーして完成です。
ファーストストキャスティクス(青%K、赤%D)
スローストキャスティクス(赤%D、緑SD)
次回からいよいよシステムトレード中級編です。損切りの役割からどうぞ!
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
システムトレードとは?
では、システムトレードについて見ていきましょう!
システムトレードとは、あらかじめ決められた売買ルールに基づいて行う機械的なトレード方法のことです。過去のデータを検証し、有効な方法だと証明されたものだけが売買ルールとして採用されます。毎回同じ売買ルールで投資することが目的の為、売買ルールに従うことは絶対であり、従わなくなった時点でシステムトレードではなくなります。
投資で勝っているのは全体の5%ほどだと言われています。システムトレードにはあなたがその5%に入るためのキーがが隠されているかもしれませんよ。もちろん生半可な努力では投資で勝つことは難しいです。しかし、システムトレードを研究、検証し、投資を実践していくことで、あなたが勝つ可能性は確実に高くなっていくのです。
事実僕が今のシステムトレードのスタイルを確立するまでには2年近くの歳月を費やしてきました。それを今からあなたにお贈りするのです。しかも無料で。。。はたして僕にメリットはあるのでしょうか???(苦笑)
もしも、あなたがシステムトレードをある程度マスターし、もっとレベルの高いシステムトレードを私に伝授してくれる日がくるのなら、それが私の大きなメリットとなることでしょう(笑)
なにはともあれ、このページを最後まで見ていただければ、あなたもシステムトレーダーの第一歩をふみ出すことができますよ!
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
いろいろなシステムトレーダー
システムトレードとは、FXや日経225を取引するときの売買ルールのことです。
普通に投資する場合との違いはコンピュータを使っているかどうかではなく、いつも同じルールで売買しているかどうかということです。
誤解を恐れないで言うと、まったく違う2人の人物が同じシステムを使用し、システムトレードを実践した場合には、まったく同じ結果になるということ。
※現実には同じシステムを使用し、システムトレードを実践しても、売買する人によって結果は違ってきます。なぜならシステムトレードを使用した場合でも感情が取引に大きな影響を与えてしまうから。。。
世の中にはいろいろなシステムトレーダーがいます。コンピュータが完全に自動で売買してくれるシステムトレーダー、コンピュータは売買シグナルを出すだけで、注文自体は自分でするシステムトレーダー、コンピュータはチャートの表示ぐらいで、売買シグナルから注文まで自分でするシステムトレーダー
いずれの場合でも過去データに基づく研究や検証によって良い結果が期待できると証明された売買ルールのみで取引していることが言えます。
システムトレーダーの人間性をひとつ挙げるとするなら、どんなに成功している人、信頼できる人のアドバイスでも、鵜呑みにしない。自分で検証してみたことでないと信用しない人。そんな疑り深い性格の持ち主なんだ思います。
システムトレーダーの仕事は、とても地味な作業の繰り返しです。いつ終わるかもわからない検証をやり続ける集中力と根気強さも大切な要素なのかもしれません。結局、「楽して儲けよう!」なんて思っている人は、成功できない世界なんだと思います。
どんなことがあっても必ず成功してみせる!!私もシステムトレーダーの1人として、そんな気持ちで毎日がんばっていますよ。あなたも気合いを入れて私とがんばってみませんか?
次は過去データの入手方法です。
「実際に検証を行った結果となりますが、その内容を保障するものではありません。検証結果の正確なデータにつきましては、直接販売者様に確認を取って頂きますようお願い致します。」※参考データ FX検証実践会
ExcelVBAで自作する売買システム自動大量製造マシン
テキストの目的
・ExcelとVBAでシステム構築ツールを作れるようになること
・付属のExcelブックを使えるようになること
9種類のトレンドフォロー系のエントリー戦略
5種類のイグジット戦略
ドリームゲートFX 4つのシステムで安定運用
ドリームゲートFXの成績
・ 1月 318pips
・ 2月 272pips
・ 3月 83pips
・ 4月 -26pips
・ 5月 552pips
・ 6月 155pips
















