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

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

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

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

Q&A

解決済

1回答

4769閲覧

MOL言語 MT4にて '[' - open parenthesis expected のエラーについてわかりません、よろしくお願いします。

Seko1523

総合スコア1

MQL4

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

0グッド

0クリップ

投稿2022/05/26 00:20

初心者です。自分でも調べてみたのですがあと一つエラーが消せません。よろしくお願いします。

エラーメッセージは'[' - open parenthesis expected BB_Entry.mq4 122 22となっていて、
122行近辺は
//売りエントリー
if(BB_UP2 > iClose[2] && BB_UP1<=iClose[1]&&ADX_value<ADX_LINE&&Time_Entry == true&&Position_Count == 0)
{
Ticket = OrderSend(NULL,OP_SELL,Lots,Bid,slipPoint,songiriPoint,rikaku*Point,NULL,0,0,clrRed);

と書きました。122行目の22文字目はiClise[2]の[でしっかり閉じていると思うのですが、、、
分かる方がいましたら、教えてください。よろしくお願いします。

以下、全文です。
//+------------------------------------------------------------------+
//| BB_Entry.mq4 |
//| Copyright 2022, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int Ticket = 0;
input double Lots = 0.1;
input int slip = 10;
input int songiri = 50;
input int rikaku = 50;
input int BB_per = 20;
input int BB_dev = 2;
input int ADX_per = 14;
input double ADX_LINE = 20.0;

int Summer_5ji = 22;
int Summer_9ji = 2;
int Winter_5ji = 23;
int Winter_9ji = 3;

//サマータイム関数
bool SummerTime(){
bool ret = false;

datetime summerStart; //サマータイム開始日
datetime summerEnd; //サマータイム終了日
datetime tc = TimeCurrent();

//サマータイム開始日を3/14の前の日曜日に設定
summerStart = StringToTime(IntegerToString(Year()) + ".03.14");
summerStart = summerStart - TimeDayOfWeek(summerStart) * 24 * 60 * 60;

//サマータイム終了日を11/7の前の日曜日に設定
summerEnd = StringToTime(IntegerToString(Year()) + ".11.07");
summerEnd = summerEnd - TimeDayOfWeek(summerEnd) *24 * 60 * 60;

//現在の時刻がサマータイム開始日と終了日の間であればtrueを返す
if(tc > summerStart && tc < summerEnd) ret = true;
return ret;
}

//ポジションチェック関数
int OpendOrderTotal(){

int count = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderCloseTime() == 0){
if(OrderType() == OP_BUY || OrderType() == OP_SELL){
count++;}
}
}
return count;}

//トレンドが無い時間か聞く関数
int Time_Entry (int Summer_5ji,int Summer_9ji,int Winter_5ji,int Winter_9ji,bool SummerTime)
{
bool ret = false;
if(SummerTime == true)
{
if(Summer_5ji < Hour() || Hour() < Summer_9ji) ret =true;
}
else
{
if(Winter_5ji < Hour() || Hour() < Winter_9ji) ret = true;
}

return ret ;
}

int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---

double BB_UP1 = iBands(NULL,0,BB_per,BB_dev,0,PRICE_CLOSE,MODE_UPPER,1);
double BB_UP2 = iBands(NULL,0,BB_per,BB_dev,0,PRICE_CLOSE,MODE_UPPER,2);
double BB_LO1 = iBands(NULL,0,BB_per,BB_dev,0,PRICE_CLOSE,MODE_LOWER,1);
double BB_LO2 = iBands(NULL,0,BB_per,BB_dev,0,PRICE_CLOSE,MODE_LOWER,2);
double ADX_value = iADX(NULL,0,ADX_per,PRICE_CLOSE,MODE_MAIN,1);
bool SummerTime = SummerTime();
//datetime ima = TimeCurrent();
int Position_Count = OpendOrderTotal();
bool Time_Entry = Time_Entry(Summer_5ji,Summer_9ji,Winter_5ji,Winter_9ji,SummerTime);

//売りエントリー
if(BB_UP2 > iClose[2] && BB_UP1<=iClose[1]&&ADX_value<ADX_LINE&&Time_Entry == true&&Position_Count == 0)
{
Ticket = OrderSend(NULL,OP_SELL,Lots,Bid,slipPoint,songiriPoint,rikaku*Point,NULL,0,0,clrRed);
}

//買いエントリー

if(BB_LO2<iClose[2]&&BB_LO1>=iClose[1]
&&
ADX_value < ADX_LINE
&&
Time_Entry == true
&&
Position_Count == 0)
{
Ticket = OrderSend(NULL,OP_BUY,Lots,Ask,slipPoint,songiriPoint,rikaku*Point,NULL,0,0,clrBlue);
}
}
//+------------------------------------------------------------------+

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

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

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

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

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

guest

回答1

0

ベストアンサー

iCloseは、変数定義されていませんので標準関数ではないでしょうか?
関数の場合 iClose(.....と記述します。
Close[...なら終値を持つ変数を意味します。

投稿2022/05/26 04:27

yu-ima

総合スコア249

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

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

Seko1523

2022/05/26 04:35

ありがとうございます。 無事にエラーが消えました。 間違えている箇所だけでなく、説明もつけていただき勉強になりました。 関数と変数は違うものだと、はっきりわかりました。 初めて作ったコードがエラーなしで動き感動しました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問