BB_Indicator.mq4

#property copyright "Copyright 2017, WIZSYS Networks Corp."
#property link "https://www.wizsys.net/"
#property version "1.01"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
#property indicator_width1 1
#property indicator_width2 1
//--- input parameters
extern int bb_peirod = 38; //ボリンジャーバンドの周期
extern double bb_deviation = 2.0; //ボリンジャーバンドの偏差
double up[];
double down[];
// Custom indicator initialization function
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,up);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexLabel(0,"Up Arrow");
SetIndexBuffer(1,down);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexLabel(1,"Down Arrow");
//---
return(INIT_SUCCEEDED);
}
// Custom indicator iteration function
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int limit = rates_total - prev_calculated;
if(prev_calculated==0)limit--;
for(int i=0;i<limit;i++)
{
double bBU_value = iBands(_Symbol,0,bb_peirod,bb_deviation,0,PRICE_CLOSE,MODE_UPPER,i);
double bBL_value = iBands(_Symbol,0,bb_peirod,bb_deviation,0,PRICE_CLOSE,MODE_LOWER,i);
if(bBU_value < High[i]) up[i]=Low[i]; else if(bBL_value > Low[i])
down[i]=High[i];
}
//--- return value of prev_calculated for next call
return(rates_total-1);
}

ソースさらしは恥さらし

恥を覚悟でソースコードをさらしてます。さらすことによってやる気を出そうと思います。下は昔読んでときどき思い出す本です。この中の教えに小さな機能を別々に作って組み合わせて使うこととありました。一つのインジケーターに何でもかんでも合わせて作るのは良くないです。パラメータが10個もあるようなインジケーターを誰が使いたいですか?大失敗のOSマルチックスMULTICSの反対の概念としてユニックスUNIXという素晴らしいOSが生まれたのです。小さく単純なものを作りたいです。

都合の良いように考えるのが常

さらに気付いてしまったこと。それは恥ずかしいコードをさらしてしまったということ。勇み足とはこのことか。もしかして待てよこの意味するところは何なのかを考える余裕がなかったんだと反省することしきり。思えば先人が考えぬいてのインジケーターが綺羅星のごとくあるわけでちょっとの時間でまともなものが出来るわけがない。甘く見すぎ。猿の実験でもランダムに出て来る餌とボタンの関係をしきりに考えるらしい。聖杯探しの旅は終わらない。あるのかないのかさえも判然としないんだけどプログラミングにちょっと本気出さなくてはと思います。

バックテストではわからない

フォワードテストで気づいてしまった。自作インジケーターは嘘をつくということ。なんと最後の矢印の位置をチャートが進むにつれて都合よく変えてしまうのです。見えないバグが本当のバグなんだと改めて思い知ることになった。

ロジック的にはUpとDownの矢印が交互に出るように書いたつもりが同じ向きが2連続して出て再読込をすると1つ目が消えているという症状。バックテストでは気づかなかったが後から見るとそれらしく見えるのです。それらしく見えるインジケーターはそれらしく見えるだけでEA化は無理だと分かる。見えないバグがなくなるまで修正しなければならないことになりました。

追記:頭を冷やして考えるとバグではない。インジケーターが示すことが出来るのは「先のことは分からないけど現時点ではこうです。」なので理屈から言えば当然の結果なのです。魔法のように見える手品には種がある。バグなら修正できますがバグでないなら修正できないです。学習機能なしインジケーターの限界なのだと思います。

MQL4 Tutorialだけじゃきつい。

偉そうにMQL4 Tutorialを参考にプログラミング始めようみたいなこと書いたんだけどハッカーはいざしらずプログラミングの素人には無理げじゃないと思います。そこでKindle版なんだけど豊嶋久道氏の「新MT4対応 FXメタトレーダープログラミング入門」を紹介しておきます。結構わかりやすいんじゃないかなと思います。

インジケーターの設定値について

これは反省なんだけどインジケーターに独りよがりの特殊な設定値を工夫してもあまり意味がないような気がしてきた。もともとだめなEAで無理やり利益を出せる設定値をさがすようなものなんだと思う。大多数のトレーダーが見ているインジケーターの設定値と同じものを見ていないと相場の動きとのコミュニケーションが取れない。チャートの向こう側にいる大勢のトレーダーと同じものを見つつ解釈の違いによって優位に行動しなければならない。同じチャートを見つつその他大勢と行動が一緒では利益を上げることはできないという点が難しいところなんだと思う。

チャートの向こう側が人間とは限らない。AIかも知れない。AIのロジックは人間に解析不能だというが人間のロジックだって解析不能なんだからそれだけAIが人間に近づいてきたということだと思う。解析不能VS解析不能だがビッグデータ処理能力が人間よりAIの方が上というだけ。相場の世界にAIが増えてくればビッグデータ処理能力の優位性も消える。高性能のアルゴが市場で常勝を続けることは難しいのと同じだと思う。生き残ることができるのは圧倒的性能を保つために進化し続けることができるものかはたまたゴキブリやカブトガニのように小さな優位性を保ちつつ同じ手法を守り続けるかどちらなのだと思う。話があらぬ方向に脱線したところでおしまい。

 

複数の時間軸で見ること

