前提
ここに質問の内容を詳しく書いてください。
(例)
コンパイルをするとエラーが出ますが、どこを見ても間違ってるところが見つかりません。
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
何行目でどうやって閉じればいいですか?