FC2ブログ
にほんブログ村 為替ブログへ にほんブログ村 為替ブログ バイナリーオプションへ にほんブログ村 為替ブログ FX テクニカルトレード派へ にほんブログ村 株ブログ 株の基礎知識へ ブログランキング ドット ネット
 

テクニカル講座上級の部屋

ほったらかしのメタトレードで資産1億円を目指す
 
 
最新記事
お勧めサイト
今月から楽天のアフェリエイトをやっています。
サイトを経由するだけで、購入金額の1%が懐に入ってきます。
ぜひぜひ、皆様もお試しくださいね。
カテゴリ
★ アフェリエイト ★ 
今月から楽天のアフェリエイトをやっています。
サイトを経由するだけで、購入金額の1%が懐に入ってきます。
ぜひぜひ、皆様もお試しくださいね。
カレンダー
02 | 2021/03 | 04
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最強EA

最強EA 9.2

無料ダウンロード

第5回 楕円テクニカルを作ってみよう~ 

久しぶりにメタトレードのプログラム講座です。

 

題材が無いと、なかなか講義に移れないので、

今回は先日UPさせていただいた、楕円インジケータ を

この場で作っていきたいと思います。

 

楕円チャートの作り方としては、ZIGZAGチャートと同じで

高値と安値を抽出して、そこに楕円を持っていくイメージです。

 

ちなみにZIGZAGチャートはこんな感じです。

ZigZag.mq4

 

 

 

上記のインジケータでもそうですが、

 

やはり難所は

 

区間の高値と安値を抽出する

 

というところです。

 

 

そこで今回は、第5回 ブレイクアウト にも示しているMT_breakout(mt4)の、

移動平均線基準で、区間を決定し、極大極小を抽出するという部分を流用したいと思います。

 

 

 

メタトレーダで線を描いている部分は、SetIndexBufferではなく、

ObjectCreateでオブジェクトで描いています。

 

メタトレードが優れている点は、グラフとオブジェクトを

同じ座標系にリンクさせて描くことができる点です。

 

エクセルに例えて言えば、SetIndexBufferはセルのデータを参照して書かれたグラフ、

ObjectCreateはDRAWで書かれるオブジェクトのイメージです。

 

プログラミングの要としては、下記の二つのコマンドです。

 

ObjectMove オブジェクトを指定の場所に動かす


ObjectGetValueByShift  オブジェクトから値を取り出す

 

 

 

楕円オブジェクト

 

 

楕円オブジェクトのプロパティを調べてみましょう。

http://www.metatrader5.com/en/terminal/help/analytics/objects/shapes/ellipse

 

 

これを見ると、3つのバリューで決まっていますね。

 

1番目、2番目が楕円の長辺側の頂点、3番目が短辺側の頂点となっているようです。

 

 

 

最初に、長辺側をロングスパンで極大極小を抽出し、

さらに、その極地の間で、短辺側の極大極小を抽出するという、

2段構えのアルゴリズムでなんとかなりそうな気がしてきました。

 

 

ということで、さっそくプログラミングの骨格に入っていきましょう~

 

 


 

この続きは次回に

 

にほんブログ村 為替ブログへ にほんブログ村 為替ブログ FX サラリーマン投資家へ にほんブログ村 為替ブログ FX システムトレード派へ にほんブログ村 為替ブログ FX テクニカルトレード派へ ブログランキング・にほんブログ村へ

スポンサーサイト



第1回 マーケットデータの取得 






 

皆さん、いかがお過ごしでしょうか?

 

本ブログではEXCELを使ったテクニカル解析の手法を公開しています。

EXCELの利点はある程度、表計算の結果が目に見えるため、

デバックがしやすいことが挙げられます。

 

いきなり、メタトレードを使いこなすよりも、最初はロジックを徹底的に

EXCELで作り込むほうが良いのではないかと思います。

 

本講座では、私が数年かけて学んだことを、

初心者にも理解しやすく、的確にお教えしていきますので、

これを機会に、エクセルやVBAなどについても、

しっかり学んでいただければと思います。

 

NOEL  ←読む前に1クリックのご協力をお願いいたします。

 

 

マーケットデータの取得

 

 今日は基本中の基本である、EXCELを使ったマーケットデータの

取得方法について、ご紹介いたします。

 

 マーケットデータには、時間足データと、リアルタイムデータの2つがあります。

 

1)時間足データ

 

 時間足データは、マーケットのデータを時間軸に列挙したデータ系列です。

これらは基準の期間によって、日足、週足、月足などとなりますが、

データの目的としては、過去の変化の履歴となっております。

これらのデータにはリアルタイム性はなく、主にテクニカル解析に使われます。

 

 

