MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1521 1...151415151516151715181519152015211522152315241525152615271528...1953 新しいコメント jarikn 2021.07.01 12:05 #15201 MakarFX:あたり」ではなく、間違ったrsiを比較しています。 それで終わり? int Signal(int i) { // Снимем показания индикатора double Current = iRSI(NULL, 0, per, PRICE_CLOSE, i); double Previous = iRSI(NULL, 0, per, PRICE_CLOSE, i+1); double SCurrent = iRSI(NULL, 0, per, PRICE_CLOSE, i); // Для предыдущего бара double SPrevious = iRSI(NULL, 0, per, PRICE_CLOSE, i+1); // А теперь проверим всловия для наличия сигналов // есть сигнал на покупку? if(Current <= niz && Close[1]>Open[1]) return(BUY); if(Current >= verx && Close[1]<Open[1]) return(SELL); // Сигнала нет return(-1); Tretyakov Rostyslav 2021.07.01 12:19 #15202 jarikn:それで終わり?はい、でも、ある指標を別の指標に書き換えることはできないんです。インジケーターのロジックを組み立ててから書く。 この場合、すべてのロジックが明確でなかったり、使用されない余分なデータがあったりします。 jarikn 2021.07.01 12:35 #15203 MakarFX:はい、でも、ある指標を別の指標に書き換えることはできないんです。インジケーターのロジックを組み立ててから書く。 この場合、すべてのロジックが明確でなかったり、使用されていない余分なデータがあったりします。 スクリーンショットをご覧ください。 私の考えはこうです。 RSIが70レベル以上で、キャンドルがオープンの下で閉じられた場合 - 売りのための信号があるはずです。 RSIが30以下で、ローソク足がオープンより上で閉じたら買いシグナル。 って、ちょっと勉強してみただけなんですけどね))) では、私の何がいけなかったのか、教えてください。 ファイル: Screenshot_13.png 29 kb Tretyakov Rostyslav 2021.07.01 13:18 #15204 jarikn:スクリーンショットをご覧ください。私の考えはこうです。rsiが70以上で、ローソク足がオープンより下で閉じたら - 売りのシグナルがあるはずです。rsiが30以下で、ローソク足がオープンより上で閉じたら - 買いシグナルです。って、ちょっと勉強してみただけなんですけどね)))私が学ぼうとしているのは、これだけです。 1)ボタンでスクリーンショットを貼り付ける 2)あなたの条件に従って-それは正しいです。 //+------------------------------------------------------------------+ //| jarikn_RSI.mq4 | //| Copyright 2020, DrMak. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, DrMak." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Покупаем #property indicator_label1 "Продаём" #property indicator_type1 DRAW_LINE #property indicator_color1 clrGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Продаём #property indicator_label2 "Покупаем" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- input parameters input int RSI_Period =14; //Период рассчета RSI input int AlertLevUp =70; //Уровень для покупок input int AlertLevDn =30; //Уровень для продаж //--- indicator buffers double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Buy); SetIndexBuffer(1,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); // Установим значки "стрелки" для буферов SetIndexArrow(0, 234); //Стрелка "вниз" для продаж SetIndexArrow(1, 233); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel(0, "Продаём"); SetIndexLabel(1, "Покупаем"); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits (Digits); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ("Мой первый индикатор"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); if(RSI>AlertLevUp&&open[i]>close[i]) Buy[i]=high[i]; if(RSI<AlertLevDn&&open[i]<close[i]) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ jarikn 2021.07.01 13:34 #15205 MakarFX:1)ボタンでスクリーンショットを挿入する 2)自分の体調に合わせて-これが正解です。 ありがとう、調べてみるよ。 jarikn 2021.07.01 16:22 #15206 MakarFX:1)ボタンでスクリーンショットを挿入する 2)体調に合わせて~こちらへ rsiが下から上にAlertLevDnを横切ったら買い、という条件の書き方は可能ですか? それとも追加のスライダーが必要ですか? { //--- int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); if(RSI>AlertLevUp) Buy[i]=high[i]; if(RSI<AlertLevDn) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.01 16:36 #15207 jarikn:rsiがAlertLevDnを下から上に横切ったら 買い、という条件をどう書くか? 可能か、それとも追加のスライダーが必要か? あなたの質問が答えを与えてくれる... rsiが下から上にクロス する場合、それは現在の値が高く、前の 値が低いことを意味します。 現在値 double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); 前の値を行う必要があります。 double RSI2 = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i+1); 其の後比較 RSI2がAlertLevDnより小さく、RSIがAlertLevDnより 大きい場合。 買ってある) jarikn 2021.07.01 16:40 #15208 MakarFX:あなたの質問が答えを与えてくれる...rsiが下から上へクロス する場合、現在の値が高く、前の値が 低いことを意味します。 現在値 前の値を行う必要があります 其の後比較RSI2がAlertLevDnより小さく、RSIがAlertLevDnより 大きい場合。買っている) 了解です、ありがとうございます) Tretyakov Rostyslav 2021.07.01 16:50 #15209 jarikn:了解です、ありがとうございました) 矯める int limit=rates_total-prev_calculated-2; Andrei Sokolov 2021.07.01 21:21 #15210 はじめまして、ヒントをお願いします。 MT5です。 ボリンジャーバンドの 値を取得したいのですが。 私は、次のように書いています。 #property strict #include <Indicators\Trend.mqh> CiBands m_bands; input int Magic = 778871; int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit() Print(m_bands.Create(Symbol(), PERIOD_CURRENT, 20, 0, 2, PRICE_CLOSE)); Print((string)m_bands.MaPeriod()); Print((string)m_bands.Base(Bars(NULL, PERIOD_CURRENT))); return(INIT_SUCCEEDED); } double_maxと似たようなものを出力する。 同時に、周期、オフセット、その他すべてを正しく取得します。 1...151415151516151715181519152015211522152315241525152615271528...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あたり」ではなく、間違ったrsiを比較しています。
それで終わり?
それで終わり?
はい、でも、ある指標を別の指標に書き換えることはできないんです。
インジケーターのロジックを組み立ててから書く。
この場合、すべてのロジックが明確でなかったり、使用されない余分なデータがあったりします。はい、でも、ある指標を別の指標に書き換えることはできないんです。
インジケーターのロジックを組み立ててから書く。
この場合、すべてのロジックが明確でなかったり、使用されていない余分なデータがあったりします。スクリーンショットをご覧ください。
私の考えはこうです。
RSIが70レベル以上で、キャンドルがオープンの下で閉じられた場合 - 売りのための信号があるはずです。
RSIが30以下で、ローソク足がオープンより上で閉じたら買いシグナル。
って、ちょっと勉強してみただけなんですけどね)))
では、私の何がいけなかったのか、教えてください。
スクリーンショットをご覧ください。
私の考えはこうです。
rsiが70以上で、ローソク足がオープンより下で閉じたら - 売りのシグナルがあるはずです。
rsiが30以下で、ローソク足がオープンより上で閉じたら - 買いシグナルです。
って、ちょっと勉強してみただけなんですけどね)))
私が学ぼうとしているのは、これだけです。
1)ボタンでスクリーンショットを貼り付ける
2)あなたの条件に従って-それは正しいです。
1)ボタンでスクリーンショットを挿入する
2)自分の体調に合わせて-これが正解です。
ありがとう、調べてみるよ。
1)ボタンでスクリーンショットを挿入する
2)体調に合わせて~こちらへ
rsiが下から上にAlertLevDnを横切ったら買い、という条件の書き方は可能ですか? それとも追加のスライダーが必要ですか?
rsiがAlertLevDnを下から上に横切ったら 買い、という条件をどう書くか? 可能か、それとも追加のスライダーが必要か?
あなたの質問が答えを与えてくれる...
rsiが下から上にクロス する場合、それは現在の値が高く、前の 値が低いことを意味します。
現在値
前の値を行う必要があります。
其の後比較
RSI2がAlertLevDnより小さく、RSIがAlertLevDnより 大きい場合。
買ってある)
あなたの質問が答えを与えてくれる...
rsiが下から上へクロス する場合、現在の値が高く、前の値が 低いことを意味します。
現在値
前の値を行う必要があります
其の後比較
RSI2がAlertLevDnより小さく、RSIがAlertLevDnより 大きい場合。
買っている)
了解です、ありがとうございます)
了解です、ありがとうございました)
矯める
はじめまして、ヒントをお願いします。 MT5です。
ボリンジャーバンドの 値を取得したいのですが。
私は、次のように書いています。
double_maxと似たようなものを出力する。
同時に、周期、オフセット、その他すべてを正しく取得します。