質問するログイン新規登録
MQL4

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

Q&A

解決済

1回答

3600閲覧

MQL4の関数に関するエラー

nisei2

総合スコア19

MQL4

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

0グッド

0クリップ

投稿2020/09/29 09:53

0

0

前提・実現したいこと

エラーの解決

発生している問題・エラーメッセージ

'}' - not all control paths return a value

該当のソースコード

MQL4

1//買いの指値位置の関数 2double BS(){ 3 double O0 = iOpen(NULL,PERIOD_D1,0);//現在の足の始値 4 5 int cheapestprice = iLowest(NULL,PERIOD_D1,MODE_LOW,20,1);//最安値 6 7 double cheapestH = iHigh(NULL,0,cheapestprice);//最安値の高値 8 9 double b;//変数宣言 10 11 12 //現在の足の始値が最安値の高値より高いなら、変数bに現在の足の始値ー最安値の高値までのPIPS差を入れる。 13 if(O0 > cheapestH){ 14 b = O0-cheapestH; 15 return b; 16 } 17 }

試したこと

翻訳してみたのですが翻訳された意味がよくわからない状態です。
翻訳したもの→「'}'-すべての制御パスが値を返すわけではありません」

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

1T2R3M4

2020/09/29 10:00

if に入らないときreturn するコードがないってことでは。
nisei2

2020/09/29 10:05

回答ありがとうございます! 教えてもらって申し訳ないのですが、ifに入らないときの分もreturnを作ればいいのでしょうか? まだ初心者なもので理解できずすみません。
1T2R3M4

2020/09/29 10:14

はいそうです。 BS() がdouble 宣言されているので値を返す必要があります。 最後の}の前にreturn 文(値が必要)を入れてください。
nisei2

2020/09/29 21:27

ありがとうございます。とても助かりました。
guest

回答1

0

ベストアンサー

ifの条件に一致した時しか値を返していません。
関数BS()は必ずdouble型の値を返さなければならないのでエラーになっています。

mq4

1if (O0 > cheapestH) 2{ 3 b = O0-cheapestH; 4 return b; // 条件に一致する時に返したい値 5} 6else 7{ 8 return 0; // 条件に一致しない時に返したい値 9}

投稿2020/09/29 10:07

buibui80

総合スコア1033

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

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

nisei2

2020/09/29 21:31

returnは関数に一つしかつけてはいけないのかと思ってました。 とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問