- ベストアンサー
2回目のエントリーで時間通りにクローズ出来ない
- 2回目のエントリーで決済が時間通りにできない問題が発生しています。
- 質問者は過去の質問内容を元にパラメーターをコピーして使用しており、2回目のエントリーでも同じようにコピーした結果、決済ができなくなっています。
- 質問者はオーダーの時間と現在の時間を比較して条件分岐を行っているが、2回目のエントリーの後に決済ができない問題が発生している。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
}を重ねた理由も分かりますので、もったいぶらずにお話ししますね。 バグの箇所は、 if(Cmd_2 == OP_BUY){ OrderSend(Symbol(),Cmd_2,Lots_2,Ask,Slippage_2,Ask-StopLoss_2*Point,Ask+TakeProfit_2*Point,"",MagicNumber_2,0,Red); return(0); { の最後のカッコが逆になっているのです。正しくは、}ですね。 このバグが分からなかったため、プログラムの最後に}を重ねて辻褄を合わせたのだと思います。 あなたにとっては残念ながら、それでエラーが出なくなってしまったのですね。 さて、 コンパイル時によく{}や()関係のエラーが出ますが、徒にカッコを増やして様子を見るのではなく、プログラム自体をつぶさに観察してバグの発見に努めましょう。 簡単なことです。99%の確率で、どこかに{}()が足りないか、多すぎるのですから。。。 では、また。
その他の回答 (2)
- Saitar
- ベストアンサー率41% (192/464)
まずは安心して下さい。バグを見つけました。 さて、私は先に2つの指摘をしました。 あなたは一つ目の指摘に答えておりません。 (Q)なぜ、最後に3つも}を書いたのですか? プログラムを書く上でやってはいけない禁じ手ですね。 勝手に文法を作ってはいけません。
- Saitar
- ベストアンサー率41% (192/464)
(1)なぜ、最後に}が3つも並んでいるんでしょうか? (2)見たところ、上記を除き課題が見受けられません。 できればEA全体を掲示できませんか?
補足
いつも相談に乗って頂きありがとうございます。 文字数の関係でパラメーターを載せる事が出来ませんでしたが、 以下パラメーターを載せますので前のプログラムと合わせて見て下さい。 宜しくお願いします。 ----------------------------------------------------- extern string X = "Basic Settings"; //基本設定 extern int MagicNumber = 1001; //マジックナンバー extern double TakeProfit = 150; //リミット[pips] extern double StopLoss = 150; //ストップ[pips] extern double Lots = 0.1; //ロットサイズ extern int Cmd = OP_BUY; //エントリー方法[OP_BUY/OP_SELL] extern int Slippage = 30; //スリッページ extern string XX = "Order Settings"; //新規注文設定 extern bool CheckOrderHour = true; //時間の判定有無 extern int OrderHour = 1; //時間 extern bool CheckOrderMinute = true; //分の判定有無 extern int OrderMinute = 5; //分 extern bool CheckOrderSeconds = true; //秒の判定有無 extern int OrderSeconds = 0; //秒 extern string XXX = "Close Settings"; //決済注文設定 extern bool CheckCloseHour = true; //時間の判定有無 extern int CloseHour = 1;//時 //時間 extern bool CheckCloseMinute = true; //分の判定有無 extern int CloseMinute = 10;//分 //分 extern bool CheckCloseSeconds = true; //秒の判定有無 extern int CloseSeconds = 0;//秒 //秒 extern string X_2 = "Basic Settings"; //基本設定 extern int MagicNumber_2 = 1001; //マジックナンバー extern double TakeProfit_2 = 150; //リミット[pips] extern double StopLoss_2 = 150; //ストップ[pips] extern double Lots_2 = 0.1; //ロットサイズ extern int Cmd_2 = OP_BUY; //エントリー方法[OP_BUY/OP_SELL] extern int Slippage_2 = 30; //スリッページ extern string XX_2 = "Order Settings"; //新規注文設定 extern bool CheckOrderHour_2 = true; //時間の判定有無 extern int OrderHour_2 = 2; //時間 extern bool CheckOrderMinute_2 = true; //分の判定有無 extern int OrderMinute_2 = 5; //分 extern bool CheckOrderSeconds_2 = true; //秒の判定有無 extern int OrderSeconds_2 = 0; //秒 extern string XXX_2 = "Close Settings"; //決済注文設定 extern bool CheckCloseHour_2 = true; //時間の判定有無 extern int CloseHour_2 = 2;//時 //時間 extern bool CheckCloseMinute_2 = true; //分の判定有無 extern int CloseMinute_2 = 10;//分 //分 extern bool CheckCloseSeconds_2 = true; //秒の判定有無 extern int CloseSeconds_2 = 0;//秒 //秒
お礼
これですべて解決しました。本当にありがとうござます。<m(__)m> エラーメッセージがないので気づかないものですね。