りな
カギ足の自動売買の作成方法
こんにちは。
エクセルのVBAを用いてカギ足の自動売買を作成しようとしているのですが、VBAのプログラムが思いつきません、、、。
ヒントでも結構ですので教えていただけますでしょうか、、、?
よろしくお願いします。
2020年06月11日
アップロードされたファイルにはウイルスチェックを行っておりますが、未知のウイルス等に感染されている場合がありますので、アップロードされたファイルのご利用はご注意ください。
また、取引パスワード等の重要な情報を投稿内容に含めないようご注意ください。
なお、アップロードされたファイルの利用や投稿内容によって、投稿者自身や他の利用者が被った損害に対して当社は一切責任を負いません。
また、セキュリティの関係上、一部コマンド等を含む内容を送信するとエラー画面が表示され、投稿ができない場合がございます。何卒ご了承ください。
岡三RSS集いの広場では、複数の単語による検索が可能です。
例)関数 and サンプル
→AND検索となり、「関数」および「サンプル」を含む検索結果が表示されます。
例)関数 or サンプル
→OR検索となり、「関数」または「サンプル」を含む検索結果が表示されます。
例)関数 not サンプル
→NOT検索となり、「関数」を含むが「サンプル」は含まない検索結果が表示されます。
※and、or、notの前後は半角スペースで区切ってください。
※単語の間を半角スペースで区切るだけだと、OR検索となります。
大野 了
りなさん、こんにちは!!
こちらはカギ足を書かれたいとの事でしょうかー?
それともカギ足の情報は、すでにあってそこから何かしらのシグナルとして、
VBAにて自動で発注をされたいということでしょうかー?
前者のカギ足を書くだけでしたらー
VBAはいらず、Excelの関数だけでも行けそうですねー
後者のシグナルからの自動発注のお話になると、
カギ足のデータの作りや、シグナルの内容が分からないと何とも・・・
もし、前者のカギ足を作成したいだけとしたら―
1.CANDLE関数で終値をとってくる
2.前日の終値と当日の終値を比較し、価格差を出す
3.価格差が閾値を超えたら、鍵の差分として使う
例)
A1:前日終値のセル
A2:当日終値のセル
閾値:50円
IF(ABS(A2-A1)>=50,A2-A1,0)
これで前日との終値との差が閾値を超えていれば、その差が出て
閾値以内であれば、0になります
4.差がある部分だけ積算していく
これでカギ足の時系列は作れると思います!!
2020年06月11日
りな
大野さん
丁寧にありがとうございます!
まだ、カギ足の情報すら作れていないのですが、分足で「山を超えたら買い」「谷を下回ったら売り」というシグナルを交互で行えるような自動売買システムを作りたいと考えています、、
また、このカギ足を作成する方法とはリアルタイムで勝手に更新されるようなものなのでしょうか。
エクセル初心者ですみません、、、。
よろしくお願いしますm(._.)m
2020年06月11日
大野 了
りなさん
なるほどー
そういう感じなんですねー!!
はい、岡三RSSのCANDLE関数はリアルタイムに足が作成されるため、
リアルタイムでカギ足が出来上がっていきます。
※イメージでは、Excelに1分間ごとに行が1つずつ増えて行く感じとなります。
山や、谷の判断としては・・・
『2行前より、1行前が高い & 1行前より、今が低い』
だと、1行前が山
『2行前より、1行前が低い & 1行前より、今が高い』
だと、1行前が谷
的な判断で、あとはそこを上か下に突き抜けたらNEWORDERで新規発注で良いと思います!!
VBAの方が確かに簡単なような気がしますがー
がんばればExcelのみでも行けるかもです!!
2020年06月11日
りな
大野さん
なるほど、、、ちょっと試してみます!
多分実際にカギ足をする時に交互に買いと売りの発注をすることもVBAじゃなくエクセルで可能でしょうか?
質問ばかりですみません😂
2020年06月12日
大野 了
りなさん
そうですねー
実際に発注する場合ですが、VBAが書けるなら
VBAにて発注を掛けるのが一番簡単だと思います!!
もし、Excelだけでやられる場合は、
1.時系列のカギ足作る
2.一日で複数の山や谷ができる
3.一つひとつの山や谷にIDを付ける(ROW関数などで)
4.一番大きいIDの山と谷を『シグナル用、山、谷』として、どこかわかりやすいセルに表示する
5.そのセルを使って、NEWORDERを実行
という感じかなーと・・・
CANDLE関数でデータがどんどん増えて最終の山谷がどんどん更新されていくと思うので
ROW関数などで作ったIDが一番大きいものが最新の山、谷と判断して大丈夫と思います!!
説明も稚拙なため、多分、言葉だけではわかり辛いと思います。
多分、いろいろと詰まると思いますので、
その時はお気軽にご質問ください!!
2020年06月12日
りな
大野さん
本当にご丁寧にありがとうございます😭
カギ足の自動売買システムを作るのに行き詰まって諦めかけていたので本当に助かります!
今から作成に取り組んでみます。ですが大野さんの言ったようにおそらくまたどこかで行き詰まる可能性があるのでまたよろしくお願いします😢
2020年06月12日
大野 了
はい、暇人ですのでいつでも!!
2020年06月12日
りな
お久しぶりです!
大野さんのおかげもあり、だいたいエクセルが完成したのでいざ今日やろうと思ったのですが、時々時刻が飛んでしまっているところが何箇所かございます。
例えば、21:25分で次がいきなり次の日の8:45だったり、15:05の次が15:15だったりします。(現在は5分足で情報を所得しております。candle関数です。)
原因とかわかったりしませんか、、、?
2020年06月15日
大野 了
お久しぶりです!!
おぉぉぉぉ!!
完成しましたか!!おめでとーございます!!
>時々時刻が飛んでしまっているところが何箇所かございます。
こちらはFCANDLEの戻りが飛んでしまうということでしょうかー?
もしそれでしたら・・・
FCANDLEの仕様が原因かもしれません。
FCANDLEは
起動時にサーバーから全量取得し、
その後は、Tickのデータを元にクライアント側で足を作っています。
このため岡三RSS起動後に5分間取引がなかった場合、
足を作るためのデータが無いため足が作成されず、
時間が飛んだように見えてしまいます!!
しかしも、わかり辛い毎に、
一度、岡三RSSを終了しもう一度起動しなおすと、サーバーから全量取り直すので、
出来高が無かった時間も足が作成されてしまいます。
ちなみに、岡三RSSを再起動すると歯抜けが無い状態になりますでしょうか?
もし歯抜けが発生しないのであれば、その時間に取引が無かった可能性があります。
しかし、一点気になるのは、21:25から翌朝まで出来高がまったくなかったという事は
流石に考えられないため、もしかしたら通信ができていない可能性も考えられます。
ちなみに、どの限月の何日のデータかわかりますでしょうかー?
データがあるやつであれば、出来高がどんなものが見てみます!!
2020年06月15日
りな
大野さん
今少しいじっていたらデータが飛んでいる箇所が変わっていました。
現時点では6/8 19:30からいきなり次の日に飛んでしまっています。
大野さんのおっしゃる通り、FCANDLE関数を使っています。エクセルでは4本値をサンプルシートからコピーして5日分を所得できるようにしています。
もう何がなんだか、、、笑
よろしくお願いします。
2020年06月15日
大野 了
場所が変わったんですかー
なんか大変そうですねー
岡三RSSの再起動後の、FCANDLEの結果には抜けは無い感じでしょうか?
もしFCANDLEの結果に抜けが無いのであれば、
VBAかエクセルの関数に何か悪い部分があるかもしれませんねー
6/8の19:30以降のですかー
家に帰ってデータみてみまーす!!
あと、もし問題が無ければ・・・
りなさんのパスワードや、ロジック的なノウハウの部分を消して、
Excelファイルをアップロードして頂くことは可能でしょうかー?
技術的なところなら見てみることも可能なので・・・
2020年06月15日
大野 了
6/8のデータを見てみたんですが、
N225、Topixとみてみたんですが、
期近に関しては、出来高が無い時間はなかったですね・・・
2020年06月15日
りな
大野さん
仕事していて返信遅くなってしまいました。すみません、、、。
今、じーっとエクセルの変な箇所を見ていて気付いたのですが値の更新のされ方が変でした。
と言いますのもFCANDLE関数は更新される際、一番古いデータが消え、新しいデータが追加されると思います。
ですが、見ていると消え方が一番古い日付の一番最近の時間から消えていました。(すみません、語彙力が、、、)
例えば、
21:00 〇〇円
20:55 〇〇円
というようにデータが入っていたとすると21:00からデータが消えてしまっているということです。
伝わりましたでしょうか…?
なんでこうなっちゃうんでしょうか?
2020年06月16日
りな
Book1.xlsx (65.4KB)
連続の投稿すみません。
一応、使っているのはサンプルシートと一緒のものですが使っている4本値のデータをお送りします。
2020年06月16日
大野 了
りなさん、消えている原因がわかりました!!
分足は過去5日分のデータしか取得できません。
この時、日中は、りなさんがおっしゃれます通りの動きで、
一番古いデータが消え、新しいデータが追加される動きなのですが、
営業日が変わった時のFCANDLEの動きは、
最古の一日分のデータがまるっと一気に帰ってこなくなります。
今日を例にすると・・・
昨日の夜間の終わりの時点のFCANDLEの戻り値は、
6/9の8:45~6/16の5:30までの、まるまる5日分のデータが帰ってきます。
※ここまでは予定通り!
しかし、これが今日の朝になった時点でFCANDLEの戻りは
いきなり、最古の1日分がまるっと帰ってこなくなって、
6/10の8:45~6/15の5:30の4日分しか戻ってこなくなります。
※ホントは6/9の8:45~6/16の5:30まで帰ってきてほしい
そしてその後、16日分(本日分)が5分ごとに1本ずつ足が出来ていきます。
この時、厄介なことにExcelのセル上は6/9の8:45以降のデータは消えずに残っているため、
ここに、5分ごとに列が増えていき、
一番古い日付の一番最近の時間が上書きされて消えて行っています。
これを解決するには、
毎朝、いったんFCANDLEのデータを全部クリアするか、
過去4日分だけでカギ足を判断する必要があります!!
言葉だけだと説明がだいぶ難しいのですが、伝わりましたでしょうかー?
もし伝わらなかったら、お気軽に返信くださーい。
なんかExcelで図でも描きますw
2020年06月16日
りな
大野さん
なるほど!そんな仕様があったなんて、、、。難しいですね笑
いつもありがとうございます!
2020年06月17日
大野 了
りなさん
ですねーw
なにはともあれ、伝わったようで、よかったです!!
また何かありましたら、お気軽にご質問頂けますと幸いです!!
2020年06月17日
りな
大野さん
こんにちは!
また困ったことが発生したのですがお力をお貸しいただけますか、、?
シグナルが発生していないのに先物が勝手に発注してしまいます。なぜでしょうか・・・?
発注の数式は
=IF(AND(カギ足!AI4="K",カギ足!AI6="U"),FNEWORDER(C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22),"miss")
としており、『カギ足!AI4』と『カギ足!AI6』にはそれぞれ条件がそろうと「K」または「U」とでるようにしています。
ですが全くシグナルが出ていないのに発注されてしまいます。
原因分かりますでしょうか、、、?
2020年06月18日
大野 了
分足完全取得.xlsx (36.4KB)
りなさん、こんばんはー!!
IF文を見た感じ、
『AI4とAI6が両方とも"K"と"U"になったら発注』
という意味であれば問題ないと思います!!
FCANDLEを元にしたカギ足ですし、たぶんFCANDLE間の時差の問題だと思います
これまた言葉だけで説明できるか心配ですが、説明頑張りますw
FCANDLEのような1つの足の情報を複数のセル関数(始値、高値、安値、終値など)で取得するような場合、
セル関数が一つずつ動くので、一瞬だけ一部のセル関数だけが次の時間に行ってしまう場合があり、
これが原因で誤発注することがよくありまーす。
例えば、5分足を取得していた時に
起動時は、始値~終値まで8:45時点のデータが横一列に並んでいますが、
8:50になった瞬間、始値を取得するFCANDLEが動くので、
一瞬だけ、始値(8:50)、高値(8:45)、安値(8:45)、終値(8:45)
という行になってしまい、でたらめな状態の足一瞬だけできてしまいます。
これを対応する場合、その時間の足が正常に完成したのちに、
シグナルの判断をしてあげる必要があります。
以前、他の方に同様のご質問を受けてその時に作成したファイルで申し訳ないのですが、
添付します!!
添付ファイルのG2の様に、FCANDLEが同一件数取れていることという条件を追加することにより
誤発注が無くなると思います!!
りなさんの条件式ですとー
=IF(AND(カギ足!AI4="K",カギ足!AI6="U",G2="取得済み"),FNEWORDER(C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22),"miss")
というような感じになります!!
これまただいぶ込み入った説明になってしまいましたがー
わかり辛かったら、また書き込んで頂けますと幸いです!!!
2020年06月18日