1分足、5分足、15分足、30分足、1時間足、4時間足、日足、週足、月足によってその時々のチャートの様相は違っている。どの時間足の移動平均線からσ=2を足一本できちんと反発するのかは判然としない。1分足から順にたどれば、ほぼいずれかの長時間チャートを意識して反発しているように思う。1分足を見ているとσを大きく逸脱した場合には必ず小さな反発が見られるがまれに反発らしい動きのないまま連続して逸脱する場合にどこで反発するかの予想値を5分足で知ることができる。5分足のσ=0ライン下で踏ん張るのか5分足のσ=2をも突破して反発しない場合は15分足でという風に長い時間を見て判断するのである。

小さな波は大きな波のゆらぎに過ぎないが、ちりも積もれば山となる。小さな波を利益に変えることができるならエントリーチャンスは一番多い。兼業であるなどの理由でチャートを頻繁に見ることができない場合には1時間足以上のチャートでチャンスは少ないが大きく取るというのも1つの手法であると思う。1時間足とでσを連続して逸脱する場合があるので4時間足日足を見て連続がいつ止まり反発するのか見当をつけることができる。どこまで下がり続けるのかるのかどこまで上がり続けるのかを予め予想することができれば不安は多少改善される。自分のエントリータイミングを把握するチャートより長い時間軸のチャートは必ずチェックしたいものです。

明けまして

おめでとうございます。2018年も2日からチャートは動き始めました。トレーダーの皆様に於かれましては元気にトレード開始したことと思います。サイト管理人の私は風邪気味で本調子ではありません。インフルエンザも流行っているようでお体を大事にして励んでくださいませ。リンク集にbitFlyerを追加しました。TitanFXやTradeviewではビットコイン入出金ができます。昨年ビットコイン送金するためにbitFlyerとUpholdに口座を開きました。FX口座に入金しないでそのまま持っていたら20倍くらいになったと思います。たられば話をしても仕方ないのですがビットコインの口座をひとつ作っておくと海外送金が格安でできますのでオススメです。

損切りしない手法

損切りが大切だと誰もが言う。本当にそうだろうかと次の記事を読んで疑問に思った。ZaiFX!の2015年の記事「資産7600万円超で某掲示板でも話題沸騰!爆益トレーダーの損切りしない手法とは?」超低レバレッジで含み損を耐え抜き利確のチャンスを待つという手法らしいです。この記事を読んで超低レバレッジであることの条件は関係ないのではないかと思いました。

レバレッジがある程度高くても必要証拠金が資金に比して超低い割合であれば同じように含み損を耐え抜き利確のチャンスを待つということが出来るからです。しかもスワップ金利がプラス方向への売買に徹すれば外貨預金しているような状態になります。USD/JPYでは買いのみEUR/USDでは売りのみのエントリーをし短期間での利確に失敗したら金利を得ながら保有し続けて利確のチャンスを待つことができます。

これはトレード手法よりリスク管理のカテゴリーに属するものだと思います。結局のところ資金量とリスク管理の問題だからです。下に参考に本日の5つの海外FX業者スワップ金利を載せておきます。USD/JPYをレバレッジ100ロット0.1で買った場合にはレバレッジ×ロット=10なので下記の数値に10倍した金利が保有1日で付くことになります。USD/JPYが現在1ドル110円で買ったとするとTitanFXでは必要証拠金11,000円当たり35円70銭の金利が付くという計算になります。但し11,000円が資金量の1%にあたるとすると口座には110万円がなければなりません。

USD/JPY Long Swap

TitanFX 3.5700

Tradeview 2.3000

MiltonMarkets 2.1000

ICMarkets 2.0900

FxPro 1.8643

UER/USD Short Swap

TitanFX 3.2300

Tradeview 3.2000

MiltonMarkets 3.038026

ICMarkets 4.87000

FxPro 3.3278

 

資金量とリスク管理

資金量が少ないとリスク管理ができません。トレードが確率的なもので優位性を確かめるにしても大数の法則が適用できるくらいの回数が必要です。例えばレバレッジ100でロット0.01でUSD/JPYを取引するのに現在のレートが110円だとすると必要証拠金1100円となります。この場合極端な話ですが資金が1100円しかないとするとスプレッド分マイナスになるので買い注文を入れたとたんに残高がスプレッド分マイナスになり価格変動を待たずに口座は飛びます。11,000円ではどうでしょう。10回近くトレード出来そうです。でも10回では平均の意味がなく運の要素が大き過ぎて優位性は確認できません。11万円なら100回分です。11万円の資金に対して1100円は1%です。どんなに下手なトレーダーでも100回連続負けることは難しいのでなんとかトレードを続けられそうですね。

最低ロットの必要証拠金に比して資金が少ない状態でのトレードは高リスクです。タートルズでもリスクに晒していいのは1回のトレードで3%までとしているようです。1%ずつ3回までエントリー可能というふうにも考えられます。1回のトレードでの利益幅と損失幅が同じとすると勝率50%でトントン。勝率50%以上ならばそのトレード手法に優位性があると言えるでしょう。利益幅と損失幅の比を4:1とすると勝率20%でトントン。逆に1:4では勝率80%でトントンです。コツコツ1取ってドカーンと4取られても勝率80%以上なら資金は増えていきます。話の焦点がぼけてしまい勝率ばかりにこだわってもダメなんだということの反省になってしまいましたが、とにかく資金が少ないとリスク管理ができないということは分かると思います。