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