Здравствуйте уважаемые программисты. При написании кода возникла проблема. Мне нужен расчет N последовательно восходящих или нисходящих баров. N задается в настройках.
Код
bool Cand_Up(){
int cnt=0;
for(int i=0; i<=NCandle; i++){
if(Open[i]<Close[i])cnt++;
if(Open[i]>Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
bool Cand_Dn(){
int cnt=0;
for(int i=0; i<=NCandle; i++){
if(Open[i]>Close[i])cnt++;
if(Open[i]<Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
Выдает не понять что. Мне нужно, что бы при трех последовательных Up или Dn баров функция Cand_Up() или Cand_Dn() возвращала true, при появлении противоположного бара возвращала false.
Другой код мне не подходит, так как в настройках нельзя будет изменить количество обсчитываемых баров!
if(Open[3]<Close[3])
if(Open[2]<Close[2])
if(Open[1]<Close[1])
return(true);
return(false);
}
Подскажите правильное решение! Заранее благодарю!
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool Cand_Up()
{
int cnt=0;
for(int i=1; i<NCandle+1; i++)
{
if(Open[i]<Close[i])cnt++;
if(Open[i]>=Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool Cand_Dn()
{
int cnt=0;
for(int i=1; i<NCandle+1; i++)
{
if(Open[i]>Close[i])cnt++;
if(Open[i]<=Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
//+------------------------------------------------------------------+
Здравствуйте уважаемые программисты. При написании кода возникла проблема. Мне нужен расчет N последовательно восходящих или нисходящих баров. N задается в настройках.
Подскажите правильное решение! Заранее благодарю!
Вот тут с проверкой на гэпы, так-же можно получить данные с другого символа
//------------------------ Функция возвращает направление баров подряд -------------------------+
//===============================================================================================
int GetBearBull(string symb="0", int tf=0, int ne=2) {
if(symb=="0") { symb=Symbol();}
double open1=0,close1=0,open2=0,close2=0;
int b=1,s=1;
for(int i=1; i<ne; i++) {
open1=iOpen(symb,tf,i);
close1=iClose(symb,tf,i);
open2= iOpen(symb,tf,i+1);
close2= iClose(symb,tf,i+1);
if(open2<close2 && open1<close1 && open2<open1) { // бычьи
b++;
if(b==ne) { return(1);}
}
if(open2>close2 && open1>close1 && open2>open1) { // медвежьи
s++;
if(s==ne) { return(2);}
}
}
return(0);
}
Применение:
GetBearBull(_Symbol,0,3)==2 // 3 медвежьих бара
G попробуйте так
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool Cand_Up()
{
int cnt=0;
for(int i=1; i<NCandle+1; i++)
{
if(Open[i]<Close[i])cnt++;
if(Open[i]>=Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool Cand_Dn()
{
int cnt=0;
for(int i=1; i<NCandle+1; i++)
{
if(Open[i]>Close[i])cnt++;
if(Open[i]<=Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
//+------------------------------------------------------------------+

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте уважаемые программисты. При написании кода возникла проблема. Мне нужен расчет N последовательно восходящих или нисходящих баров. N задается в настройках.
Код
bool Cand_Up(){
int cnt=0;
for(int i=0; i<=NCandle; i++){
if(Open[i]<Close[i])cnt++;
if(Open[i]>Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
bool Cand_Dn(){
int cnt=0;
for(int i=0; i<=NCandle; i++){
if(Open[i]>Close[i])cnt++;
if(Open[i]<Close[i])cnt=0;
}
if(cnt==NCandle)return(true);
return(false);
}
Выдает не понять что. Мне нужно, что бы при трех последовательных Up или Dn баров функция Cand_Up() или Cand_Dn() возвращала true, при появлении противоположного бара возвращала false.
Другой код мне не подходит, так как в настройках нельзя будет изменить количество обсчитываемых баров!
if(Open[3]<Close[3])
if(Open[2]<Close[2])
if(Open[1]<Close[1])
return(true);
return(false);
}
Подскажите правильное решение! Заранее благодарю!