2)リアルタイムデータ

 

 一方、リアルタイムデータはシステムトレードでは発注や、決済と行った

逐次の処理を行う上で必要な現在値になります。

 

システムトレードをリアルタイムに行うには、

これらのデータを取り扱う必要があります。

 


 

時間足データの取得

 

時間足データをEXCELのシート上に取り組むには、いくつかの方法があります。

 

1)CSVを読み込む

 インターネット等で公開されたCSVデータを直接、エクセルで読み込む方法です。

 CSVファイルが直接、取得できるサイトとしては、

 Yahoo! Finance  →  ここからゲットします。Download To Spreadsheet

や、 株価データダウンロード などがあります。

 これらのファイルをダウンロードすれば、EXCELで読み込むことができます。

 

2)HTML形式を読み込む

 その他のポータルサイトでは、時間足データはHTML形式で公開されています。

 ヤフーファイナンス

 MSNマネー

 インフォシークマネー

 

この場合は、直接エクセルにて読み込むことができないので、

「WEBクエリ」というデータ取り込み機能を使う必要があります。

Webクエリを利用してネットからデータを取込むには

 

WEBクエリの欠点としては、

・遅い

・フォーマットが各サイトで違う

などがあげられます。

 

そこで私がお勧めする方法は、カット&ペースト機能を利用して、

WEB上のデータをクリップボードに取り込んで、EXCELシートに貼り付けるのが

最も早くて良いでしょう。

これについては、また別途、伝授いたします。

 


 

リアルタイムデータの取得

 

リアルタイムデータは、YAHOOなどのポータルサイトで

有料で公開されているものがありますが、

無料のものはたいてい15分遅れなどのデータになっています。

 

完全なリアルタイムデータの取得には、証券会社のサーバー経由で、

高度なプログラミング技術を使って入手する必要があります。

 

一部のソフトで通信プロトコル(=DDE)を利用して

EXCELでリンクできるものがあります。

 

楽天RSS   ここでは日本株、為替のデータが取得できます。

メタトレーダ  DDEで為替相場が取得できます。

 

DDEの使い方については、下記のサイトを参照ください。

楽天RSSの使い方 

リアルタイムレートの取得

 


 

リアルタイム、時間足データの同時取得

 

上記のデータ入手でも全く問題ありませんが、

最近、筆者が利用する方法としては、

チャートソフトのCSVファイル出力機能を利用して、

それをエクセルに読み込む方法です。

 

楽天証券のマーケットスピードや、メタトレーダでは

CSVファイルを出力する機能があります。

 

下記のブログでは、メタトレーダでCSVファイル出力を自動化させるものが紹介されています。

 Excel トレーダー御用達?CSVファイル出力インジケータ

 

インジケータを任意の時間足表示に使うと、所定のフォルダにCSVデータを自動で生成してくれます。

 

別のソフトでデータを入手することで、

エクセル自体に負荷をかけずに済みますし、

システムの安定化も図ることができます。

 

エクセルでのシステムトレードには、

このような手法が非常に有効だと考えます。

 

 







いかがだったでしょうか?

今回の内容については、

いくつか書物が出ています。

 

そちらの方を参考にすれば、

もっともっと詳しいことが学べると思います。

 

 

【参考サイト】 新・Excel VBAで極めるシステムトレード~最強パワーアップ編 自動売買ロボット作成マニュアル~エクセルで理想のシステムトレード (現代の錬金術師シリーズ)

とあるMetaTraderの備忘秘録

 

この記事を見て、参考になったと思った方はクリックお願いします。

にほんブログ村 為替ブログへ にほんブログ村 為替ブログ FX サラリーマン投資家へ にほんブログ村 為替ブログ FX システムトレード派へ にほんブログ村 為替ブログ FX テクニカルトレード派へ ブログランキング・にほんブログ村へ

第6回 VBAでIEを起動する   

 

WEBアプリを作る目的ですが、システムトレードやブログの更新などをするようになると、

インターネット上のホームページにアクセスすることが頻繁になってきます。

たとえば、このブログですが、チャート表示してアップロードするのも

毎日やっていると、大変なので自動化しています。

 

こういう単純作業は、累積するとかなり大きな時間になるので、

これらの時間を、お金で換算したとすれば、非常に大きなものになります。

 

それこそ、投資に匹敵ぐらい・・・

 

このVBA講座というのは、これらの煩わしい作業を自動化して

合理化を行うという点で、投資手法の一つとして、紹介していきたいと思います。

 

 


 

 

簡単なログインバッチの作り方

 

まずは、VBAを使って、インターネットのホームページに自動アクセスすることから

はじめてみましょう!

 

ログインするための、手順を示します。

 

