自分で気づく事は困難だと判断したため質問させていただく事となりました。
宜しければお時間を頂戴させていただき、お力添えしていただけたら大変幸いに存じます。
1.やりたい事
2.発生している問題点
3.問題に対して調査した内容
4.具体的に分からない部分
ソースコードを記載させて頂きます。
mql4
// 取引シグナルを判定 --------------------------------- int entry_sign = 0; // エントリー用シグナル int exit_sign = 0; // 決済用シグナル //5mのMACDを用意 double macd = iMACD(NULL,PERIOD_M5,20,75,9,PRICE_CLOSE,MODE_MAIN,1); double rsi = iRSI(NULL,PERIOD_M5,14,PRICE_CLOSE,0); double BB_5U = iBands(NULL,PERIOD_M5,20,dev,0,PRICE_CLOSE,MODE_UPPER,0); double BB_5L = iBands(NULL,PERIOD_M5,20,dev,0,PRICE_CLOSE,MODE_LOWER,0); double BB_M5 = iBands(NULL,PERIOD_M5,20,dev,0,PRICE_CLOSE,MODE_MAIN,0); if(macd <= 2 || macd >= -2) //MACDの値が±2以内 { if(30<=rsi && rsi<=70) //RSIが30以上70以下 { entry_sign = -1; } } if(BB_M5>Ask || rsi>70) //買値がミドルを下に抜ける OR RSIが70を上に超える { exit_sign = 1; } //--------------------------------------------------------------- if(macd <= 2 || macd >= -2) //MACDの値が±2以内 { if(30<=rsi && rsi<=70) //RSIが30以上70以下 { entry_sign = 1; } } if(BB_M5<Bid || rsi<30) //売値がミドルを上に抜ける OR RSIが30を下に超える { exit_sign = -1; }
1.やりたい事
RSIが70を超えたら決済をする
2.発生している問題点
「売り」注文の決済で使用しているRSIの条件のみ機能しない事です。
「買い」注文の決済で使用しているRSIの条件は機能しており、
エントリー条件にもRSIは使用しているのですが、
上記の時だけなぜか機能しません。
3.問題に対して調査した内容
・全角の数字でもコンパイルが通った為、別の部分のコピペを利用して全角部分がないことは確かめました
・比較演算子の||が機能していないのかと思ったので、比較演算子を使わず、if文を2つにして条件を分岐させました
・もう一方の条件が何かしら原因かと思い、RSIのみの条件にしてみましたが、案の定一向に決済されませんでした
・この海外口座のメタエディタのみバグっているのではと思い、別の海外口座のメタエディタにコピペしましたが、何も変わりませんでした
・VScodeで観察してみましたが特に問題はありませんでした
・rsiという変数名か、変数自体に問題があるのかもと思い、変数に代入せず直接iRSI関数を使いってみましたが、同じく認識されず決済されませんでした
・数値を使っているのがまずいと思い、double型の変数を宣言して使用しましたが何も変わりませんでした
4.具体的に分からない部分
なぜ、その部分だけ機能しないのかがわかりません(__)
その部分だけを既存のmacdの条件にしてみたところ、同様に機能しませんでした。
もっと根本的に何か理解できていない部分があるのかもと思っているのですが、
自分ではもうどこから考えたらいいのかわからなくなり、
最終手段に甘えてしまう事となりました。
何卒回答いただけましたら幸いです。m(__)m
まだ回答がついていません
会員登録して回答してみよう