【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/ 僕だって早くリアルで試したいのですん… でも、まだまだ実戦投入できないのですん… EA作る前に、取引ルールを決定する、こっちの方が重要
取引ルール決めて、チャートを見ながら仮想取引してみて
ある程度、利益が期待できそうなら
実際にEAでバックテストすればいいと思う
オブジェクト指向プログラミングは、できるならやったほうがいいけど
それよりも利益が出るほうが大切
このスレでは取引ルールは、話題にならないけど
みんな秘密なのかな 裁量取引では、調子いいときは
国内25倍で一ヵ月2〜3倍当たり前だったけど(最高は5倍)
EA関係のスレ見ると
一ヵ月プラス数%というのが多いみたいだけど
EAの利益って、どれもそんな感じなの
一日2〜3時間しか寝ない生活で体がおかしくなったのを無理してやってたら
ボロボロに負けたので、この負けをEAで取り戻したい >>531
プログラムの組み方なんていくらでも教えていいとおもうんですけど、
良い取引ルール教える人がいたら流石にお人好しが過ぎると思うんですん。 1%でも儲かりつづけて損しない聖杯があるなら欲しい 月数%の利益を3年コンスタントに上げてみろよ
恐らく難関大に入るより難しいぞ おまいら平日夜、土日も遊ばず、勉強もせずMT4で消耗する人生をそろそろ見つめ直してみないか? 全くだぜ
苦労に見合う結果はあると思うけど、そこまでいけるのは恐らく1%以下
徒労に終わるリスクが高すぎる
でも年収2000万とか全体の0.4%とかだからそんなもんかって感じもするが ネトゲやってるやつがネトゲやめたから幸せになるか?
というと、そうでもない理論 ハマっているときは幸せだろうね。夢という脳内麻薬で麻痺しているから
ふと年だけ取って何の結果もなしって気付いちゃうとうつ病コース
一生気付かなきゃ大丈夫だけどね FXに聖杯ってあるんかね
三年弄ったけどクセが見つけられなかった
他で見つけたからいいんだけどさ どこに入れたらいいかわからない奴はヤフーの選挙情報みろ
質問に答えるだけで自分にあってる政党が出る
https://seiji.yahoo.co.jp/senkyo/#matchMod >>532
裁量でそんなに勝ってたのは偶然そういう期間だったというだけ。睡眠不足続けててもすぐ負け越した。
利益と破綻確率はトレードオフの関係にあるのでそういうレバではすぐに破綻する。
両方ともEAバックテストしてみればすぐ解る。
つまり必然的にトータル負けたんよ、残酷なようだけど。 2017年の通算損益:-7,245,257
2016年の通算損益:-6,167,692
2015年の通算損益:-6,165,417
2014年の通算損益:-6,078,402
通算損益合計:-25,656,768 mt5を使ってますが15分のチャートに一時間足のラインチャートを重ねて表示出来るインジってありますか? めっちゃ大変だったんですん。
ST_HOGE
{
int rate;
datetime time;
string info;
};
みたいにして ST_HOGE hoge; を作って
ST_HOGE hoge_array[5]; に hoge_array[0] = hoge; しようとしたら、
structure have objects and cannot be copied
とか言われるんですねん。stringがオブジェクト扱いで、オブジェクトを含む構造体はコピーできないってことですねん。
どうすっか悩んだんだけど、やっぱりstring infoは欲しいので、構造体じゃなくてClassにしたんですねん。
Classにしたらしたで、あんまり慣れてないからポインタ指定にわりと悩んだりして、
結局、この問題で4時間近くあれやこれやしてましたんですねん…。
C/C++のサブセットは結構制約が多いのですねん… >>549
俺なら構造体よくわかんないから、配列3つ作って代入3つ書く。4分で終わるのですん。 >>550
途中やけになって、infoだけ別配列に切り出してやろうかとも考えたのですん。
でも、がんばったのですん。 >>549
struct SHoge
{
int rate;
datetime time;
string info;
SHoge(const SHoge& self) { ... };
SHoge operator=(const SHoge& self) { ... };
//const SHoge* operator=(const SHoge& self) { ... };
//構造体はreturn &this;できないから上記のようにはできない
//そうするとreturn this;することになるからコピーコンストラクタ
//の定義も必須になる
};
こんな感じでコピーコンストラクタと代入演算子を定義するのが定石だけど・・・・・・
ただし、こうすると SHoge hoge = { ... }; という初期化はできなくなる。
ただ、構造体 = 構造体という構文を成立させるための工夫なんて美意識の
問題にすぎないから、そんなもの捨ててしまえばいいという考え方もある。
struct SHogeに普通にvoid set(const SHoget& self);みたいなメソッドを用意
しても構わんでしょ?副作用もないしw >>551
目的が達成できて良かったですん
たかだか4時間
もっと大きな時間を無駄にしないように、現段階でのFT開始をお勧めします
開発しながら裏でFTした方が効率的
FTしないとわからないことがあるから >>552
構造体の中にそんなの書けるんですね、知らなかったです。で、
SHoge operator=(const SHoge &self){ return this; };
これ、何かと思ったら ' = ' をオーバーロードしてるんですね。勉強になりました。
ありがとうございます。 >>553
結構、後で似たような課題が出てきた時にまた妥協策で苦労しないように今やっとけ、
みたいな「お題」になってしまうのですん。
だから現段階で特に必要のないDLLへの切り出しとかクラスの継承とかに時間を割いて
ロジックそっちのけで、かれこれ2ヶ月もリファクタリングをしているのですん。
性分として、ただちに金儲け〜よりも、
きっちりコード書けるようになって後でじっくりロジック煮詰める、な感じなのですん。
FTは、そろそろ入りたいんだけど、先週までの段階だとダメすぎて火を見るよりも明らかだったのですん… >>554
こうすればいい C++とはちょっと違うけど
SHoge *operator=(const SHoge &self){ return GetPointer(this); }; こういう事ですねん?
class CHoge{
CHoge *operator=(const CHoge &self){ return GetPointer(this); };
}; MQL4からMQL5への移植も終わりが見えてきたんだが
MQL5ってもしかしてポジションの決済できないのか?
反対売買しろとか出てくるけどスプレッド無駄に取られるだろ
なんでOrderClose消したんだよ
劣化してるとかマジふざけんなよこのクソゴミ言語 >>561
> MQL5ってもしかしてポジションの決済できないのか?
何を言っているのですん? 相変わらずロジックと関係ないアカウント基準のプロテクト処理を全DLLに埋め込んだのと、
動作時にarrow code 183〜194がチャート上でぐるぐる〜
みたいな道楽に時間を割いていたんですが、
ObjectCreate()、これ、地獄ですねん。
常に右端に時計アイコンを出したいのに、時間とレートでしか座標を指定できない。
レートは常に動くけど、まだ、ピクセル基準で算出できるからマシ。
問題なのは時間の方。
表示倍率を買えた時のシフト量がよーくわかりますん…
多分、冷静に考えればスケールから算出できるんでしょうが、今回は後回しにしますん…
今おもむろに、なんとなくFTを走らせ始めてみたのですん… あと、そろそろ、WebRequest()メソッドも組み込みたいのですん。
SendMail()はメアド固定みたいなので、iPhoneでは着信音が1つになってしまうのですん。
でも、もう買った時と損した時の音は変えたいのですん。
なので、自前のサーバー経由でメアド変えて送信し、着信音を変えるつもりなのですん。 どっかから、経済指標のデータもとってこれれば最高なんですんけどねん… >>566
OBJ_LABEL
OBJ_BITMAP_LABEL
OBJ_RECTANGLE_LABEL
などならOBJPROP_CORNERにCORNER_RIGHT_UPPERを指定して右上に固定表示することが出来ます。
OBJ_BITMAP_LABELで画像をクルクル回した方がより面白いのでは? やっぱり、OBJ_BITMAP_LABELが一番かんたんですかねん… そもそもなんで時計を回す必要があんの?
死んでないかどうか? >>571
許可されていないアカウントの場合に、見た目で分かるようにしようと思ってたんですけど、
回そうと思ったのは、ただの道楽ですん。 どうしても、駆け出しのプログラマーはGUIに凝っちゃうな。
昔、ニュースとか2ch市況2のスレをMT4に表示してた奴がいたが、
限られたVPSメモリーの中で、結局、トレード速度を落とすだけのような希ガス
まあ、付録ソフトとしては面白いよw
リアルトレードで勝てるヒントが皆無なのが寂しいな。 俺わかったぁああああああああああああああああああああああああああああああああ >>575
そのgif画像とまさしく同じことをしてるんですんが、Alert()とはどう関係あるのですん?
Alert()ってポップアップ出して音鳴らすやつですんよね? >>577
まてまてーい! これでもWEBの方では腕を鳴らしたWEBプログラマですん!
駆け出しのシストレプログラマは、って言ってほしいですん! しかし、FTは中々事が起きないからヒマなのですん。
2時間寝て起きたけど、EA的にはやっと今、3回目のポジション中ですん…。 勿論、スキャEAじゃないので、トレンドが反転しなければ半日でも1日でも持つんですんが、
すぐに結果が見られないと退屈なのはBT病みたいなものなのかもしれないのですん… >>580
アカウントが違うなら最初にAlert()すればええのとちゃうの?
なんで時計回すのか意味がわからんのだけど >>584
知らない人は、「アカウントが違うときちんと動かない」、という事がわからないようにしたいのですん。 あ、あの、VPSでFTをしてみようとして、DLLをアップロードしたんですけど、
Cannot load 'C:\*********************************\libHoge.dll' [126]
で、読み込めないんです。
で、検索してみたら
EA DLLが読み込めないエラーの場合
http://trade-cyclone.net/mt4/dll%E3%81%8C%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E5%A0%B4%E5%90%88.html
ってページがあって、
●DLLファイルが対応していないOS(Windows 2008 Serverなど)である
ってのがあるんですけど、VPSはWindows Server 2016 なんです。
DLLが対応していないWindowsって、どういうことなんでしょう? 格納パスは間違いない?
メッセージの場所にあるの? まっさきに疑ったのがアクセス権で、次がパスが間違っていないかでしたが、問題茄子でした。
で、今システムアプリとサービス以外のDEPを無効にして再起動かけようと思ったところに
Windows Updateがあったので、そいつをかまして再起動まちですん…
Windowsはアップデートが長すぎるんですん… MTのDLL読み込み・実行許可はしてあるのですん。 うーん、よみこめないのですん… 今日はとりあえず、ねるのですん… ああ…、もしかしたら… わたし、犯人わかっちゃったかもしれないのですん! Webの専門家なら、EA開発はもうあきらめて、
PHPでEAをダウンロードする際、
EAにデータを書き込んだ後、コンパイルしてから、
ex4実行ファイルを吐き出すWebプログラムを作ってくれた方が
100倍ありがたいんだが。。。
まともに使えそうなら使わせてもらいたいんだが >>596
ありがとうございます。さっき、VPSのOSの初期化を始めてしまいました。
気になったのが
cannot load library '*********.dll' ではなくて
cannot load '*********.dll'
なんです。だから、dllとして読み込めない以前に、ファイルにアクセスできてないのかなとも思いまして、
もう一回、さらの状態でやってみる事にしました。 初期化始める前にこっちを見に来ればよかったです。すみません。 >>596
ありがとうございます。今、最小構成のコードでDLLを今までと同じ方法とVisual Studio 2017の両方で作っって
リンクにあったDependency Walkerで比べてみました。
EA適用時の仕様タブを確認すると、Visual Studio 2017でコンパイルした方は
該当DLLの他KERNEL32.dllだけで、正常にEAが起動するのに対し
今までの方法(MinGWのg++)の方は他に2つのDLLを必要としているようで、やはりコケます。
これが足りないのですね。
ありがとうございます。この変の足りないところを、明日、補ってみます。
(今日、法事で酒をしこたま飲まされたので、明日にします。すみません)
最悪は、Visual Studioでのビルドに切り替えます… >>600
MinGWなら-staticオプションつければ必要なの全部スタティックリンクするべ >>601
本当ですか? もうお休みモード入ってたけど、ちょっとやってみるです。 う、うまくいかなかったのです… なんかやり方がちがうんでしょうね… こんなので.batからコンパイルしてます…
g++ -shared -o "../Libraries/ib%1.dll" %1.cpp -Wl,-k,--output-def,temp/%1.def,--out-implib,temp/lib%1.a
コンパイルオプションについてはオライリーの本買っていずれ調べようとはおもってたんですんが
まずはEAを作ることが命題なので後回しになっていますん… あ、違うか-sharedは必要かw
g++ -W -Wall -static -shared test.cpp -Wl,k -o test.dll
だけでいけるんとちゃうか >>601
うまくいった! 最小構成のDLLでEA通った! >>601天才!
g++ -shared -static -o "../Libraries/lib%1.dll" %1.cpp -Wl,-k,--output-def,temp/%1.def,--out-implib,temp/lib%1.a
明日、本物のDLLやるです! ありがとうございますん! >>601
今やりました、すぐやりました、バッチリでした!
天才、まさしく天才 >>601
これでやっと安心してロジックを育てられます。本当に有難うございました。 >>601 ID:e/IWPoel0 及び、他の方 よかったな
MT4で使うだけなら.defも.aもいらんから-Wl,-kだけでいけるで >>609
そうなんですね、ありがとうございます。オプションについてはいずれオライリーの本で調べます。
あと余談ですが、-staticでコンパイルしたら、コンパイル時間が3倍くらい速くなりました。
シャアだったんですね。 >>594
> PHPでEAをダウンロードする際、
> EAにデータを書き込んだ後、コンパイルしてから、
> ex4実行ファイルを吐き出すWebプログラムを作
それだけなら、クソみたいに簡単なのですん。
そのうちに作って公開するのですん。 >>611
凄いな
私には何をしたいプログラムなのかさっぱり分からないです。
●PHPで
→OK
●EAをダウンロードする際
→何処から?、MQ4ソース?
●EAにデータを書き込んだ後
→???
●コンパイルしてからex4実行ファイルを吐き出すWebプログラム
→OK >>612
うーんと、多分>>594 がやりたいのは、アカウントIDによるプロテクション機能をつけたEAを
オンラインで自動販売したいって事じゃないかと思うんですん。
>>594のWEBサイトでユーザーがEAを購入する際に
アカウントIDとかパスワードのハッシュとかを自動で埋め込んでコンパイルし、
できたex4とかをダウンロードさせたいんだと思うんですん。
そうすれば不正コピーが流通するリスクが低減できるんだと思うんですん。 >>613
なるほど
EA販売のこと良く知らないのですがそういうやり方が流行ってるのですね ○年○月○日○時台の高値安値に線を引きたいのですが、
High[2017.10.27 07:00]のような記述では高値安値指定できないのですが、どなたかお知恵をかしていただけないでしょうか。 >>617
自作関数つくればええやん。
既存で出したいなら、引数調べなよ。 つーか、初心者スレ以前のレベルだからプログラミングの基本から勉強してきなさい >>617
double hi = High[iBarShift(NULL, 0, D'2017.10.27 07:00')]; >>620
やりたかったのはまさにこれです!
ほんとうにどうもありがとうございました!助かりました! >>619みたいなのってホント役立たずだよな
仕事場でもきっとそうなんだろうな… >>622
スレタイ読めないのか?おまえはスタートラインにすら立ってないんだよ。 まあ技術的な質問なんて書類選考の段階だわな。己の未熟さにすら気付いてないレベル
これからランダムにしか見えない中に法則性を見つけるというキチガイミッションが待ってるよ な、お、
> High[2017.10.27 07:00]のような記述では高値安値指定できないのですが
根本的な問題を解説すると、High[]は配列なので、[]の中に記述できるのは添字であるintだけなのですん。
これはMQLに限ったことではなく、C/C++と、そこから派生した言語では全て同じなのですん。
>>618が、多分脱力したせいで“引数調べなよ”と言ってるんですんが、Highは関数ではないのですん。
High配列は現在のタイムピリオドを0とする各足の高値が入っており、
添字に現在の足からのシフト数を指定することで、その足の高値が取得できるのですん。
iBarShift(string symbol, int timeframe, datetime time, bool exact = false) は、関数なのですん。
datetime型のtimeを指定すると、そのtimeに相当する現在の足からのシフト数が取得できるのですん。
symbolにNULLを指定すると、現在のEAが適用されているチャートの通貨ペアが選択されるのですん。
timeframeに0を指定すると、原意のEAの足の種類(5分足とか1時間足とか)が選択されるのですん。
iBarShift(NULL, 0, D'2017.10.27 07:00')で返されたint(シフト数)について、
High[shift]でその時間の高値が取得できるのですん。 よく読んでないけどiHigh()とかもあったはず
簡単に出来るものは難しくしない方がええよ ■ このスレッドは過去ログ倉庫に格納されています