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

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

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

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

Q&A

1回答

636閲覧

{}の使い方でエラーが出てしまいます。

cameraman

総合スコア0

MQL4

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

0グッド

0クリップ

投稿2022/09/28 05:15

編集2022/09/28 15:04

前提

ここに質問の内容を詳しく書いてください。
(例)
コンパイルをするとエラーが出ますが、どこを見ても間違ってるところが見つかりません。
MQL4でEAを作成しています。
ボリバンでエントリー、直近の高値安値で決済します。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ボリバンでエントリー、直近の高値安値で決済します。

- 決済の方法はドンチャンチャネルまたはHLバンドという名前のインジケーターがありますが、今回は単純に直近の高値安値から決済します。

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

} unexpected end of program { unbalanced parentheses

該当のソースコード

MQL4

1 2//本書ライブラリ 3#include "LibEA4.mqh" 4#property copyright "aaaaa" 5#property link "https://www.mql5.com" 6#property version "1.00" 7#property strict 8 9//ここから外部関数を宣言する 10 11int TicketB; 12int TicketCloseB; 13int EntryOKB; 14int TicketS; 15int TicketCloseS; 16int EntryOKS; 17input int HLperiod=5; //最高値・最安値を算出する期間 18 19 20//+------------------------------------------------------------------+ 21//| Expert initialization function | 22//+------------------------------------------------------------------+ 23int OnInit() 24 { 25//--- 26 27//--- 28 return(INIT_SUCCEEDED); 29 } 30//+------------------------------------------------------------------+ 31//| Expert deinitialization function | 32//+------------------------------------------------------------------+ 33void OnDeinit(const int reason) 34 { 35//--- 36 37 } 38//+------------------------------------------------------------------+ 39//| Expert tick function | 40//+------------------------------------------------------------------+ 41void OnTick() 42{ 43//---ここからメインのプログラム 44//買いのコード 45 46//エントリー可能かどうかの事前判断 47 48if(iHigh(NULL,PERIOD_H1,0)<iBands(NULL,PERIOD_H1,20,2,0,PRICE_HIGH,MODE_UPPER,0)) 49{EntryOKB=1;} 50 51//買い注文 52if(iHigh(NULL,PERIOD_H1,0)>iBands(NULL,PERIOD_H1,20,2,0,PRICE_HIGH,MODE_UPPER,0)&&TicketB<1&&EntryOKB==1) 53 54{ 55TicketB=OrderSend(Symbol(),OP_BUY,0.1,Ask,50,0,0,"買いエントリー",0,0,clrBlue); 56} 57 58//エントリー事前判断関数のリセット 59if(TicketB>1) 60{EntryOKB=0;} 61 62//買い決済 63//15分足でストップロス 64//手仕舞いシグナル関数 65int ExitSignal() 66{ 67//一本前の最高値・最安値 68double Hline = High[iHighest(NULL,PERIOD_M15,MODE_HIGH,HLPeriod,1)]; 69double Lline = Low[iLowest(NULL,PERIOD_M15,MODE_LOW,HLPeriod,1)]; 70} 71 72{TicketCloseB=OrderClose(TicketB,0.1,Bid,10,clrBlue);} 73 74//注文変数のリセット 75if(TicketCloseB>=1) 76{TicketB=0;} 77 78if(TicketB==0) 79{TicketCloseB=0;} 80 81//買いシグナル 82if(Close[0] > Hline) ret = 1; 83if(Close[0] < Lline) ret = -1; 84 85return ret; //シグナルの出力 86 87 88//ここから売りのコード 89//エントリー可能かどうかの事前判断 90if(iLow(NULL,PERIOD_H1,0)>iBands(NULL,PERIOD_H1,20,2,0,PRICE_LOW,MODE_LOWER,0)) 91{EntryOKS=1;} 92 93//売り注文 94if(iLow(NULL,PERIOD_H1,0)<iBands(NULL,PERIOD_H1,20,2,0,PRICE_LOW,MODE_LOWER,0)&&TicketS<1&&EntryOKS==1) 95 96{ 97TicketS=OrderSend(Symbol(),OP_SELL,0.1,Bid,50,0,0,"売りエントリー",0,0,clrRed); 98} 99 100//エントリー事前判断関数のリセット 101if(TicketS>1) 102{EntryOKS=0;} 103 104//売り決済 105//15分足でストップロス 106//手仕舞いシグナル関数 107int ExitSignal() 108{ 109//一本前の最高値・最安値 110double Hline = High[iHighest(NULL,PERIOD_M15,MODE_HIGH,HLPeriod,1)]; 111double Lline = Low[iLowest(NULL,PERIOD_M15,MODE_LOW,HLPeriod,1)]; 112 113 114{TicketCloseS=OrderClose(TicketS,0.1,Ask,10,clrRed);} 115 116//注文変数のリセット 117if(TicketCloseS>=1) 118{TicketS=0;} 119 120if(TicketS==0) 121{TicketCloseS=0;} 122 123//売りシグナル 124if(Close[0] > Hline) ret = 1; 125if(Close[0] < Lline) ret = -1; 126 127return ret; //シグナルの出力 128 } 129//+------------------------------------------------------------------+

試したこと

考えられるところに{}を足したり引いたりしましたがエラーが増えるだけでした。

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

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

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

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

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

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

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

cameraman

2022/09/28 07:11

何行目でどうやって閉じればいいですか?
guest

回答1

0

OnTick{が閉じていません

投稿2022/09/28 06:19

ozwk

総合スコア13521

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

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

cameraman

2022/10/10 06:16

閉じるにはどうすればいいんですか?
ozwk

2022/10/10 11:01 編集

ExitSignalの前で} を書きます ただ、ExitSignalが複数あったりして滅茶苦茶なので、まっさらな状態からかきなおしたほうが早いと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問