Добрый день! Мне понравился индикатор 5 Bars. Но дело в том, что мне лично хотелось бы поработать по этому индикатору на 1 min. У автора на рисунке индикатор отображается на дневном графике. А возможно ли применить индикатор 1 min? Попробовав на 1min у меня создалось впечетление что он сильно запаздывает и показывает как бы историю. Может я просто не понимаю принципа индикатора так как я новичок. По моему мнению принцип работы индикатора, то что после разворота стрелка показывает 5 баров вверх или вниз. Но на 1min графике игнарируется очень много реальных участков. Может я делаю что-то не так? Или этот индикатор вообще не предназначен для малых периодов?
double MathPow( | double base, double exponent) |
Здравствуйте!
Я очень извиняюсь, но Вы мне помогли по поводу функции countpr().
Сейчас я хотела бы чтобы она считала прибыль закрытых сделок, но только за текущие сутки.
Я написала уже, но она почему то считает всю истарию, а не только текущие сутки.
Если можете подскажите где ошибка.
double ProfitDef() {
double pr = 0;
datetime dt = iTime(Symbol(),1440,0);
datetime dm = TimeCurrent();
if(OrdersHistoryTotal()!=0){
for(int i = OrdersHistoryTotal()-1;i>0;i--){
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;
if(OrderSymbol()!=Symbol() && dm > dt)continue;
{
pr+= OrderProfit();
//Print("Общая прибыль/убыток по незакрытым операциям составляет ", pr);
}}}
return(pr);
}
double ProfitDef() { double pr = 0; datetime dt = iTime(Symbol(),1440,0); if(OrdersHistoryTotal()!=0){ for(int i = OrdersHistoryTotal()-1;i>0;i--){ if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue; if(OrderSymbol()!=Symbol()) continue; if (OrderOpenTime() < dt)continue; { pr+= OrderProfit(); //Print("Общая прибыль/убыток по незакрытым операциям составляет ", pr); }}} return(pr); }Что-то примерно так. Проверяется время открытия позиции.
ИМХО
.
for(int i = OrdersHistoryTotal()-1;i>0;i--)
Вот здесь вот не анализируется
нулевой ордер. Должно быть
for(int i = OrdersHistoryTotal()-1;i >= 0;i--)
.
Строку анализа времени
datetime dt = iTime(Symbol(),1440,0);
if (OrderOpenTime() < dt) continue;
убрать на совсем.
Вот функция которая дает эту ошибку.
string k1lo(double n, int t)
{
int x = 1, l = 1;
double sum1 = 0, sum2 = 0;
string num;
for(int i = n; i > 0; i--)
{
sum1 += (iLow(Symbol(),t,i))*(fi1(x,n));
x++;
}
for(int j = n; j > 0; j--)
{
sum2 += MathPow(fi1(l,n),2);
l++;
}
num = DoubleToStr((sum1/sum2),9);
return(num);
}
Вот функция которая дает эту ошибку.
string k1lo(double n, int t)
{
int x = 1, l = 1;
double sum1 = 0, sum2 = 0;
string num;
for(int i = n; i > 0; i--)
{
sum1 += (iLow(Symbol(),t,i))*(fi1(x,n));
x++;
}
for(int j = n; j > 0; j--)
{
sum2 += MathPow(fi1(l,n),2);
l++;
}
num = DoubleToStr((sum1/sum2),9);
return(num);
}
Что за сложный расчет. Только вот зачем в строку переводить. Где-то в другом месте обратно в число переводится поди.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пытаюсь использовать функцию . Первое значение double.
Выдает ошибку -- invalid double number as parameter 1 for MathPow function.
Кто-то может подсказать как мне использовать в этой функции значение 1-го параметра double?