BBand stop 改
今回の改造版はここにあります。元はここでDL出来ます。
DL Pass: kaikai
BBand stop って順張り系のインジケータなのですが。。。。。。これ単にボリンジャーバンドの+−k*σで反転するインジケータ
ですが(本当はもう少しテクニックを使っています)、+ k*σで反応して上昇トレンドにならずに、逆トレンドの発生初めの可能性
も大きいのです。というのも+k*σで反応後-k*σまでは上昇トレンドのように動いてしまいます。これσが大きい時に起きると更に酷くな
ります。(多少改良されていますが効果は薄いようです)
また、上昇トレンドが続いて、下降トレンドに移行する所も-k*σにタッチするまで逆トレンドを示してしまいます。
という事で改良してみました。改良はスレッショルドの見方の改良です。最初-k*σ と少し離れた-m*σを使ってみましたが、上手く
いかずに、もう少し考えて 別期間のσを使えば・・・結構ましな反応をしてくれる事がわかりました。ただこれσが小さな所では
元の短所が現れやすいので(レンジ相場の可能性が高いので仕方ないですが)注意が必要です。
今回のインジケータで使われている短い周期のボリンジャーバンドの値を小さくする程反応が良くなりますが、せっかくのボリンジャー
バンドの良さである緩慢さが無くなり、雑音を拾いやすくなるので使いやすい(狙いやすい)トレンドに合わせておくのが手です。
*青色四角が反応が良く上手くいっているパターン
*茶色が反応が良すぎているパターン
*今回見やすいように、改良版は縦方向にオフセットさせています。
次回は元のボリンジャーバンドの改造版かなと思っています。
#本当は、これの方が先の方が良かったのかも?
なんぴんトレード改造(案)
さてさて、今更なんぴんトレードとは・・これの難しい所は、
1)買い足し、売り足しを行って買値を下げ(売りを上げ)とする所で、どこまで足していったらいいの?
2)買い足し方、売り足しの仕方は、どういった数量を投入していけばいい?
3)1)2)と絡むのですが、ロジックをかなり考え込まないと資金がかかり過ぎる。
4)なんぴんといいつつロスカットが必要そう?
ざっくりこんな所でしょうか。
これの改良方法について少し考えたので書いておきます。
(実は、この方法を上手く使うとなんぴんトレードを改造して通常トレードのロジックに変更も
可能なんです。)
<<ここは前準備>>
(1)普通になんぴんトレードのEAを考えます。最初は3)4)については考えません。
(2)これでバックテストを行います。ここでEA内部になんぴんのLot数、1回の売買回数、トレード
時間等を集計させるプログラムをしこんでおくと楽だと思います。
(3)上記結果を集計して、一まとまりのLot数、トレード回数等を解析します。するとそのEAで必要な
最大Lot数、最大売買回数等がわかります。
<<目的のEA作成>>
上記、前準備の解析を見て、資金を考えなければOKってなっていればまずは最初の段階をクリアです。
資金なんか余裕、ってなればこれでEAは完成・・・・っておい!
世の中そんなに甘くはなく、大抵はとんでもない資金が必要なのがわかります。
ここからが、ポイントです。上記解析結果を見ると・・最大までの最初の方のトレードをバーチャル
トレードにしておいたらどうでしょう? つまり目的の資金で収まる回数目から実際のトレード
をする訳です。(なんぴんの買い(売り)足しの何回目からか実際のトレード) で決済は。。。
本来最初のバーチャルトレードを含めた決済ポイントでも良く、最初のバーチャルトレード分は
含まない決済でも良いと思います。当然最初のバーチャルトレード分を入れて考えた方が
利益は上がるのですが・・・。
ただこれでもなんぴんの難しさが無くなった訳では無く、最初に見たデータでは上手くいきそうな
EAというだけで、なんぴんトレードの欠点は残りますが、少なくとも最初に書いたEAよりましな
EAになっている確率は高いです。ただこれはエントリーポイントも極端に減ってしまうので、いい
のかどうかはわかりませんが、取り合えずの案という事で。
#ここで最初は最大取引回数付近で1回にしておけば、普通の取引ロジックになります。
今回はこれでおしまい。
サイコロジカル改良版
今回のインジケータはここに置いてます。
DL Pass: Psyco
今回のインジケータは、隠し味的ツールです。
私はEAを書くとき、このインジケータも入れる事が多いです。
最後の詰めで、改良出来る事が多いですので使われて見る事をお勧めします。
具体的にはある条件でエントリー(決済)する場合、天井付近か底付近かを
最終判断に入れるような使い方です。(エントリー(決済)付近に更に良い
エントリー(決済)がある可能性がわかります)これで少なくとも天井と底
を全く逆でエントリーしてしまう可能性はかなり減ります。
ただオリジナルのインジケータは少し反応が遅くかつ、緩慢になりやすく、
本来反応してもよさそうな所で反応しなかったり、とオリジナルは少し非力です。
これを少しでも反応を早く、鋭くしようとしたのが、今回のインジケータです。
中断がオリジナルインジケータで、下段が今回のインジケータです。
水色の縦のラインの部分を見るとわかりますが、オリジナルで反応出来ない部分でも
反応しています。ただ赤のラインのように天井、底の途中でなるのは仕方ないですが、
少なくとも天井、底を逆に考えてエントリー(決済)してしまう可能性は減る可能性
が高いです。
改造内容は、オリジナルのサイコロジカルは値幅を見ていないので考慮するように
して、また時間方向に重み付けを行って計算しています。
参考に、オリジナルと改造版のメイン部分です。
//サイコロジカル オリジナル
double Phy(int PPeriod,int CalcDay){
int i;
double plus,sum;
plus=0;sum=0;
for(i=0;i0){
plus++;
}
sum++;
}
if(sum==0){ return(0);} else { return(plus/sum*100);}
}
と書いてて思いつきました。これで抵抗線、支持線をひかせてみると、面白いかもしれませんね。
//サイコロジカル 改造版
double Phy(int PPeriod,int CalcDay){
int i;
double plus,sum,diff;
plus=0;sum=0;
for(i=0;i0){
plus+=(PPeriod-i)*diff;
sum +=(PPeriod-i)*diff;
} else {
sum +=(PPeriod-i)*diff*(-1);
}
}
if(sum==0){ return(0);} else { return(plus/sum*100);}
}
「蕩れっど」君の開発中の途中結果
なんとなくよさげかと思ったら、Max Drawdownが大きすぎる。
取りあえず半分位にしないと。
<>
通貨ペア EURUSD (Euro vs US Dollar)
期間 5分足(M5) 2011.01.02 21:50 - 2012.08.31 20:54 (2011.01.01 - 2012.10.16)Total net profit 54180.10
Profit factor 2.17
Maximal drawdown 35841.80 (6.80%)
Total trades 1265
Profit trades (% of total) 793 (62.69%)
Loss trades (% of total) 472 (37.31%)<<独自集計>>
含み損益
Max All Gain = 5434.4
Min All Loss = -36561.8
Max Buy Gain = 5660.2
Min Buy Loss = -36561.8
Max Sell Gain = 2666.1
Min Sell Loss = -9172.8トレード時間
Profit Max 0000.00.03 01:40
Profit Ave 0000.00.00 04:31
Profit Min 0000.00.00 00:05
Loss Max 0000.00.03 08:45
Loss Ave 0000.00.00 14:16
Loss Min 0000.00.00 00:10
MA改(Trendっぽい対応)
今回のインジケータ君、はここに置いてます。
DL PASSWD:MATREND
今更、MAをどう改造するか。 あまり改造するとMAの良さ?(単にチャートの見え方を
変えているだけという見方も)が無くなるので今回はすこーしの改造にしています。
と思ったら、見た目のいいMAが既にあるではありませんか(^^
なんか上昇、下降が色が変わっていい感じです。(有名??)
MA IN COLOR
このインジケータ君ソースを見るとわかりますが、1つ前から大きくなったら、小さく
なったら、変わらなかったらで色を変えています。
MAの期間と値動きによってはMAの宿命でノイズが多くなります。(反応を良くするとノイズが増えるというジレンマです)
細かいノイズを無くそうと、何回連続して同じ変化をしたか+αなロジックを追加したものを追加表示させてみました。
なんとなく、小さなトレンドっぽくないですか(^^; ただ遅れは大きくなってしまってますが(本末転倒?)
連続回数を自動調整したものが・・・ってかなり面倒&試行錯誤しそうなので、作成していません。(たぶん私には無理かも)
後、反応にスレッショルド幅を持たせる方法も考えましたが、あまり変わりそうもないので実装していませんw
MT4 StrategyTesterのOrderSelect関数の不思議?
いきなりですが、MT4のStrategyTesterのバグと思われる現象がありました。
OrderSelect関数が上手く動作しない場合がありました。尚Build432でも残って
いるのでまだ解決されていない気もします。(FXCM用だけかもしれません)
#プログラムの他の部分とも絡んでいそうで、プログラム依存があるのかもしれません。
#最後にも書きましたが、これは仕様(最近の?)かもしれませんwww
以下のような関数で、strategyTesterで指定MagicNumberの買いまたは売りの全てのポジションを決済します。
void BuySellClose(bool BuyFlag, bool SellFlag){
if(BuyFlag || SellFlag){
for (int i=0; i
でこれを実行した結果の一部が以下です。
これを見るとわかりますが?、ポジションの一部が残ってしまっています。
ただ、これが発生するケースがわかっていません。
で決済だけなら、以下のように書けばこのバグは回避出来ます。
void BuySellClose(bool BuyFlag, bool SellFlag){
if(BuyFlag || SellFlag){
int i;
int BuyCount=0,SellCount=0;
while(true){ //<−ここがポイント
BuyCount=0;SellCount=0;
for (i=0; i
ポジションが無くなるまで無限ループってやると上手くいきます。
このバグはOrderSelect関数の動作から考えると、StrategyTeserのバグ(仕様???)で
実際のサーバーの動作では問題がないのでは?と思ったりしています。
後日談・・・というかここまで書いてちょこっと確認
mql4.comを見てみると・・・・while(残数チェック)と同じような事をやっているのがあった・・・これって仕様だったの??????
でも、最初のような記述方法のもある??? 単に実時間で、ペンディングされているオーダーの時間関係が無い為の対応????