1)インターネットエクスプローラを起動する。
2)ログインIDを入力するページを表示する。
3)ID、パスワードを入力する
4)ログインボタンを押す

 

EXCELを開いて、

VISUAL BASICのエディターを開いてください。

 

 

何をいきなり高度なことを言うてんねん・・・・

いろんなクレームが出るかもしれません。

 

しかし、これぐらいはできないと、後はもっと洒落にならなくなります。

 

頑張ってついてきてください。

 

さてさて、いきなりプログラムを組んでもよいのですが、

WEBアプリの仕組みを説明する上で、もっと簡単にできる方法があります。

 

それは、

 

イミディエイトウィンドウです。

 

VBのメニューの中から、イミディエイトウィンドウを選んでください。

 

画面の下に空白のウィンドウが出たと思います。

 

「Immidiate」 とは 「ただちに、すぐに」という意味でして、

ここに記述することで、簡単にVBAを実行することができます。

 

それでは、次に進みます。

 

以下の記述を入れてみてください。

ただし入力は1行ずつ行い、必ず改行して各コマンドを実行してください。

 
Set IE=CreateObject("InternetExplorer.Application")+改行
IE.Visible = True+改行
 

 


CreateObjectによって、ウィンドウズを構成している窓(=COMコンポーネント)を参照して

新しい窓(=インスタンス)を作成します。

 

図示するとこんな感じです。

IEというのは。。。。

 窓の識別するための名前です。

 

以降は、オブジェクト変数IEが、インターネットエクスプローラ自体だと

思ってください。

 

詳しくは下記のページを参照ください。

CreateObject 関数 (Visual Basic)

 

インターネットエクスプローラーはWebブラウザクラスという組織に属しています。

詳しくは下記のページを参照ください。

WebBrowser クラス

 

このオブジェクトには、いろいろな指示(=メソッド)を与えることができます。

最初に入力していただいた、IE.Visible=Trueは、プロパティのひとつです。

窓の状態を示しており、ここにTrueを代入することで、見えるようになります。

 

さてさて、白紙のウィンドウを眺めていても

何も面白くありませんので、ここにログインページを表示させましょう。

 

アドレス欄に何も入っていませんのでURLを指定します。

次の楽天証券のURLを指定してあげましょう。

https://www.rakuten-sec.co.jp/web/fx/rfx/login.html

 

イミディエイトウィンドウに、以下を入力してみてください。

 

 
IE.Navigate "https://www.rakuten-sec.co.jp/web/fx/rfx/login.html" +改行
 

 

そして、ENTERを押せば・・・

 

はい

 

ログインウィンドウが出ました。

 

 

どうでしょうか?

ちゃんと出ましたでしょうか?

ちゃんと出ない場合は、IEオブジェクトがきちんと開放されていないのかもしれません。

 

VBAから直接、エクスプローラを動かす方法について

なんとなくは、理解いただけましたでしょうか?

 

次回は、ログインバッチによるログインの方法を伝授いたします。

 

今回の記事がお役に立ちそうと思われた方は、ブログ人気投票に投票をお願いいたします。


 

参考記事

 

にほんブログ村 為替ブログへ にほんブログ村 為替ブログ FX サラリーマン投資家へ にほんブログ村 為替ブログ FX システムトレード派へ にほんブログ村 為替ブログ FX テクニカルトレード派へ ブログランキング・にほんブログ村へ にほんブログ村 株ブログへ にほんブログ村 株ブログ 株 デイトレード・スイングへ

第3回 アルゴリズム設計 

システム設計について考えていくことにする。

ひとまず、売買サインについてはブレイクアウト

を検出するところから始まる。

 

フローチャート

システムのフローをざっと書いてみた。

まず相場データの更新を行い、次にテクニカル解析を実施する。

売買サインが出なければ、これを繰り返す。

これを第1のループとする。

 

次に売買サインが出たら、新規の注文を入れる。

注文が約定するまでの間、第2のループを形成する。

 

注文が約定したらストップロスオーダーを入れる。

このときストップロスオーダーと同時に、逆ポジションの注文も

同時に入れておく。

 

変動の激しさに対応するために、この注文はすべて

IF?DONEオーダーで行う。

 

 

次はいかに利益確定を行うかである。

上からの続きである。

このループでは既にポジションを確定しているので、

利益・損益をチェックすることが重要である。

もし、利益が目標に達したか、ロスカットにかかった場合は

決済を行う。

 

またテクニカル解析側から、反対の売買サインが出た場合には、

現在値を目標値に修正して、同じく決済を行う。

 

万一、ストップロスオーダーが掛かった場合にも、

プログラミング売買の方で、既に反対ポジションが

確保されているはずなので、どっちのポジションであっても

