деление на ноль вот тут: /mPricePrevious
деление на ноль вот тут: /mPricePrevious
Доброго времени суток, Ренат, я достаточно слаб в этом языке, если не затруднит, укажите чайнику пальцем на ...(всмысле где именно).
mPricePrevious=(High[i+1]+Low[i+1])/2; - здесь? плюсы на минусы поменять?
Наверно, ты хотел так.
//+------------------------------------------------------------------+
//| Dark Monk.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.ru/forum/6298/"
#property indicator_level1 0.0
//+------------------------------------------------------------------+
//| _Dynamic II %Change.mq4 |
//| Dark Monk |
//| http://ru |
//+------------------------------------------------------------------+
#property copyright "Dark Monk"
#property link "ru"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DarkGray
//---- input parameters
//---- buffers
double PercentChange[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- % Change indicator mapping
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,PercentChange);
IndicatorShortName("% Change ("+1+")");
SetIndexLabel(0,"% Change ("+1+")");
return(0);
}
//+------------------------------------------------------------------+
//| _Dynamic II % Change indicator |
//+------------------------------------------------------------------+
int start()
{
double mPriceCurrent,mPricePrevious;
int limit;
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) limit=Bars-counted_bars;
if (counted_bars==0) limit=Bars-1;
limit--;
for(int i=limit; i>=0; i--)
{
if (i<=3)Print("Bars=",Bars," counted_bars=",counted_bars," i=",i," limit=",limit);
mPriceCurrent=(High[i]+Low[i])/2.0;
mPricePrevious=(High[i+1]+Low[i+1])/2.0;
PercentChange[i]=((mPriceCurrent-mPricePrevious)/mPricePrevious)*1000.0;
}
//---- done
return(0);
}
//+------------------------------------------------------------------+
деление на ноль вот тут: /mPricePrevious
mPricePrevious=(High[i+1]+Low[i+1])/2;
При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?
деление на ноль вот тут: /mPricePrevious
mPricePrevious=(High[i+1]+Low[i+1])/2;
При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?
При условии, что их нет, а потому (0+0)/2=0
не факт ((
2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide
2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide
а сейчас нет (( ,, меня прёт, или терминал??
не факт ((
2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide
2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide
а сейчас нет (( ,, меня прёт, или терминал??
виноват, советники при релоаде запрещаются... всё там же ((
При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?
При условии, что их нет, а потому (0+0)/2=0
Спасибо.
Кстати, неплохо бы в словаре эту информацию озвучить, раз уж, в самом деле, нужна такая проверка на ноль. Ни в описании, ни в примере ее нет:
double High[]
Returns the highest price of the bar referenced.
int handle, bars=Bars;
handle=FileOpen("file.csv", FILE_CSV|FILE_WRITE, ';');
if(handle>0)
{
// write table columns headers
FileWrite(handle, "Time;Open;High;Low;Close;Volume");
// write data
for(int i=0; i<bars; i++)
FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
FileClose(handle);
}
Не за что (если спасибо мне). Я пришел к выводу, что если чего то нет, то жди нуля. По дефолту.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
2005.11.22 00:46:50 _Dynamic II %Change CADJPY,H1: zero divide
_Dynamic II %Change - это индикатор, в эксперте вызывается как "айКастом", тело привожу:
//+------------------------------------------------------------------+ //| _Dynamic II %Change.mq4 | //| Dark Monk | //| http://ru | //+------------------------------------------------------------------+ #property copyright "Dark Monk" #property link "ru" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DarkGray //---- input parameters //---- buffers double PercentChange[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- % Change indicator mapping SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,PercentChange); IndicatorShortName("% Change ("+1+")"); SetIndexLabel(0,"% Change ("+1+")"); return(0); } //+------------------------------------------------------------------+ //| _Dynamic II % Change indicator | //+------------------------------------------------------------------+ int start() { double mPriceCurrent,mPricePrevious; int limit; int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i<limit; i++) { mPriceCurrent=(High[i]+Low[i])/2; mPricePrevious=(High[i+1]+Low[i+1])/2; PercentChange[i]=((mPriceCurrent-mPricePrevious)/mPricePrevious)*1000; } //---- done return(0); } //+------------------------------------------------------------------+где втупил??