Кто может подсказать?

 

Пытаюсь использовать функцию .  Первое значение double.

Выдает ошибку -- invalid double number as parameter 1 for MathPow function.

Кто-то может подсказать как мне использовать в этой функции значение 1-го параметра double?

 
double MathPow( double base, double exponent)
Функция возвращает значение основания base, возведенного в указанную степень exponent.
 

Добрый день! Мне понравился индикатор 5 Bars. Но дело в том, что мне лично хотелось бы поработать по этому индикатору на 1 min. У автора на рисунке индикатор отображается на дневном графике. А возможно ли применить индикатор 1 min? Попробовав на 1min у меня создалось впечетление что он сильно запаздывает и показывает как бы историю. Может я просто не понимаю принципа индикатора так как я новичок. По моему мнению принцип работы индикатора, то что после разворота стрелка показывает 5 баров вверх или вниз. Но на 1min графике игнарируется очень много реальных участков. Может я делаю что-то не так? Или этот индикатор вообще не предназначен для малых периодов?

 
liza >>:

Пытаюсь использовать функцию .  Первое значение double.

Выдает ошибку -- invalid double number as parameter 1 for MathPow function.

Кто-то может подсказать как мне использовать в этой функции значение 1-го параметра double?

Может строку пытались вставить?

 
Zhunko >>:

Может строку пытались вставить?

Да

 
Vinin >>:
double MathPow(double base, double exponent)
Функция возвращает значение основания base, возведенного в указанную степень 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);
 }  

 
liza писал(а) >>

Вот функция которая дает эту ошибку.

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);
}

Что за сложный расчет. Только вот зачем в строку переводить. Где-то в другом месте обратно в число переводится поди.

Причина обращения: