Индикаторы: a_info

 

a_info:

Показывает информацию о текущем состоянии рынка.

Author: Alexey Konygin

 
Как считается волатильность ? а то в код лезть лениво )
 
Desead:
Как считается волатильность ? а то в код лезть лениво )

da = iATR(0,PERIOD_D1, ATR_Period, 1);

( ATR_Period=5)

 

Очень смущает такая попытка учёта комиссии:

extern double comission=0;
//...
if(Digits==5){k=10000;d=5;} 
else if(Digits==4){k=10000;d=4;}
else if(Digits==3){k=100;d=3;}
else if(Digits==2){k=10;d=2;}
else {k=100;d=2;}
//... 
ssprd=DoubleToStr((Ask-Bid)*k+comission,1); 
Сначала рассчитал комиссию в пунктах, затем ввёл вручную во внешние параметры индикатора? - Не нравится мне это.

Я обычно использую для расчёта комиссии в пунктах функцию:

double ComisInPoints(string smb)
{
   int hstTotal=OrdersHistoryTotal();
   for(int i=0;i<hstTotal;i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
         double tickVal=MarketInfo(smb, MODE_TICKVALUE);
         double Lot=OrderLots();
         double Comission=OrderCommission();
         if ((OrderType()==OP_BUY ||OrderType()== OP_SELL)&&Lot>0.0&&tickVal>0.0) return (NormalizeDouble(-Comission/tickVal/Lot,1));
         else return (0.0);
      }
   } 
} 
Для её работы требуется наличие хотя бы одного ордера в истории, зато считается автоматом, не надо "париться")))
 
Batman:

Очень смущает такая попытка учёта комиссии:

Очень хорошо. Код открытый, можно вставить. 
 
Evgen57:
Desead:
Как считается волатильность ? а то в код лезть лениво )

da = iATR(0,PERIOD_D1, ATR_Period, 1);

( ATR_Period=5)


Именно так
 

на обратных парах, commodities и CFD некоторые значения отображаются некорректно, к примеру спред:

некорректное отображение значений это можно как-то поправить?

...и ещё есть предложение вставить звуковой сигнал если значение спреда превысело установленное в настройках?

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