初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 563 1...556557558559560561562563564565566567568569570...1503 新しいコメント Vladimir Karputov 2016.04.17 14:55 #5621 Василий: はい、MQL 5について質問しているのですが? はい、現在のシンボルのデータにアクセスする必要があります。EAコードに必要なデータです。ですから、例えば、現在のバーの前のバーの終値を 知る必要があります。CopyTimeの例を ご覧ください。 Василий 2016.04.17 15:16 #5622 Karputov Vladimir:CopyTimeの例を ご覧ください。 了解です、何とかしてみます。ありがとうございました。 Sergey Gritsay 2016.04.17 15:18 #5623 Василий: はい、MQL5について質問しています。 はい、現在のシンボルのデータにアクセスする必要があります。Expert Advisorのコードに必要なデータです。例えば、現在のバーの前のバーの終値を 知る必要があります。少しはドキュメントを読んだらどうなんだ。int CopyClose( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период int start_pos, // откуда начнем int count, // сколько копируем double close_array[] // массив для копирования цен закрытия );以下は終値とインジケータバッファを取得する例です。ENUM_ORDER_TYPE indicator_01() { double ma[2]; double close[2]; static int h_ma=INVALID_HANDLE; if(Bars(_Symbol,PERIOD_CURRENT)<ma_period+1)return(WRONG_VALUE); if(h_ma==INVALID_HANDLE || h_ma==0) { h_ma=iMA(_Symbol,_Period,ma_period,ma_shift,ma_method,ma_price); return(WRONG_VALUE); } if(CopyBuffer(h_ma,0,1,2,ma)<2) return(WRONG_VALUE); if(CopyClose(_Symbol,PERIOD_CURRENT,1,2,close)<2) return(WRONG_VALUE); if(close[1]>ma[1]&&close[0]<ma[0])return(ORDER_TYPE_BUY); if(close[1]<ma[1]&&close[0]>ma[0])return(ORDER_TYPE_SELL); return(WRONG_VALUE); } Vladimir Karputov 2016.04.17 15:39 #5624 Sergey Gritsay:...以下は、終値とインジケータ・バッファを取得する例です。 悪い例です。MQL5では、インジケータ・ハンドルを格納する変数は、「ヘッダー」つまりグローバル変数の 領域で宣言されなければならず、ハンドルはOnInit()で取得されなければなりません。そして、その時だけ、プログラムのどこからでもデータを取得できるように、インジケーターのハンドルを参照することができます。 Alexey Kravchenko 2016.04.17 17:08 #5625 皆さん、こんにちは。OnTradeイベントを使って、テスターで取引履歴のデータを取得しています。 for(int i=0;i<HistoryDealsTotal();i++){ ulong deal_ticket=HistoryDealGetTicket(i); Print("ticket=",deal_ticket); Print("price=",HistoryDealGetDouble(deal_ticket,DEAL_PRICE)); Print("time=",TimeToString(HistoryDealGetInteger(deal_ticket,DEAL_TIME)));そして、過去ログにはこんなものが出てきます。0 22:58:16.487 Core 1 2016.04.01 00:00 シンボル期間GBPUSDの現時点での端末履歴のバー数=7729本 JR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ロット0.01でトレード 0を試行。 EL 0 22:58:16.487 Core 1 2016.04.01 03:00:00 成り行き買い 0.01 GBPUSD sl: 1.43033 tp: 1.44034 (1.43646 / 1.43654 / 1.43646) GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 deal #2 buy 0.01 GBPUSD at 1.43654 done (based on order #2) GE 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ディール実行 [#2 buy 0.01 GBPUSD at 1.43654]. NK 0 22:58:16.487 Core 1 2016.04.01 03:00:00 order performed buy 0.01 at 1.43654 [#2 buy 0.01 GBPUSD at 1.43654 ]です。 HI 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=1 HM 0 22:58:16.487 Core 1 2016.04.01 03:00:00 price=0.0 HH 0 22:58:16.487 Core 1 2016.04.01 03:00:00 time=2016.04.01 00:00 CR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=2 ID 0 22:58:16.487 Core 1 2016.04.01 03:00:00 price=1.43654 OP 0 22:58:16.487 Core 1 2016.04.01 03:00:00 time=2016.04.01 03:00価格ゼロの最初の取引はどこから来るのか?しないのです :-)私はそれをしない:-)説明plz。Z.P.わかったような気がします。最初の取引では、10Kの利益がある。どうしたらいいのかわからないが、やはり不思議である。なぜ?そして、もうひとつの疑問があります。取引(1.43654での買い)はまだ始まっていない。歴史の中でどのように登場したのでしょうか。MQL4のように、クローズしたトレードのデータのみを配列で取得する必要があります。どうすればいいのか?追伸:DEAL_ENTRY_OUTで フィルタリングする? Questions from Beginners MQL5 developping a new EA EA study book MT5 Sergey Savinkin 2016.04.17 17:19 #5626 Alexandr Saprykin: 端末の再インストールは試されましたか? はい、ありがとうございます。それだけが救いでした。 Sergey Gritsay 2016.04.18 09:41 #5627 Karputov Vladimir: 悪い例です。MQL5でインジケータ・ハンドルを格納する変数は、「ヘッダー」-プログラムのグローバル変数 領域-で宣言する必要があり、OnInit()でハンドルを取得します。そして、その時だけ、プログラムのどこからでもデータを取得できるように、インジケーターのハンドルを参照することができます。OnInit()関数は一度だけ実行され、初回からインジケータが作成される保証は100%ないので、ハンドルの取得についてはあまり同意できません。変数を宣言するのは正しいかもしれませんが、以下のドキュメントにstatic変数を使ったバリアントより悪いことが書いてあるかどうか知りたいのです。static キーワードで宣言されたローカル変数は、関数が存在する限り、その値を保持します。その後、関数を呼び出すたびに、これらのローカル変数には、前回の呼び出し時に持っていた値が格納されます。 Sergey Gritsay 2016.04.18 09:42 #5628 <br /> translate="no">。DEAL_ENTRY_OUTで 絞り込む Vladimir Karputov 2016.04.18 09:49 #5629 Sergey Gritsay:OnInit()関数は一度だけ実行され、初回からインジケータが作成される保証は100%ないので、ハンドルの取得についてはあまり同意できません。変数の宣言については正しいかもしれませんが、スタティック変数のオプションがどの程度悪いのか、ドキュメントで知りたいのです...インジケータ・ハンドル作成 時のOnInit()で確認することにします。インジケータ・ハンドルが作成されていない場合、onOnit() でINIT_FAILED を返します。つまり、インジケータ・ハンドルは一度だけ、OnInit()の中だけで作成されるのです。これは「4」ではなく、プログラムの隅々までごちゃごちゃと迷走し、ハンドルを宣言しているのです。 Artyom Trishkin 2016.04.18 09:57 #5630 Karputov Vladimir: このため、OnInit()では、インジケータ・ハンドルが作成 されているかどうかをチェックします。インジケータ・ハンドルが作成されていない場合、OnOnit()はINIT_FAILEDを 返す必要があります。つまり、インジケータ・ハンドルは一度だけ、OnInit()の中だけで作成されるのです。これは「4」ではない。プログラムの隅々まで、ごちゃごちゃと彷徨い、ハンドルを宣言しているわけではない。 私は、そこまで断定的なことは言いません。クローゼットの中がごちゃごちゃしているのではなく、頭の中がごちゃごちゃしているのだ(C) 1...556557558559560561562563564565566567568569570...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
はい、MQL 5について質問しているのですが? はい、現在のシンボルのデータにアクセスする必要があります。EAコードに必要なデータです。ですから、例えば、現在のバーの前のバーの終値を 知る必要があります。
CopyTimeの例を ご覧ください。
はい、MQL5について質問しています。 はい、現在のシンボルのデータにアクセスする必要があります。Expert Advisorのコードに必要なデータです。例えば、現在のバーの前のバーの終値を 知る必要があります。
少しはドキュメントを読んだらどうなんだ。
以下は終値とインジケータバッファを取得する例です。
...
以下は、終値とインジケータ・バッファを取得する例です。
皆さん、こんにちは。
OnTradeイベントを使って、テスターで取引履歴のデータを取得しています。
そして、過去ログにはこんなものが出てきます。
0 22:58:16.487 Core 1 2016.04.01 00:00 シンボル期間GBPUSDの現時点での端末履歴のバー数=7729本
JR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ロット0.01でトレード 0を試行。
EL 0 22:58:16.487 Core 1 2016.04.01 03:00:00 成り行き買い 0.01 GBPUSD sl: 1.43033 tp: 1.44034 (1.43646 / 1.43654 / 1.43646)
GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 deal #2 buy 0.01 GBPUSD at 1.43654 done (based on order #2)
GE 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ディール実行 [#2 buy 0.01 GBPUSD at 1.43654].
NK 0 22:58:16.487 Core 1 2016.04.01 03:00:00 order performed buy 0.01 at 1.43654 [#2 buy 0.01 GBPUSD at 1.43654 ]です。
HI 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=1
HM 0 22:58:16.487 Core 1 2016.04.01 03:00:00 price=0.0
HH 0 22:58:16.487 Core 1 2016.04.01 03:00:00 time=2016.04.01 00:00
CR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=2
ID 0 22:58:16.487 Core 1 2016.04.01 03:00:00 price=1.43654
OP 0 22:58:16.487 Core 1 2016.04.01 03:00:00 time=2016.04.01 03:00
価格ゼロの最初の取引はどこから来るのか?しないのです :-)
私はそれをしない:-)説明plz。
Z.P.わかったような気がします。最初の取引では、10Kの利益がある。どうしたらいいのかわからないが、やはり不思議である。なぜ?
そして、もうひとつの疑問があります。取引(1.43654での買い)はまだ始まっていない。歴史の中でどのように登場したのでしょうか。
MQL4のように、クローズしたトレードのデータのみを配列で取得する必要があります。どうすればいいのか?
追伸:DEAL_ENTRY_OUTで フィルタリングする?
端末の再インストールは試されましたか?
悪い例です。MQL5でインジケータ・ハンドルを格納する変数は、「ヘッダー」-プログラムのグローバル変数 領域-で宣言する必要があり、OnInit()でハンドルを取得します。そして、その時だけ、プログラムのどこからでもデータを取得できるように、インジケーターのハンドルを参照することができます。
OnInit()関数は一度だけ実行され、初回からインジケータが作成される保証は100%ないので、ハンドルの取得についてはあまり同意できません。変数を宣言するのは正しいかもしれませんが、以下のドキュメントにstatic変数を使ったバリアントより悪いことが書いてあるかどうか知りたいのです。
static キーワードで宣言されたローカル変数は、関数が存在する限り、その値を保持します。その後、関数を呼び出すたびに、これらのローカル変数には、前回の呼び出し時に持っていた値が格納されます。
DEAL_ENTRY_OUTで 絞り込む
OnInit()関数は一度だけ実行され、初回からインジケータが作成される保証は100%ないので、ハンドルの取得についてはあまり同意できません。変数の宣言については正しいかもしれませんが、スタティック変数のオプションがどの程度悪いのか、ドキュメントで知りたいのです
...
このため、OnInit()では、インジケータ・ハンドルが作成 されているかどうかをチェックします。インジケータ・ハンドルが作成されていない場合、OnOnit()はINIT_FAILEDを 返す必要があります。つまり、インジケータ・ハンドルは一度だけ、OnInit()の中だけで作成されるのです。これは「4」ではない。プログラムの隅々まで、ごちゃごちゃと彷徨い、ハンドルを宣言しているわけではない。