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

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

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

MQL5(MetaQuotes Language 5)は、トレードロボットやカスタムインディケータを作成できる高レベル言語。MetaQuotes社の独自の取引プラットフォームのために開発されました。さまざまなサービスをリンクできるコミュニティも存在します。

Q&A

0回答

113閲覧

mql5のエラー解消方法がわかりません

slaim

総合スコア17

MQL5

MQL5(MetaQuotes Language 5)は、トレードロボットやカスタムインディケータを作成できる高レベル言語。MetaQuotes社の独自の取引プラットフォームのために開発されました。さまざまなサービスをリンクできるコミュニティも存在します。

0グッド

0クリップ

投稿2025/03/24 11:52

実現したいこと

//+------------------------------------------------------------------+
//| RVI_trade.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020,Yano"
#property link "https://www.fx-doremi.com/"
#property version "1.00"
#property strict

#define MAGIC 202005240933

extern int average_period = 7; //RVIの期間

extern double Lots = 0.1; //ロット
extern int Slippage = 30; //スリッページ

extern double Profitrate = 0.0005; //利確(0.00025=0.025%)
extern double SLrate = 0.0005; //損切り(0.00025=0.025%)

double before_closs_rvi = 0;

//フラグ
int Buy_flg = 0;
int Sell_flg = 0;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
before_closs_rvi = 0;

Buy_flg = 0;
Sell_flg = 0;

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

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
//変数
//現在の値
double now_rvi; //RVI
double now_signal; //シグナル
double now_rvi_1min;
double now_signal_1min;

//1ティック前の値 double before_rvi; //RVI double before_signal; //シグナル double before_rvi_1min; //RVI double before_signal_1min; //シグナル //トレード可能かチェック

// if(Volume[0]>1 || IsTradeAllowed()==false){
// Print("トレード不可");
// return;
// }

//現在値取得 //RVI now_rvi = iRVI(NULL,PERIOD_CURRENT,average_period,MODE_MAIN,0); now_rvi_1min = iRVI(NULL,PERIOD_MN1,average_period,MODE_MAIN,0); //シグナル now_signal = iRVI(NULL,PERIOD_CURRENT,average_period,MODE_SIGNAL,0); now_signal_1min = iRVI(NULL,PERIOD_MN1,average_period,MODE_SIGNAL,0); //1ティック前の情報取得 //RVI before_rvi = iRVI(NULL,PERIOD_CURRENT,average_period,MODE_MAIN,1); before_rvi_1min = iRVI(NULL,PERIOD_MN1,average_period,MODE_MAIN,1); //シグナル before_signal = iRVI(NULL,PERIOD_CURRENT,average_period,MODE_SIGNAL,1); before_signal_1min = iRVI(NULL,PERIOD_MN1,average_period,MODE_SIGNAL,1); //★2020-5-25 追記 ボリンジャーバンド2σ上下の幅が指定値以下? int check_bb_band2 = Check_BB_bands2_width(0.05); //順張り //ボラティリティ拡大なのでロング if(before_signal < 0 && now_signal >= 0 && Buy_flg == 0 && check_bb_band2 == 1){ // レートのリフレッシュ RefreshRates(); //ロングエントリー処理 OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask*(1-SLrate),Ask*(1+Profitrate),"Buy order",MAGIC,0,Blue); Buy_flg = 1; } //ボラティリティ縮小なのでショート if(before_signal > 0 && now_signal <= 0 && Sell_flg == 0 && check_bb_band2 == 1){ // レートのリフレッシュ RefreshRates(); //shortエントリー処理 OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid*(1+SLrate),Bid*(1-Profitrate),"Sell order",MAGIC,0,Red); Sell_flg = 1; } //メインとシグナルのゴールデンクロス if( (before_signal > before_rvi) && //1ティック前がシグナルのほうが大きい? (now_signal <= now_rvi) //クロスした? ){ //利確していなかったらポジション決済 ClosePositions_SELL(); Sell_flg = 0; } //メインとシグナルのデッドクロス if ( (before_signal < before_rvi) && //1ティック前がメインのほうが大きい? (now_signal >= now_rvi) //クロスした? ){ //利確していなかったらポジション決済 ClosePositions_BUY(); Buy_flg = 0; }

/* --- 騙し判定未実装のためコメントアウト

//逆張り //メインとシグナルのゴールデンクロス if( (before_signal > before_rvi) && //1ティック前がシグナルのほうが大きい? (now_signal <= now_rvi) && //クロスした? (check_bb_band2 == 1) //★追記 ボリンジャーバンドの幅が狭くない? ){ //利確していなかったらポジション決済 ClosePositions_SELL(); // レートのリフレッシュ RefreshRates(); //ロングエントリー処理 OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask*(1-SLrate),Ask*(1+Profitrate),"Buy order",MAGIC,0,Blue); //★追記 クロスした時のRVIを格納 before_closs_rvi = now_rvi; } //メインとシグナルのデッドクロス if ( (before_signal < before_rvi) && //1ティック前がメインのほうが大きい? (now_signal >= now_rvi) && //クロスした? (check_bb_band2 == 1) //★追記 ボリンジャーバンドの幅が狭くない? ){ //利確していなかったらポジション決済 ClosePositions_BUY(); // レートのリフレッシュ RefreshRates(); //ショートエントリー処理 OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid*(1+SLrate),Bid*(1-Profitrate),"Sell order",MAGIC,0,Red); //★追記 クロスした時のRVIを格納 before_closs_rvi = now_rvi; }

*/

}

//+------------------------------------------------------------------+
//| ポジション決済 |
//+------------------------------------------------------------------+
void ClosePositions_BUY(){
int i;

for(i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false){
break;
}

if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()){ continue; } //買いポジションのチェック if(OrderType() == OP_BUY){ OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White); break; } // ループを抜ける break;

}
}

void ClosePositions_SELL(){
int i;

for(i=0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false){ break; } if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()){ continue; } //売りポジションのチェック if(OrderType() == OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White); break; } // ループを抜ける break; } } //+------------------------------------------------------------------+ //| ボリンジャーバンド幅のチェック //| 引数の指定値以上の場合 1を返す | //+------------------------------------------------------------------+ int Check_BB_bands2_width(double my_max){ int my_ret = 0; //2σボリンジャーバンド double bb_2 = iBands(NULL,PERIOD_CURRENT,20,2,0,PRICE_CLOSE,1,0); //-2σボリンジャーバンド double bb_M2 = iBands(NULL,PERIOD_CURRENT,20,2,0,PRICE_CLOSE,2,0); //バンド幅計算 double bb_haba = bb_2 - bb_M2; //一定値かどうかのチェック if(bb_haba > my_max){
my_ret = 1;
}

return my_ret;
}
//+------------------------------------------------------------------+

発生している問題・分からないこと

上記の215行1列 56行3列 にエラー表示です。

エラーメッセージ

error

1'}' - unexpected end of program ea yano.mq4 214 1 2'{' - unbalanced parentheses ea yano.mq4 52 3 3

該当のソースコード

mql5

1特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

chatgptに聞いて、エラー解消を試したが特によくならず

補足

特になし

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

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

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

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

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

dodox86

2025/03/25 01:48

> mql5のエラー解消方法がわかりません 質問文中に提示されているコードはMQL5ではなく、MQL4のソースコードではないでしょうか。(MQL4とMQL5は違います) また、ソースコードが激しく読みづらいのでマークダウンをちゃんと使いましょう。(見てておかしいと思いませんでしたか?) 具体的には ``` int OnInit() { // hogefuga ... } ``` のように```でソースコードの前後をくくります。
slaim

2025/03/25 04:07

はい。そうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問