今回は【田平雅哉のFX「スイングトレード」テクニック】で紹介されているテクニカルを改造して検証してみました。
本の内容は、Macdの性質やストキャスの性質、ローソク足の性質などを詳しく書いてあり、その組み合わせで利益が出るというもの。
検証といっても、ほんの表面的なところをパクりどんなもんかなぁ~程度に調べてみただけです^^;
どのようなロジックにしたかというと、トレンドは移動平均線(200日)の方向で決めます。
次にMacdとストキャスの条件でサインを決めます。
トレンドとサインが 1 になったら買いでサインが -1 になったら決済といった感じで取引します。
もちろん、一つのバーで2回取引しないようにしておきます。
シグナル判定を次のコードのようにしました。
double ma_1 = iMA(NULL, 0, 200, 0, MODE_SMA, PRICE_CLOSE, 1); double ma_2 = iMA(NULL, 0, 200, 0, MODE_SMA, PRICE_CLOSE, 2); double macd_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1); double signal_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1); double sto_1 = iStochastic(NULL, 0, 42, 3, 3, MODE_SMA, 0, MODE_MAIN, 1); int trend = 0; if (ma_2 < ma_1) trend = 1; if (ma_2 > ma_1) trend = -1; int sign = 0; if (macd_1 > signal_1 && macd_1 < 0 && sto_1 < 15) sign = 1; if(macd_1 < signal_1 && macd_1 > 0 && sto_1 > 85) sign = -1;
AUDJPYの一時間足で、2000年から七年間をバックテストした結果、勝率100%でした。しかし、もっと使えるロジックにする必要があるようです・・・。
上記のシグナル判定はほんと表面だけなので今後よりパワーアップしたいと思います。
最近たくさんの反響があり、
とてもうれしく思ってます(^0^)/
ありがとうございます!!
これからも、もっと有益な記事を公開していきたいと思ってますので、
コメントなどどんどん書き込んでくださいませませ^^;
すごい!あの田平さんのロジックを自動売買化されたのですね?
このソースは公表されないのでしょうか?
田平さんの本を読んでみましたら、
スローストキャスティクス(42日)を
採用しているように思いました。
上記のiStochastic()は、スローではなく、ファーストストキャスのような感じが
するのですが、書き方は、42,42,42で書いても同じ結果がでるのでしょうか。
マーサーさん
ご指摘ありがとうございます。
スローストキャス(42日)は、
42,○,3がよさそうですね。
修正します。
3つ目の数字を1にするとファストストキャスになるようです。
ありがとうございました!
慶次さん、はじめまして。
この記事を拝見して、田平雅哉のFX「スイングトレード」テクニックに興味を持ったので本を購入してみました。
慶次さんの公開されてるロジックで試しにEAを作成してみましたが、
AUDJPYの一時間足、2005.01.01~2007.12.31のバックテストで32勝13敗でした。
2000年から七年間の勝率100%のロジックは、Macdとストキャス、移動平均線200日の他にさらに何か加えられていますか。
話は変わりますが、VolAveの販売や頒布の予定はありませんか。
今後ともよろしくお願いします。
よっし~さん
こんにちわ!
勝率100%のものですが、他にフィルタなどは追加しませんでしたが、
取引回数が極端の少なく実用的では無かったです^^;
VolAveも検証の結果、運用ストップしてしまいました–;
公開・・・検討してみます^^;
慶次さん、こんにちは。
お返事ありがとうございます。
こちらのページはEA初心者の僕にとっては教科書のような存在です。
とても勉強になります。ありがとうございます。
> トレンドとサインが 1 になったら買い
これを行うために買いの条件に
if(trend == 1 && sign == 1)
{
このようにしましたが、
これでなぜ動作するのかふと疑問に思いました。
if(ave2002 < ave2001) ならば trend=1と言っているだけで
trend=1 ならば if(ave2002 < ave2001)とは言っていないのに
なぜ買いの条件が動作するのかと思いました。
それと、
MACDとストキャスに
extern bool Use_MACD = TRUE;
extern bool Use_STO = TRUE;
のようなスイッチをつけたい場合、買い条件で
if(Use_MACD == TRUE && Use_STO = TRUE)
{
if(Use_MACD == TRUE && Use_STO = FALSE)
{
if(Use_MACD == FALSE && Use_STO = TRUE)
{
if(Use_MACD == FALSE && Use_STO = FALSE
{
の4種類を場合わけして書いていますが種類が増えてくると大変です。
もっとコンパクトに書ける方法はありませんか。
最後に、たくさんのEAを作成したくさんのEAに触れられていると思いますが
慶次さんが実際に運用されているEAはどのようなものでしょうか。
自作、有料、フリーとすべてひっくるめて答えられる範囲で教えていただけないでしょうか。
是非、参考にさせてください。
質問ばかりですみません。
よろしくお願いします。
よっし~さん
こんにちわ!
>if(ave2002 < ave2001) ならば trend=1と言っているだけで
>trend=1 ならば if(ave2002 < ave2001)とは言っていないのに
>なぜ買いの条件が動作するのかと思いました。
ave2002 や ave2001 は、平均線の2つ前の値と1つ前の値が入っています。
これらの値はレートによって計算されていて、それを比較して
trendに数値を入れています。
trendが1となった場合、更に平均線の比較をする必要がないですね^^
その他のご質問は近いうちに記事にしますね^^;