【MT4/MT5】 EA開発研究スレ Part39 【自動売買】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
EA(Expert Advisor)の開発をメインとしたスレです。
▼関連スレ
【MT4/5】Meta Trader初心者専用54【EA素人】 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/market/1488076405/
【MT4/MT5】 EA運用観察スレ Part1.1 [無断転載禁止]©2ch.netDat落ち)
http://tamae.2ch.net/test/read.cgi/market/1457092185/
【MT4/MT5】 EA乞食スレ Part1 【素人以下】 [無断転載禁止]©2ch.net
http://medaka.2ch.net/test/read.cgi/market/1494911868/
▼ドキュメント
MQL4言語ドキュメント(英語)
https://docs.mql4.com/
MQL5言語ドキュメント(日本語)
https://www.mql5.com/ja/docs
▼アップローダー
めたとれなうpろだ
ttp://u3.getuploader.com/mt
▼Q&A
・○○できるインジありませんか? → スレチです
・○○できるEAありませんか? → スレチです
・○○するコードの書き方教えて下さい → スレチです
・オススメの業者教えて下さい → スレチです
・PCのスペックで最適化の効率が… → スレチです
・バックテストでこんなすごい結果出たぜ! → スレチです
・○○言語ってどうなの? → スレチです
EA開発研究に無関係な話題、ループしてる話題、成績自慢を徹底して無視することがスレの品質向上に繋がります。
▼前スレ
【MT4/MT5】 EA開発研究スレ Part38 【自動売買】 [無断転載禁止]©2ch.net
http://medaka.2ch.net/test/read.cgi/market/1497365612/ ついでに仮想関数定義してオーバーライドしてみたんだけど、こっちは調べるのにえらい大変だったです。
公式って、クラス定義の中にボディー書いてる記述ばっかりだけど、
実際のプログラムでそんな書き方する事なんかまずなくて、普通、ボディは切り出すでしょ。
■基底クラス
virtual int getMaskWidth() = NULL;
■派生クラス
virtual int getMaskWidth() override;
実装
int Mask::getMaskWidth() override
{
return MASK_WIDTH;
}
でいいんだろうけど、これだけの事調べるのにあっちこっち検索しまくりとか、
なんか、ドキュメントの作り方下手くそですよねぇ…
ちな、これが仮想関数の説明ページ
https://www.mql5.com/ja/docs/basis/oop/virtual >>426
て、天才ですね! まさしくその通りでした。 m(_ _)m >>428
まぁC++なりちょっとは知ってないと難しいかもな >>425
何、そのエロそうな名前は?と思って検索してみたら、なるほど。、そういうことなんですね。
納得です。 >>430
作法については1つ言語しってれば他も大抵流用できるけど
文法については“知っている”という事がかなりの要素を締めちゃいますもんね…
ま、1回分かれば後はそれにならって書いてくだけなんで、つらいのは最初だけなんですけどね。 で、これでやっと、
かねてからの懸案であった、チャート上にアイコンとかラベルとかボタンを配置するクラスが
class Objects : public Buttons : public Mask : public BaseObject
という構造で整理されたのです。
しばらく休憩するのです。 コンビニから帰ってきて冷静になったら、必要のない場所で呼び出していたのでそもそも仮想関数つくってオーバーライドする必要は全く無かったことに気付いたけど、
まぁ、勉強にはなったのでよしとするのでーす。 去年末にUSDJPYになんとなく使ってみた無料の全クローズEAによって、
結構下の方でポジった全く関係ない羊LとキウイLがことごとく決済されてしまったのにブチ切れて金目当てで始めたEA作成だけど、
知れば知るほど、いろいろと面白くなってきて趣旨が変わってきてしまい、なかなか運用に漕ぎ着けない… MT5のストラテジーテスターのターミナル変数て内部では正常に処理してるのにGetする時ある一定の容量から先に増えた分止まってる気がするんだよね。 >>435
ほら、そんな事言うから、
class Objects ┬ calss Arrow : public BaseObject
├ class Buttons : public Base Object
└ class Mask : public Base Object
って、ちゃんとやりたくなってきちゃったじゃないです、どうしてくれるんですか。 オブジェクトとクラスの概念を理解していないでしょそれ classにobjectという命名はしないでしょってことじゃない?
それより、凄く聞きたい、oopするとtddいける? で、EAはMQL5でプログラミングしてるの?
MT5は、使ったことないから分からないな
MT4だと、oop使わなくてもできちゃうし。
oopだと、初心者はクラスとか変数に振り回されて
肝心のトレードロジックが手薄になりませんか?
C++でoopも書けるといってる人がいるが
プログラミングはSimple is Better!が基本です >>445
だって、class ObjectControllerとか、長いし…
TDDに関しては、MQLのUnitTestよく知らないので何とも… >>446
またアホ自慢か!
>>447
名前の問題じゃないね >>446
EAの総行数何行くらいですのん?
僕、既に万行超えてると思うんで、OOP使わないとか考えられないっすね。 学生時代か、若い頃にoop学習しないと、
Fortran, unix, C言語時代に育った人間は中々馴染めないし
GUIもあまり使わないEAで、なぜoopを実装するのか理解できない
これも世の中の流れなのだろうか?
oop使うならCTradeの方がズバリC#で書けるでしょ。
CTradeがMT4ほど小回りの利く汎用性あるかどうかは知らないが もういいよ…
>>449
多重継承してどうするつもりなのよ >>452
oopをかじってる程度で偉そうな奴だな、
あんたまともなEAひとつでも作てるのか?
そんなにoopが好きなら、C#スレでも行けば君より遙かに詳しい人が
一から丁寧に教えてくれるだろ >>452
多重継承じゃないっす。 C++ の継承はコロンですよね?
Objectsインスタンス内でArrowsとButtonsとMaskのインスタンスを生成してprivateで持っておくです。
で、他所からはObjectsのインスタンス経由でArrowやButtonやMaskを操作するです。
他所から直接、オブジェクトはいじらないです。 こんなアプリスレでoopひとより少しばかり知ってるだけで
あんたアホなの?
EAのレベル見せてみ。俺が鑑定してやるわ BsrbPq2C0は、どうしてそんなに頭に血が昇っちゃったです?
8nFQvpMM0は結構穏やかに話してくれてる方だと思うです。
関係ないけど、8nFQvpMM0ってもしかして、この前packの事とか教えてくれた人じゃないですか? >>455
じゃぁこれなんなの?
> class Objects : public Buttons : public Mask : public BaseObject >>454
EAもまともに作れない奴が偉そうにし過ぎだカス
C#スレに逝って基本でも教えてもらえ
ここはEAを開発スレってわかって言ってる? 知らない奴も多いだろうが、
CTradeを動かすためにC#を駆使してた奴
AIブームに乗っかってPythonを徹底的に学習して奴
ここにも登場したがみんな消えていった
oop化よりEAのロジックが大切だと言いたい 知らない奴も多いだろうが、
CTradeを動かすためにC#を駆使してた奴
AIブームに乗っかってPythonを徹底的に学習して奴
ここにも登場したがみんな消えていった
oop化よりEAのロジックが大切だと言いたい >>459
基底クラスの BaseObject を継承した Mask を継承した Buttons を継承した Objects クラスですん。 >>463
Objectsてのはボタンを中で持って制御するんでしょ?
それだと継承いらないでしょ
でもButtonsも複数形だし、ちょっと何がやりたいのかよくわからんわw >>464
なので、
>>441 ほら、そんな事言うから、
class Objects ┬ calss Arrow : public BaseObject
├ class Buttons : public BaseObject
└ class Mask : public BaseObject
って、ちゃんとやりたくなってきちゃったじゃないです、どうしてくれるんですか。
と、なってきてしまったのです。
元々、全部Objectsクラスの中に書いてあって、正直、チャート上に表示するオブジェクトなんか
EAの機能には大して関係なくて、開発していく上でEAの状態を視認するためだけの目的だったから
あんあまり真面目に作り込む気はなかったんですけど、
>>435 「そりゃ根本から間違ってるぞw」って、グサーーーーっと刺されたので、
ちゃんとやろうかなーって思い始めたのですん。 適当にやるにしてもなんで継承する必要があったのかがわからん
まぁ問題ないならそれでいい ほいほい。ありがとうございますん。
後ちょっとなのですん。来週からデモでのフォワードテストに入るのですん。 文法ごっこより、エントリ決済ロジックの方がはるかに重要 >>467
ちなみに、Maskってのは何なの?
ボタンはEAのパラ変更用途? >>469
多分、これでいいのかな?
https://imgur.com/a/UIB7k
こんな感じで、EAに関するいろんな状態をarrowやlineの他、Commentでも出してるんですけど、
チャートと重なるとCommentがメチャクチャ見にくいんですよね。
だから、半透明のマスクを重ねて見やすくしてるんですが、
チャートが動く度にマスクはずれていくので、onTick()毎にマスクが同じ位置と大きさに成るように調整してるんですん。
Buttonは、裁量発注と裁量クローズ用ですん。 そーか、裁量か、がんがれ
あまり裁量はやらんので、応援しかできないわ >>471
ほ、ほうぅ…、また脇道にそれさせる気マンマンですねん?
FTに入ったらじっくり呼んで見るです、ありがとうございますん。
>>472
EAがしっかりできていれば裁量は必要ないはずなんですけど、
もし万が一とりあえず全部クローズしたいとか、EAは動かしてるけど発注だけは止めたい
みたいなことが、絶対に初期の段階ではあるはずなので、今のうちにつくっておいたのですん。 >>468
そうなんだけど、ロジックを試行錯誤で詰めていくとき、それなりのクラス構成にしておかないと苦しくなる 1時間足15,048本、パラ総当りで1,738,775,808通り
これでBTに半日、結果ファイルが20GB
速度重視でC++使ったけど、結果があってるかMT4でもやってみるかな
しかし、PCも速くなったもんだなぁ 海も見えるしいい感じだな
これ見てからは行く気しないけど Cスタイルで作っちゃったから今更oop化する気ないや
儲りゃいいんだよこんなもん OOPもリファクタリングも考え方だから言語とは関係ないしね オブジェクト志向じゃない場合リファクタリングって言わないんじゃないの?
なんだろ?ソースの整理?w いうのも考えるのも自由だが、OOPじゃないリファクタリングってなにすんの? 同じ事してるのが複数箇所あるなら関数化したりとか無駄なループを無くしたりとか >>489
リファクタリングって概念じゃないね。ループなくすのはリファクタリングじゃない。
それに昔からやってる・・・
おまいら「リファクタリング」って本読んだんだろうね?スレチだからもうやめとく >>490
逃げずにお前の思うリファクタリングの概念てやつを披露してみろよw >>491
可読性と再利用性を上げる行為。メゾッドの切り出しは近いっちゃー近い
だがそんなもん大昔から普通にやること。
ループは違うよ。チューニングか? おい?もうちょっとお話してもいいんだけど終わりか?あおっただけか? >可読性と再利用性を上げる行為
OOP関係ないやん >>497
あーいいよいいよ。そういうレベルをリファクタリングって言っちゃう人なのね まぁ儲からないとイライラしたりどうでもいいことに拘っちゃうよね
気楽に行かないと病気になっちゃうよ
もう遅いかも知れないけど いや、ここへきて結構有意義だと思うなあ
OOP以外のリファクタリング?ぜひ教えてほしいわ
MQLにも役に立つだろ。俺には思いつかんし リファクタリングとはなにかはこれ読め
https://ja.m.wikipedia.org/wiki/リファクタリング_(プログラミング) >>503
読んだけど言わないで正解じゃね?
広義にはいうのかなあ
すくなくとも10年前は言わなかった てか、OOPじゃない言語て何が残ってるんだ?
アセンブラくらいか?
アセンブラ リファクタリング
約 12,400 件 (0.27 秒) くるくるワイドのEA作ったから貼るわ
https://www.axfc.net/u/3855190
機能もりもりでわけわからんと思うので
設定サンプルもつけるわ
ドル円で使うのを想定して
100円出口で開始成行Sするサンプルsetファイルな
ソースは無しだわ >>506
だからUnitTestするんですん。つまり、OOPじゃないときついのですん。 最近、特に思うようになったんですけど、
MQLにも“プロジェクト”って概念、取り入れてほしいですよね。
クラスファイルとか書き換えた後、いちいちメインのmq4のタブ開てから“コンパイル” ポチッがめんどくさくて。
プロジェクトって概念があれば“ビルド” ポチッで行けるのに…
僕が知らないだけで、他になんか良い方法あるなんて無いですよね…? あと、最近気づいたんですけど、変な値動きする時間って大体決まってるんですね。
BTでうまくEAが動かなかった時間にプログラム的にPauseかけて検証してるんですけど、
Pause設定する時間が日にちが変わっても大体同じなんですよね。
つまり、リアル相場で変な動きさせてるのはやっぱりプログラムなんだろうなって思うのですん。 >>509
OOPでなきゃできないわけじゃないしユニットテスト
OOPに縛られないと隠蔽性が高いコードが書けない低レベルのプログラマが悪いよね OOPできるのにできない心配しなくてもよくね?
一体何の言語使ってんのよ >>510
Ctrl-F7押せばいいんじゃね?
使ったことないけど >>514
ほんとです! できました!
>>514天才ですん。 ここの人、みんな優しいですん。 おまえら幸せそうだな
ドル円の逆張りEAは担がれてるの多そうだな
もう、テクニカルもファンダもあったもんじゃないわ
くるくるワイド?ループ系は壊滅じゃね? >>518
逆張り先週&今週はプラスだったよ
その前ぐらいはずっとよくなかったけど 結局、EAに必要な要素なんて優位性のあるトレードアイデアであるか否かが99%で
プログラミング技術なんて動けばいいだけだからな だよね
バグ無く動けば、極端な話し遅いコードでCPUパワー使いまくっても
動作に支障が無ければ良いし、勝った金でより良いPCなりサーバなり手に入れれば良いしね まだFT入れてないのですん…
どんどん仕様が変わっていってるのですん…
現在、BTではボラが起きる度にガシガシ増える状態ですん…
その他は… ですん…
最初の頃と方向性がかなり変わってきてるのが原因ですん…
来月からFTに入れるといいな、くらいの進行状況ですん… 作ってく度に新たなアプローチが見えてくるのは仕方のないことなのですん… 着実に進化はしているのですん… 新しい良いアイデアは生まれているのですん…
ここが踏ん張りどころなのですん… なあ、勝てるEAが出来ないからみんな消えて逝ってるんだが… ■ このスレッドは過去ログ倉庫に格納されています