Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ребята, мне нужна небольшая помощь в кодировании RSI и SMA.
Как вы видите на изображении, сигналы есть (стрелки вверх-вниз), но некоторые из них являются ложными. Поэтому я решил исключить ложные сигналы с RSI14 и SMA20.
Логика очень проста, стрелка вверх должна появиться, если RSI14 выше SMA20. Стрелка вниз должна появиться, если RSI ниже SMA20.
Я пометил некоторые стрелки вверх неправильно, потому что RSI слишком высок, но эту часть я могу закодировать сам.
Я нашел много кодов пересечения RSI<MA, но большинство из них переходит в лонг/шорт, если появляется крест. Но мне нужен срок, когда RSI будет выше или ниже, и тогда я смогу что-то сделать.
Насколько я нашел на данный момент, я должен использовать IRSI и массив для этого, но не могу собрать этот код самостоятельно.triip
Вы проверяли тот, что размещен здесь: https: //www.mql5.com/en/forum/general.
triip Вы проверили тот, что размещен здесь: https: //www.mql5.com/en/forum/general
Да, но все, что я нашел, это сигнал пересечения. Мне нужны условия, если RSI выше/ниже SMA.
Я понимаю, что сначала я должен объявить, что означает ABOVE и что означает BELOW, после чего я могу использовать их в предложении IF.
трип
Вы проверили то, что размещено здесь: https: //www.mql5.com/en/forum/174476Да, но все, что я нашел, это сигнал пересечения. Мне нужны условия, если RSI выше/ниже SMA.
Я понимаю, что сначала я должен объявить, что означает ABOVE и что означает BELOW, после чего я могу использовать их в предложении IF.
Да, но все, что я нашел, это сигнал пересечения. Мне нужны условия, если RSI выше/ниже SMA. Я понимаю, что сначала я должен объявить, что означает ABOVE и что означает BELOW, после чего я могу использовать их в предложении IF.
triip
Не знаю, какой rsi вы использовали для получения этих сигналов на вашей картинке, так что ... это все, что я могу сказать. Без кода не могу помочь больше
triip Не знаю, какой RSI вы использовали, чтобы получить эти сигналы на вашей картинке, так что ... это все, что я могу сказать. Без кода не могу помочь больше
Извините, я не упомянул, что сигналы стрелок не исходят от RSI. Это другой код, который я использую. Но я видел, что RSI с SMA поможет избежать неправильных сигналов. Поэтому я хочу отредактировать код сигнала так, чтобы он мог идентифицировать и условия RSI.
Что мне нужно:
Приходят сигналы со стрелками, но все они не являются истинными сигналами. Поэтому перед приходом стрелки должна быть еще одна проверка if, которая контролирует условия RSI.
if (мой текущий код && RSI выше/ниже SMA)
{ показать стрелку
}
Мне нужна эта красная часть.
Извините, я не упомянул, что сигналы стрелок не исходят от RSI. Это другой код, который я использую. Но я видел, что RSI с SMA поможет избежать неправильных сигналов. Поэтому мне нравится редактировать код сигнала так, чтобы он мог идентифицировать условия RSI тоже.
Мне нужно следующее:
Приходят сигналы со стрелками, но все они не являются истинными сигналами. Поэтому если стрелка приходит, то должна быть еще одна проверка if, которая контролирует условия RSI.
if (мой текущий код && RSI выше/ниже SMA)
{ показать стрелку
}
Мне нужна эта красная часть.triip
Вы должны сделать следующее:
1. Сохранить значения RSI в буфере
2. Используйте iMAOnArray() для вычисления SMA этих значений RSI.
3. Сравните значение сохраненного RSI и значение вычисленного iMAOnArray() и это и есть ваше условие.
triip
Вам необходимо сделать следующее :
1. Сохранить значения RSI в буфере
2. Использовать iMAOnArray() для вычисления SMA этих значений RSI.
3. Сравните значение сохраненного RSI и значение вычисленного iMAOnArray() и это и есть ваше условиеЗначит 1 и 2 что-то вроде этого?
1.
extern int rsi_p = 14;
extern int MA_Period=20;
extern int MA_Shift=0;
extern int MA_Method=0;
extern int NumberOfBarsToCalculate = 10000;
double Buffer0[];
double Buffer1[];
double Ma[];
double RSi[];
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,Buffer0);
SetIndexBuffer(1,Buffer1);
SetIndexBuffer(2,Ma);
SetIndexBuffer(3,RSi);
return(0);
}
[/CODE]
2.
[CODE]int start() {
int shift;
double rsi = 0;
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);
}
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);
Buffer0[shift] = RSi[shift];
Buffer1[shift] = Ma[shift];
}
return(0);
}
Итак, 1 и 2 - это что-то вроде этого?
1.
extern int rsi_p = 14;
extern int MA_Period=20;
extern int MA_Shift=0;
extern int MA_Method=0;
extern int NumberOfBarsToCalculate = 10000;
double Buffer0[];
double Buffer1[];
double Ma[];
double RSi[];
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,Buffer0);
SetIndexBuffer(1,Buffer1);
SetIndexBuffer(2,Ma);
SetIndexBuffer(3,RSi);
return(0);
}
[/CODE]
2.
[CODE]int start() {
int shift;
double rsi = 0;
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);
}
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);
Buffer0[shift] = RSi[shift];
Buffer1[shift] = Ma[shift];
}
return(0);
}
Да, вы можете сделать это и таким образом.
И когда вам это понадобится, просто сравните RSi и MA буфер, и вы всегда сможете увидеть их относительное положение.
Да, вы можете сделать это и таким образом. И когда вам это понадобится, просто сравните RSi и MA буфер, и вы всегда сможете увидеть их относительное положение.
Потрясающе, большое спасибо mladen
apprentice coder Вот индикатор, который имеет такую процедуру сортировки (он сортирует 2-мерный массив) : spearman_rank_correlation_nmc.mq4
mladen
Есть ли пример на c/c++, делающий то же самое?