MT4のプログラムを勉強しています

MT4のプログラムを勉強しています

匿名さん

MT4のプログラムを勉強しています。
以下のようなエラーが出るのですが、どこをどうして良いかわかりません。
詳しい方のご指南をいただきたいです。
2 error(s),0 warning(s) `}`- unexpected end of program `{`- unbalanced parentheses ***************************** int start() { //変数の宣言 int cnt, CurrentPosition; int Ticket; double kakoa,gennzaia; double kakob,gennzaib; // オーダーチェック(ポジションなどのデータ) CurrentPosition=-1; for(cnt=0;cnt < OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS); if(OrderSymbol() == Symbol()) CurrentPosition=cnt; } //一時間前の21日線 kakoa = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1); //一時間前の90日線 kakob = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,1); //現在の21日線 gennzaia = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0); //現在の90日線 gennzaib = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0); // ポジションチェック ポジション無し if(CurrentPosition == -1) //もし21日線が90日線を下から上にクロスしたら if(kakoa < kakob && gennzaia >= gennzaib) { //買いポジションを取る Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } //もし21日線が90日線を上から下にクロスしたら if(kakoa > kakob && gennzaia <= gennzaib) { //売りポジションを取る Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } // ポジション有り else { //ポジションの選択 OrderSelect(Ticket,SELECT_BY_POS); //ポジションの確認 if(OrderSymbol() == Symbol()) { //もし買いポジションだったら if(OrderType()==OP_BUY) { //もし21日線が90日線を上から下にクロスしたら if( kakoa > kakob && gennzaia <= gennzaib) { //手仕舞い OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); //ドテンで売りポジションを取る Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } } //もし売りポジションだったら else if(OrderType()==OP_SELL) { //もし21日線が90日線を下から上にクロスしたら if( kakoa < kakob && gennzaia >= gennzaib) { //手仕舞い OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); //ドテンで買いポジションを取る Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } } } } return(0); *****************************

まずエラーの意味ですが startイベントハンドラ関数の閉じ中括弧がありません。
ということです。
つまりは、 現在、startイベント関数は int start(){ return(0); となっているということです。
以下のように中括弧のとじ括弧を記述してください。
int start(){ return(0); } このコードの問題点はまだあります。
OrderSelect関数、 OrderClose関数の戻り値を変数に受け取ってください。
OrderSelect(Ticket,SELECT_BY_POS); ↓↓↓ bool selected = OrderSelect(Ticket,SELECT_BY_POS); 同じくOrderCloseも OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); ↓↓↓ bool closed = OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); 以下のコードが修正後のコードです。
メタエディターで修正しましたのでコメントは文字化けしていますが int start() { //螟画焚縺ョ螳」險€ int cnt, CurrentPosition; int Ticket; double kakoa,gennzaia; double kakob,gennzaib; // 繧ェ繝シ繝€繝シ繝√ぉ繝・け・医・繧ク繧キ繝ァ繝ウ縺ェ縺ゥ縺ョ繝・・繧ソ・・ CurrentPosition=-1; for(cnt=0;cnt < OrdersTotal();cnt++) { bool selected1 = OrderSelect(cnt,SELECT_BY_POS); if(OrderSymbol() == Symbol()) CurrentPosition=cnt; } //荳€譎る俣蜑阪・・抵シ第律邱・ kakoa = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1); //荳€譎る俣蜑阪・・呻シ先律邱・ kakob = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,1); //迴セ蝨ィ縺ョ・抵シ第律邱・ gennzaia = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0); //迴セ蝨ィ縺ョ・呻シ先律邱・ gennzaib = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0); // 繝昴ず繧キ繝ァ繝ウ繝√ぉ繝・け 繝昴ず繧キ繝ァ繝ウ辟。
縺・ if(CurrentPosition == -1) //繧ゅ@・抵シ第律邱壹′・呻シ先律邱壹r荳九°繧我ク翫↓繧ッ繝ュ繧ケ縺励◆繧・ if(kakoa < kakob && gennzaia >= gennzaib) { //雋キ縺・・繧ク繧キ繝ァ繝ウ繧貞叙繧・ Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } //繧ゅ@・抵シ第律邱壹′・呻シ先律邱壹r荳翫°繧我ク九↓繧ッ繝ュ繧ケ縺励◆繧・ if(kakoa > kakob && gennzaia <= gennzaib) { //螢イ繧翫・繧ク繧キ繝ァ繝ウ繧貞叙繧・ Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } // 繝昴ず繧キ繝ァ繝ウ譛峨j else { //繝昴ず繧キ繝ァ繝ウ縺ョ驕ク謚・ bool selected2 = OrderSelect(Ticket,SELECT_BY_POS); //繝昴ず繧キ繝ァ繝ウ縺ョ遒コ隱・ if(OrderSymbol() == Symbol()) { //繧ゅ@雋キ縺・・繧ク繧キ繝ァ繝ウ縺 縺」縺溘i if(OrderType()==OP_BUY) { //繧ゅ@・抵シ第律邱壹′・呻シ先律邱壹r荳翫°繧我ク九↓繧ッ繝ュ繧ケ縺励◆繧・ if( kakoa > kakob && gennzaia <= gennzaib) { //謇倶サ戊・縺・ bool closed1 = OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); //繝峨ユ繝ウ縺ァ螢イ繧翫・繧ク繧キ繝ァ繝ウ繧貞叙繧・ Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } } //繧ゅ@螢イ繧翫・繧ク繧キ繝ァ繝ウ縺 縺」縺溘i else if(OrderType()==OP_SELL) { //繧ゅ@・抵シ第律邱壹′・呻シ先律邱壹r荳九°繧我ク翫↓繧ッ繝ュ繧ケ縺励◆繧・ if( kakoa < kakob && gennzaia >= gennzaib) { //謇倶サ戊・縺・ bool closed2 = OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); //繝峨ユ繝ウ縺ァ雋キ縺・・繧ク繧キ繝ァ繝ウ繧貞叙繧・ Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } } } } return(0); }

Greenに関する回答

【動画】車・バイクニュース

【動画だから100倍楽しめる】YouTube車・バイク動画(すべて見る)

見て楽しむニュース

【動画だから100倍楽しめる】見て楽しむ車・バイクニュース(すべて見る)

【速報】車・バイクニュース

完全無料で話題の車・バイクニュースがすぐに読める(すべて見る)

【話題】今話題の動画

SNSで1000いいね!以上の話題の動画(すべて見る)

この質問に答えてみる

MT4のプログラムを勉強しています

匿名さん

MT4のプログラムを勉強しています。
以下のようなエラーが出るのですが、どこをどうして良いかわかりません。
詳しい方のご指南をいただきたいです。
2 error(s),0 warning(s) `}`- unexpected end of program `{`- unbalanced parentheses ***************************** int start() { //変数の宣言 int cnt, CurrentPosition; int Ticket; double kakoa,gennzaia; double kakob,gennzaib; // オーダーチェック(ポジションなどのデータ) CurrentPosition=-1; for(cnt=0;cnt < OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS); if(OrderSymbol() == Symbol()) CurrentPosition=cnt; } //一時間前の21日線 kakoa = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1); //一時間前の90日線 kakob = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,1); //現在の21日線 gennzaia = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0); //現在の90日線 gennzaib = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0); // ポジションチェック ポジション無し if(CurrentPosition == -1) //もし21日線が90日線を下から上にクロスしたら if(kakoa < kakob && gennzaia >= gennzaib) { //買いポジションを取る Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } //もし21日線が90日線を上から下にクロスしたら if(kakoa > kakob && gennzaia <= gennzaib) { //売りポジションを取る Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } // ポジション有り else { //ポジションの選択 OrderSelect(Ticket,SELECT_BY_POS); //ポジションの確認 if(OrderSymbol() == Symbol()) { //もし買いポジションだったら if(OrderType()==OP_BUY) { //もし21日線が90日線を上から下にクロスしたら if( kakoa > kakob && gennzaia <= gennzaib) { //手仕舞い OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); //ドテンで売りポジションを取る Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } } //もし売りポジションだったら else if(OrderType()==OP_SELL) { //もし21日線が90日線を下から上にクロスしたら if( kakoa < kakob && gennzaia >= gennzaib) { //手仕舞い OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); //ドテンで買いポジションを取る Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red); } } } } return(0); *****************************

※未入力の場合「乗り物好き」として匿名で回答できます。







※未入力可能

全角10文字以上4000文字以内