サブウィンドウタイプのインジケータを作成すると、名前の横に現在値が表示されます。名前横に現在値を表示しない方法です。現在値ですが、SetIndexBufferで指定したバッファの数分だけ表示されます。表示する値は各バッファの[0]の値です。バッファ[0]の値がEMPTY_VALUEの場合、表示されないという特徴があります。これを利用して表示を消したいと思います。公開しているDrawSimpleLineを使って試してみたいと思います。元のコードは過去記事をご覧ください。http://mt4program.blogspot.com/2015/10/mt4drawsimpleline_8.htmlプログラムの修正点は、各バッファのインデックス0の値は、EMPTY_VALUEにして、インデックスを一つずらしてバッファに設定してしまうことです。一つずらしてバッファに設定すると、表示も一つずれそうなものなのですが、インデックス0がEmptyValueの場合、MT4が自動的に一つだけシフトして表示するようです。SetIndexShiftでの指定は不要です。(たぶん...明確なドキュメントは見つからないのですが、動きがそのようになっています。SetIndexShiftにて表示のシフトが必要です。赤字の部分が修正点となります。・バッファにインデックスを指定するときに+1する。・インデックス0には必ずEMPTY_VALUEを設定している。・ループ範囲を一つ少なくする。・SetIndexShiftで表示をずらすの4か所です。」https://www.mql5.com/ja/articles/1365https://www.mql5.com/ja/forum/68627/unread#unreadMQL5.comを見てたら、行列計算用のライブラリが公開されているではないですか!!!!相場状況に応じて動的にパラメータを変化させるようなEAを開発する場合、多項式に対して演算が行えると、とても便利です。行列代数ライブラリ記事からの抜粋です。多項式を求めることにあります。以下のように指定されているA[degree+1][degree+1]行列、または以下のように指定されているB[degree+1][1]右側のベクトルをもつ連立線型方程式を解くことで作成されます。A[i][j]=(x[0]^(i+j)+x[1]^(i+j)+...+x[numPoints]^(i+j))/numPoints、B[i]=(y[0]*x[0]^i+y[1]*x[1]^i+...+y[numPoints]*x[numPoints]^i)/numPoints。この連立線型方程式を解くために、スクリプトを書きました(LibMatrixEx.mq4という添付ファイルをご覧ください)。このスクリプトは、多項式の外挿を実行します。多項式の値を求めて価格を予想できます。スクリプトが3つの縦線で操作されます。前の2つの縦線により分析される間隔を設定します。3つ目の縦線は、多項式が表示される最終点を設定します。チャートにスクリプトをドラッグアンドドロップして、以下のパラメータを設定します。colVLineExtなど操作を行う線、またはcolInt・colExtというチャートの線)。ここまでこんな複雑な回帰行列が計算できてしまうなんてなんて素晴らしい。あーライブラリ無いなー。GPLパッケージだといろいろ問題あるしなー。.NetのDLL呼び出そうかなー、どーしようかなーとか思っていたらMQL5.comに公開されていました。日本語スタッフの皆さま本当にありがとうございます。いっても、まだ試してないのですが、Gewinn6がひと段落したら、早速試してみたいと思います。あと、TEMA平滑化版S/RオシレータをMQL5.comアップロードしました。一つもヒットしないので・・・・。コードですが、複利運用にもいろいろ考え方があります。一つは、損切値があるPipsの場合、余剰証拠金の?%に限定するやり方です。今回は、余剰証拠金の?%に限定するコードを書きたいと思います。損切値)で、損切になった場合、余剰残高がすべて消えるロット数が求まりますので、そのロット数に対してリスク値の%を掛ける計算です。基本的には、まず、口座の余剰証拠金残高と1Pipsあたりに動くお金を計算します。あたりの口座通貨での動くお金の量が取得できます。業者の小数点桁数により1Tcik=1Pipsではないため、桁数をみてPipsあたりに変換しています。その後、計算式に当てはめロット数を算出する形です。業者の最小ロットと最大ロットを超えないように制限をかけているのと、ロット数のステップあたりに丸めて最終ロット数を計算しています。発注時ベースの金額となっているため、実際にはレートが動いて実際の損切が発生した場合、指定のリスク分ちょうどにはなりませんが、そのあたりは誤差ということで・・・。リミットは100pipsとする。桁数を見てPips値に変換する。ステップ単位に丸める。複数バーを使ったATRをFX-ONにアップロードしました。FX-ONで公開している、無料インジケータに昨日の記事で作成したインジケータを追加いたしました。[MT4インジケータ」ATR君・・ほしい値はそこじゃない!複数バーを使ったATRを表示する。ブログMT4開発日記で公開しているインジケータですちなみに、あれこれ検証してみましたが、EAを使った取引タイミングで使うのはやっぱり難しそうです。通常のATRよりはダイバージェンスがはっきりと見て取れますので、もしATRのダイバージェンスを有効シグナルとして使っている方は、お試しいただく価値ありかとは思っています。簡単に取り入れることができたトレイリングのベース値として試したところ、今作成しているGewinn6で少しだけPFが伸びました。こちらのほうがわかりやすそうな雰囲気です。雑記2015年12月10日木曜日[MT4インジケータ」ATR君・・ほしい値はそこじゃない!複数バーを使ったATRを表示する。昨日、S/RオシレータとATRの連動をやっていて思ったのですが、確かに5分足を見て取引していますが、あくまでポジションオープンするタイミングのために使っているのであり、平均1時間ぐらいは保有するイメージです。すると、ATRの値としてほしいのは1時間足です。1時間足チャートでATRを表示してその値を見ればよいのですが、取引のために、せっかく5分足を表示しているので、5分足をつかって現在位置を基準に1時間分のATRを描画することで、高速反応を目的にしたマルチバーATRを作成してみました。5Mまず、通常のATRですが、線がギザギザしていてはっきりと転換をつかめないときが多々あります。期間を長くすると、今度はなだらかになりすぎて反応が遅くなります。そこで、マルチバーATRでは、TEMAとEMAによる二つのラインを描画しています。赤い線がTEMA(α=0.1)、水色の線がEMA(α=0.05)です。予想値としてはEMA(水色)を、ダイバージェンスなどを見るときはTEMA(赤色)を使用するといったイメージで考えました。ATRとマルチバーATR(赤線:TEMA)を比較した場合、マルチバーは12本の値をとっているのにも関わらず、ほぼ5分足のATRと同じ反応を示している事がわかります。グラフはなめらかに描画されており判定として使用しやすいと思います。5MFXの教科書などでは、ATRのダイバージェンス現象を利用した天井圏や底値圏での逆張りが紹介されていますが、実際ATRを見てみるとグラフが不安定すぎて、どうとでも取れてしまうことが多々あります。そこで、具体的に赤枠内の値で見てみたいと思います。ATRでは、第1波と第2波はグラフ上に現れていますが、第3波は表れていません。マルチバーATRのTEMAでは、第3波が描画されています。その上、第1波~第3波にかけてきれいにダイバージェンス現象の発生が見て取れます。TEMAと、表示時間足より長い時間からATRを生成することで、高追従性と平滑化効果を両立した効果が表れています。このようにATRの分かりにくさを解消して、取引タイミングを計るインジケータとして作成してみました。ATRは、価格レンジをチャート化したもので、この値がトレンドと逆行し始めると、売り買い疲れの症状であるというのは直観的にわかりやすいと思いっています。ダイバージェンス現象って、EAで判定させようとすると、結構面倒なんです・・・・。バックテストでの検証ははっきりできていません。見、普通のATR使うよりははるかによさそうと思い、公開しちゃいました。FX-ON様の無料配布も、近日アップデートいたしますので、コンパイルが面倒な方はしばしお待ちください。ブログでソース公開中無料インジケータのダウンロードはこちらからソースコードはこちらから。インジケータ2015年12月9日水曜日[雑記]S/RオシレータとATRを使った逆張り考察S/Rオシレータですが、TEMA平滑化を行っても、取引のタイミングを計るのは難しいです。ATRがピークアウトすると価格の移動余力が低くなってきて転換点が近いことを示すといわれています。そこで、ATRと組み合わせての取引できないかなーとか思い昨日のチャートで確認してみました。ATR(24)とTEMA平滑化S/Rオシレータを表示しています。24の理由は特にありません。なんとなく5分足なので、x24で2時間だなーとおもっただけです。積極的に仕掛けることを前提に、積極的に仕掛けるなら、天井圏ではレジストラインが100から立ち下がった箇所、底値圏では、サポートラインが0から立ち上がったところをシグナルと仮定します。画像の赤丸・青丸の部分です。ATRでのピークアウト/ダイバージェンスと、S/Rオシレータでのシグナルが同時に発生している個所を確認します。・12チャート前半で発生している、12は、ATRがピークアウトしている状態でのシグナルです。確かにそのあと少し価格が下がっていますが、値動きが少なすぎて、ほとんど値幅をとれません。ピーク時と判断するATRが小さすぎる場合は、取引しないようが良いように思われます。・34ATRが上昇していく中でのシグナルとなります。実際には4の後、いったんの調整が発生していますが、4の時点のチャートと3の時点のチャートでは区別がつきません。ここは取引を控えるところとなります。・5このチャート唯一の買いシグナルです。ATR的には4の段階でピークアウトして5の買いシグナルにつながっています。ATRのルールで行くと買いです。・・・が、上昇中の価格で押したピークをATRがピークアウトしたといってしまってよいのかは疑問・・・・^^;;;・6再び価格が上昇して売りシグナルです。ATR的には上昇を続けている段階ですので、ここは手を出さないということになります。・7ATR的には6でピークアウトして、7で再度売りシグナルです。7のあとは取引終了時間帯ですので、ここでポジションをとるのかどうかは悩みどころです。やってみると、ATRと組み合わせるとシグナルとして成立しているのは5ぐらいですね。それもちょっと疑問が残る内容です。1日だけですので、何とも言えないですが、ほとんどがフィルタにはじかれてしまいました。逆に考えると押し目狙いには効果ありってことかもしれません。S/Rオシレータのもう一つのシグナルとして、サポートラインの100からの立下り、レジストラインの0からの立ち上がりという、どちらかというと追従型のシグナルもあります。こちらはATRとの組み合わせはどうなんでしょうね?さて、ここまであれこれ書いたのですが、ATR(24)という期間がもしかして長すぎるのかも?というのが1点、そしてATRそのものが変動が細かすぎて、とても使いにくいことが1点あります。いうことで、このATRを改善したらもっとわかりやすくならないでしょうか?明日に続きます。★相互リンク募集中★トレードステーションと株・FX自動売買で暮らす茶トラがFX検証中。人気の投稿[MT4プログラミング]MT4のチャート上に矢印を表示する。プログラムの基本を学ぼう。(6)Gewinn6をFX-ONに送信しました。このあたりで、いったんリリースします。名前の横の現在値を消す。(5)複数バーを使ったATRをFX-ONにアップロードしました。[MT4インジケータ」ATR君・・ほしい値はそこじゃない!複数バーを使ったATRを表示する。