質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1550閲覧

ごくごく簡単なはずのOrderSend関数が機能しない。

mokopi

総合スコア39

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/06/21 21:31

編集2021/06/23 03:11

OrderSend関数を試したが、機能しない。

現在、mqlを入門レベルの参考書で勉強しています。

只今参考書では「注文してみよう」の段階です。

参考書に従って(参考書に掲載しているのとまったく同じプログラムを書いています。)、
以下のスクリプトをMT4のデモ口座で実行しましたが、無反応(注文したことにならない。青い矢印もつかない。)です。

考えたのですが、わかりません。どこに問題があるのでしょうか?

スクリプトーーーーーーーーーーーーーーーーーーーーーー

スクリプトのファイル名 21-0621

#property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict void OnStart() { OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,"テスト注文",0,0,clrBlue); }

実行してみた結果の画面ーーーーーーーーーーーーーーーーーーーーーーー
イメージ説明

添付画像について
※エキスパートに、実行されたようなメッセージは残ってます。

追記1ーーーーーーーーーーー

● OrderSendの戻り値

-1でエラーでした

● GetLastError()の値

0でした。
しらべたところ、ERR_NO_ERROR エラーなし とのことです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mah

2021/06/22 04:18 編集

OrderSendの戻り値を確認して、エラーだった場合はGetLastError()の値を追記してください。
mokopi

2021/06/23 03:12

追記依頼ありがとうございます。 質問画面に追記完了しました。 ※念のためこちらにも記載します。 追記1ーーーーーーーーーーー ● OrderSendの戻り値 ↓ -1でエラーでした ● GetLastError()の値 ↓ 0でした。 しらべたところ、ERR_NO_ERROR エラーなし とのことです。
mah

2021/06/23 04:06

OrderSendでエラーになっているのにエラーが入ってない? ちなみに業者はどこをつかっているのでしょうか? 例えばFXTFとかだと自動売買が許可されていないので下記のコードだと4112が出力されます。 int err = OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,"テスト注文",0,0,clrBlue); if (err == -1) { printf("error = %d", GetLastError()); }
mokopi

2021/06/23 05:49

頂いたコードを入力して試し,エラーを調べて解決しました。 現在のデモアカウントでは新規注文ができない状態であることが原因でした。 アカウントを作り直して解決しました。 エラーが0になっていたのは、僕のミスです。 GetlastError()がよくわかっておらず、下記のように書いてました。 僕が初めに作ったスクリプトーーー GetLastError(); Print("エラー内容",_LastError); ーーーーー ↓頂いたコードを参考に、このようにしたら、正常にエラーチェックできました。 Print("エラー内容",GetLastError()); とても助かりました。 ありがとうございます。
guest

回答1

0

自己解決

mahさんから頂いたエラーチェックのコードを参考に、エラー内容をしらべた。
デモアカウントが新規注文できない状態だったので、デモアカウントを作り直して、解決した。

投稿2021/06/23 05:51

mokopi

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問