それは気にしない。

 

そして、現在のポジションがなくなれば

また最初のループに戻るのである。

 


 

 

よくよく考えてみれば、ポジションっていうのは所詮2つしかありえないので、

プログラムを書こうとすると、しばしば頭の中がこんがらがってしまう。

もっと、簡単になるよ!っていうこともあるのであるが、

今のところは、この設計図に基づいてプログラミングを行うことにする。

 

フローチャートをしっかり書いておくことは、

全体のシステム設計には重要である。

 

 

この記事を見て、参考になったと思った方はクリックお願いします。
ロリポップ!

にほんブログ村 為替ブログへ にほんブログ村 為替ブログ FX サラリーマン投資家へ にほんブログ村 為替ブログ FX システムトレード派へ にほんブログ村 為替ブログ FX テクニカルトレード派へ ブログランキング・にほんブログ村へ

第4回 VBAでオブジェクト変数を駆使する 

今日からエクセルVBAを使ったWEBアプリの作り方を紹介しようと思います。

もちろん自分のための復習も兼ねて、勉強のノート代わりにするつもりです。

 

エクセルVBAマクロについては専門書籍に譲るとして、

あまり書籍等で取り扱われていない内容について述べたいと思います。

 


 

【例題】

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True

 


 

今日のお題はこれです。

これはエクセルVBAでインターネットエクスプローラを開くというVBAマクロになります。

 

ここで

Set

という記述に注目してください。

 

別に以下のように記述してもいいのではないかと思いませんか?

IE=CreateObject("InternetExplorer.Application")

 

しかしながら、これを実行すると、「オブジェクトが必要です」というエラーになります。

 

これは変数とオブジェクト変数の違いに起因しています。

 

これからVBAというものになじみの無い方に、言語のお約束を

説明していかなければなりません。

 

オブジェクト変数

変数の型というのは、一般的に知られているもので

整数 int , 小数 double, 文字列 string   などがあります。

 

これらは単に数値を持つ箱のようなものでしたが、

近年、普及してきたオブジェクト指向型言語では、変数の機能をさらに拡張した、

オブジェクト変数という概念が新しく加わったのです。

 

オブジェクト変数、それは例えて言うなら、

車みたいな物です。

 

箱は単なる入れ物に過ぎませんが、車は積んだ物を運んだりすることが出来ます。

つまり箱は単体では何もできないですが、車は単体で機能することができます。

 箱

images2

 images

別に車でなくても、電子レンジや冷蔵庫でも構いません。

それぞれが、調理したり、冷蔵したりする機能を持っているのです。

 

そういう物体(=オブジェクト)を変数として定義できるようにしたのが

オブジェクト変数なのです。

 

さてオブジェクト変数には、二つの概念があり

一つはプロパティ、

もう一つはメソッドです。

 

プロパティというのは、車で言うならば、

ハンドル、タイヤ、ガソリンなど

車の部品のことを指しています。

 

メソッドというのは、

前進、バック、停車など

車の操作のことを示しています。

 

つまりオブジェクト変数は、その物体の形成と機能を一つに集約した

ものということです。

 

さてさて、なぜそんなややこしいことになってきたかというと、

それは、パソコンのOSが進化して、パソコンの中の世界が

実体の世界のように仮想の物体の集合体になってきたからです。

 

パソコンの中には、窓がたくさんあります。

それはワープロだったり、音楽プレーヤだったりします。

 

そして、その窓の中にも再生ボタンがあったり、音量調節のスクロールバーがあったりします。

 

これらはクリックしたり、動かしたりすると何らかの機能をしており、

あたかも物体のように機能するわけです。

 

これらをプログラムを作る人が一から作り上げる時代もありました。

しかしながら、WINDOWS時代になってからは、

これらの部品をいちいち作る必要がなくなりました。

 

つまり、OSにあらかじめ用意されたものを、引っ張り出してくるだけで、

そこそこ統一されたデザインや機能を引き出せるようになったのです。

 

それがいまの世の中のプログラム技術なんですね。

ずいぶん進歩したものですね。

 

次回から、VBAのWEBプログラムの作り方について

紹介していきます。

FC2カウンター
メインコンテンツ
リンク
プロフィール

motochan

Author:motochan
【ご挨拶】

このブログのモットーとしては、やはり初心者のためのテクニカル講座という分かりやすさを重視したいと思っています。ちょいちょい脱線めいた話や自虐ネタを満載していますが、さらりと受け流していただければと思います。リンクや画像については、個人の使用の範囲と考えておりますが、万一、無断転用とかでお叱りを受ける場合には、すみやかに削除いたしますので、ご指摘いただきたく思います。
詳細はコチラ>>
ブログ村