【MT4/5】Meta Trader初心者専用57【EA素人】
■ このスレッドは過去ログ倉庫に格納されています
バックテストの結果をcsvかexcelで落としたいのですが、できますか?
現状、レポートをダウンロードして、
webブラウザで開いて、コピーして、
excelを立ち上げて
貼り付けて、グラフを消して
大変手間です。 >>282
自分の場合は、
OnDeinitに、テストモードの場合、
FileOpenとFileWriteで必要な項目を書き出すようにした。
その部分のコードだけ独立させてスクリプトも作った。 MT4に平行チャネルラインのショートカットはありますでしょうか 次のようなことを考えていますが難しそうで手に負えそうもありません。
だれかヒントだけでも、あるいはそんなインジはすでにどこどこにあるよと教えてくれると有り難いです。
よろしくお願いします。
-------
ドル円の時間軸の異なる3枚のチャートが表示されているとします。
例えば左から、M30,H1,H4.
このとき、どれかのチャートに十字カーソルを表示して動かしたとき、
他の2枚のチャートにもカーソルが出現して同じ時刻を示すように動く。
-------- カーソルが出るのは知らんが、SyncChart系はいくつかあるね >>287
たしかにいくつかありました。
そのうち、HT-FXさんのHT Crosshair Syncがピッタリのようです。
もうすこし詳しく見てみます。
こんなに早く解決するとは思いませんでした。
有難うございました。 アプリ版のMT5で同ペアの時間足違い分割チャートで片方にライン引いたらもう片方に自動で反映ってできないよね? MT4を終了したときにEAから発注したオーダーをキャンセルしたいのですが、
以下のようにOnDeinit関数の中に処理を入れてもうまく動きませんでした。
どなたか解決策をご存知の方がいればご教示頂きたいです。
コード
=========================================
//+------------------------------------------------------------------+
//| OnDeinit(アンロード)イベント |
//+------------------------------------------------------------------+
/*
void OnDeinit(const int reason) {
string text="";
switch(reason)
{
case REASON_ACCOUNT:
text="Account was changed";
break;
case REASON_CHARTCHANGE:
text="Symbol or timeframe was changed";
break;
case REASON_CHARTCLOSE:
text="Chart was closed";
break;
case REASON_PARAMETERS:
text="Input-parameter was changed";
break;
case REASON_RECOMPILE:
text="Program was recompiled";
break;
case REASON_REMOVE:
text="Program was removed from chart";
break;
case REASON_TEMPLATE:
text="New template was applied to chart";
break;
case REASON_CLOSE:
// 現在アカウントで保有しているポジション数分ループ処理を行う
for ( int i = OrdersTotal()-1 ; i >= 0 ; i--) {
// 注文プールからエントリー中の注文を選択する
if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) {
break; // 注文選択に失敗したらループ処理終了
}
// 選択した注文の通貨ペア名を取得し、現在チャートの通貨ペア名と一致しているかチェック
// 選択した注文のマジックナンバーを取得し、このEAのマジックナンバーと一致しているかチェック
// 上記の両方の条件に一致した場合のみif文内の処理を行う
if( OrderSymbol() == Symbol() && OrderMagicNumber() == MAGICNUM) {
if (OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT){
res = OrderDelete(OrderTicket());
}
}
}
break;
default:text="Another reason";
break;
}
} >>290
そこまでコードあるならデバッグprint入れてどこがおかしいのか調べられるだろ
もう少しどこがおかしいのか絞れ >>291
大変失礼しました。
Ondeinit関数の「case REASON_CLOSE:」の条件では
res = OrderDelete(OrderTicket());
の部分が失敗します(resの値が0になります)
それ以外の、例えば「REASON_REMOVE: 」の
条件で同じ処理をすると正しくオーダーが削除されます。
「case REASON_CLOSE:」の条件ではオーダーを削除
する方法が知りたいです。 エラーが起きてるならGetLastError()でどういうエラーか見ろよ >>293
ありがとうございます。
エラーは「02 ERR_COMMON_ERROR」
という謎のエラーでしたが、少し進展したような気がします。 >>292
多分だけど、REASON_CLOSEでOnDeinitが呼ばれた時点で既にEA
(というより自動売買?)の実行許可フラグが落ちてるのかも?
仕様だとしたら俺も知らんかったわ
俺は一目見てどうせOnDeinitの時間切れだろ?くらいに思ってたがw
仮にそういう仕様だとしたら意外に深い(mqlの範囲内で回避する方法
が思い浮かばない)かも?
dllでサブクラス化してクローズボタンの押下をMT4(メインウィンドウ)
より先にキャッチして、カスタムイベントをpostしてOnEventでキャッチ
してやりた処理をするって手はありそうだけど・・・・・・
大元のウィンドウプロシージャを止めてる状態でpostしてOnEventが
ちゃんと発火するかはやってみないと分かんない
試してみるにしも週末にならないと・・・・・・
そもそも質問者的にdll使用がアリなのかも分からんしねw REASON_CLOSEはterminal.exeの終了だから遅すぎなんじゃね
適当にどれか使えるでしょ あるいは単純に常に全部deleteしとけばいいじゃん >>295
そういう仕様なら納得です。
OrderTicket()は問題なく取得出来ているのに
OrderDeleteだけが実行できなくて困っていました。
DLLはハードルが高いので別の方法を検討したいと思います。
ありがとうございました。
>>296
ターミナルの×ボタンを押したときは
他のイベントは拾えない様でした。 EA止める
オーダーキャンセルのスクリプト実行する
閉じる
でいいんじゃね
カッコ悪いというなら頑張れ >>299
俺はプログラマーじゃなくてトレーダーだからそんなこと微塵も気にしないけど、
このスレの住人の多くはプログラマー崩れだろうから、そんなブザマなことはしたくないだろうね
そんなところに時間を使うくらいならもっとストラテジーの研究に時間を使えって思うけどね >>300
その程度の足回りに気を使えない奴がストラテジーのコア部分を見落とし無しで実装出来るはずがないっていうのが確率論なんだよね。この後の自分だけは例外って感じの必死レスまで予測可能 ふうん、やっぱりそこは触れちゃいけない部分だったみたいだね
まあ頑張れよ >>301
確率論関係ないじゃん…
お前はちょっと落ち着け どっぷりなプログラマーほどプログラムだけでなんとかしようとする。
優秀なSEはプログラムにこだわらず柔軟に解決方法を模索する傾向にあると思う。
は、さておき、そもそもキャンセル完了を確認してからMT4を閉じるべきじゃないかね。
サーバー側や通信不具合が原因で本当に失敗することも無いとは言えない訳で。 >>302
ほらなwww
>>303
確率と繋がってんの理解出来ないのはかなり痛いぞ。学歴と年収の相関みたいなもんだ。 >>306
確率で合ってるよ。学がないと大変だね。 まぁDLLまで持ち出すのはちょっと本末転倒だけど、別に>>299は無様でもないしな
頭の硬いプログラミングの知識の無い老害は放置推奨な かくりつろん【確率論】
確率の一般法則を論ずる数学の一部門。パスカルなどに始まり、数理統計学・誤差論など科学の方法として応用されている。 初カキコです。MT4での自作EA歴半年です。MT4で自作EA動かしているんだけど、業者からサーバーに多大な負荷()がかかっているからEA止めるか取引量減らせという通知が。
そこで質問なんだけど、OrderSendとOrderModifyで、引数に現在値と同じ値を設定して、エラーでERR_NO_RESULT(1)が返る場合はターミナル内でエラー処理されているわけですが、このとき業者サーバーにはメッセージとやらは送られているのでしょうか? >>308
あ、あれか、きみさ、ハードディスクのことを「ハード」とか読んでドヤっちゃう人なんだー
君もきみがいる世界のレベルも知れるよ >>311
引用するのに出典を書くような世界の人でないことはもうわかってるからいいよ >>314
これは失礼
引用元によって変わるような意味合いのモノでないので不要かとおもったのでね
まあ明らかにしてあげると大辞林 第三版
これでも>>301の表現が適切だったとおもってるのかな?w >>318
アンカも打たずにわかりやすい勝利宣言だなw
アンカも省略したのかな?
「安価なしであってるよ。学がないと大変だね。」( ー`дー´)キリッ そこまで追い詰められたいならさ、
「その程度の足回りに気を使えない奴がストラテジーのコア部分を見落とし無しで実装出来るはずがない
っていうのが確率論なんだよね。」
でさ、前段のどこが確率論なのかね?
几帳面な人は知能が高い、的なもの言いだけど、そこまで言うなら相応の「統計的なデータ」でも持ってきたら?w ガイジ、まだ気づいていない模様ww
>>316辺りを読めばわかるんじゃね?w 301=305=ID:spLzg8w30 と思ってたが違うのか??
難しいの〜w 301=305=ID:Wdqs0l9X0
やで
アホすぎて自分で言ってることがわかってないんだよ赦してやれ ID赤くして余程恥ずかしかったのね。失礼。
ま、そんな短絡的じゃやはりまともなストは描けないよね。
これも確率論。理解出来ないみたいだから放置。
この後またID真っ赤に醜態レスまで予測可能 >>326
違うぞガイジw
俺は今日しか書き込んでないw 主張も煽り方も同じアホが二人もいるのも確率論かあ
深いねぇ な、統計通りアホが真っ赤にして書き込みしてきたろ?
典型的なカモだわ 注文時に利確とストップ込みの注文を作ってるんだけど
その幅を変えてもバックテスト全然変わらんなあ…
どこか間違ってるのかな? mt4のEAを購入したんですがアラーム設定するとパソコンではなりますが、スマホでプッシュ通知ができません。
プッシュ通知のテストはできます。
他人の作成したEAはスマホ通知無理なんですか?
どうにかしてスマホに通知させたいです・・ そういえば最近、iPhoneにPC-MT4からの通知は来るが、iPhone-MT4の「チャットとメッセージ」に表示されなくなったな 最近起こったフラッシュクラッシュのことでお聞きします。
チャートを眺めていると、あの時間帯の5分足が何本も抜けているのですが
そういうときにClose〔1〕とかOpen〔0〕とか最新の足のデータを利用
するEA等はどのようになるんでしょうか?
足が消滅してレートがフリーズして再出現したときの最初の足を根拠に
計算するんでしょうか? うわぁああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
逝ったぁあああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
全部売ったぁああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ >>343
そんなのこいつらが考慮してるけねーだろwww 作ってる奴が考慮しててもあの瞬間的な値動きじゃ
業者の鯖がまともに反応してくれ無さそうだな 1通貨ペア毎にMN1からM30までの6枚のチャートを組にして1画面とし、画面を切り替えて各通貨ペアーの
状況を見るようにしています。画面の切り替えは、Ctrl+F5とShift+F5で行います。
画面切り替えに1秒強待たされます。もっとサクサク変わって欲しいのですが何が原因でしょうか。
表示に内容は、ローソク足、MA3本、ボリンジャーバンドの±3σ、MACDぐらいで大して負荷にはならないと思うのですが。
PCの総合エクスペリエンスインデックスは7.5です。
グラフィックッスは7.9なので問題ありません。
CPU(i5, 3.2GHz)が7.5ですが、何か別に問題があるような気がするのですが。同じような経験のある方よろしく。 そんなもんでしょ
瞑想でもして1秒くらい余裕で待てる精神を手に入れるのじゃ そんなもんですかね〜
何かありそうな気がしてならないんですが。
精神論は最後の手段ということでよろしく(汗) >>350
有難うございます。
500000から500にしてみました。
こころなしか1秒程度に短縮したように感じます。
28通貨ペアーを見ますので、もう少しサクサク動いてもらいところなんですが・・・ タスクマネージャーのグラフで
どこかの項目に負荷が掛かっていないか見れば良いんじゃないか 初心者では無いけどお聞きしたい‼︎
以前、ヒストリーデータを使ってトレードの練習が出来るEAかな?を持ってたんだけど、どっかいっちゃって同じもの、あるいは同じ事が出来るものを探しています。
前に持っていたものはインジも通常チャートのように表示でき、TPやSLも設定可能、好きなところで止めて仕掛ける事が出来るもので無料だったと記憶しています。
何かご存知の方がおられたらよろしくご紹介下さい。 みなさん、お休みのところすみません。
iStdDevOnArray
iMAOnArray
をEAに組み込みたいのですが
どのようにしたらよいのでしょうか?
Indicateの場合
double ATR1[i] = iATR (NULL,0,RSIPeriod ,i+1);
double dev1 [i] = iStdDevOnArray(ATR1[i],0,BandPeriod,0,MODE_SMA,i+1);
とやれば、解決するのですが
EAだと
double ATR1 = iATR (NULL,0,RSIPeriod ,0+1);
double dev1 = iStdDevOnArray(ATR1,0,BandPeriod,0,MODE_SMA,0+1);
iStdDevOnArray(ATR1 ←
と配列にできないのでどうしたらよいのかわかりません
どなたか教えてくださいませ >>340
同じく
改善した?地味に困るんだよな〜 >>358
改善していない。iPhone-MT4がBuild 1171に上がったから直ると思ったが直らなかった。
PC-MT4の方はBuild 1170でもBuild 1090でもiPhone側の症状は変わらないから、iPhone側の問題だと思うんだが トレードの結果がチャート上に分かりやすく残るように、buyやsellの時にローソク足の近くに矢印が出る
インジをIndexBufferで作りました。オブジェクトはあまり慣れていないので。
うまく表示出来ましたが、チャートのタイムフレームを一時的に変えて戻ってみると(H1を一時的にH4に
した後でもとのH1に戻る等)矢印が消えています。
これを防ぐ方法がわかりません。なにか基本的な設定が抜けているような気がするのですが。 普通に作ればそんなことにはならない
つまり、基本が抜けてる >>360
消えたときに、チャート画面から「表示中のライン等のリスト」を見てリストにあれば、オブジェクトの時間またはプライスの指定が上手くいってない可能性がある。
リストになければ、ObjectDeleteがおかしな位置にある可能性がある。
あとはオブジェクト名が重複しているとか。 >>362
オブジェクトではなくIndexBufferを使ったので、「表示中のライン等のリスト」には最初から出てこないようです。 mt4って、決済の時、OCO注文しか出来ないの?
逆指値決済を入れようとしたら、指値決済注文も要求されるんだけど… >>359
レスサンクス。今朝iOSアプリのアップデートに気づいてやってみたけど、改善されるかな?
>>364
片方だけもできるはずだよ
空白にしとけば >>360
あるあるは取引履歴を表示してないぐらいだな
それか、エキスパートタブにエラー内容が出てるか バックテストの最大ドローダウンの金額って
含み損も考慮してるの? >>365
今やってみたら、出来ました
ありがとうございました。 一時間毎にHiMacroEXのマクロデータを実行させるインジケータを走らせているのですが、最初は調子良いのに暫くすると
stack damaged, check DLL function callエラーが出て止まってしまいます
解決法を教えてください
int h;
#import "shell32.dll"
int ShellExecuteW(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
#import
int start()
{
if(h!=Hour() && Minute()>1)
{
ShellExecuteW(NULL, "open","D:\\Misc\\FX\\HiMacroEx\\Macro\\Reset.hmc", NULL, NULL, 1);
h=Hour();
}
return 0;
} shellexecutewでググったら、戻り値をint型の変数に格納するとエラー出ないとあった。
このエラーが該当するか知らんが試してみた?
それはそうと、int hに値を入れずに比較で使ってるのが気になる… インジ走らせた瞬間にマクロ動いちゃうけど気にしない
なぜかinitの所でh=Hour()やっても0が入っちゃうし
戻り値か。。よく分からないけど試してみます 修正して走らせてますが、エラーになるタイミングがランダムなので1日回してみないと何とも。。 昔同じ問題あったね
またMT4がバグってんじゃねーの? MQL5じゃなくて、MT4でコピートレードできるオススメのソフトあれば教えてください。 >>369
deinitでオーダー通らないってやつのdll書いてるんだけど、そのエラー出たわw
多分だけど、ShellExecute実行(*1)→*1実行中→ShellExecute実行(*2)→*2実行中
→*1終了→エラー、だと思う
WaitForSingleObjectで終了を待ってやるかCreateProcessで置き換えると解決できる
と思う すいません、チャートの時間軸の日本時間と時差のない
MT4サーバのFX会社をご存知でしたら教えて下さい あ、駄目だわ
エラーメッセージは出なくなったけどマクロ呼び出しに失敗してる
インジをチャートにぶっこんだ直後だけはマクロ動くし、if文内でPrintで文字出力させたら毎時表示されてるからインジが止まってる訳でもない
>>375
マクロって言ってもワンクリック0.1秒内で終わる動作だけだけどDLL占有したままになってるって事でしょうか
WaitForSingleObjectもCreateProcess使ったこと無いのでよく分からないけどやってみます >>375
起動するものを例えばcmd.exeに変えて再現するか確認してみ
再現するならここにうpすれば見てやる ■ このスレッドは過去ログ倉庫に格納されています