Предложения и комментарии по eVOLution-dvoid

Что можно взять с этого сайта

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Fri Oct 26, 2012 7:27 am

Не могу понять в чем причина странной прорисовки гистограммы - иногда при переключении инструмента пропадает пару столбиков, но если переключить на другой инструмент и опять на проблемный то все на месте.

Странно, буду думать как переписать процедуру рисования
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm


Re: Предложения и комментарии по eVOLution-dvoid

Postby pox77 » Fri Nov 02, 2012 7:30 pm

someBody wrote:Не могу понять в чем причина странной прорисовки гистограммы - иногда при переключении инструмента пропадает пару столбиков, но если переключить на другой инструмент и опять на проблемный то все на месте.

не подкачана история на выбранном ТФ, вот и после синхронизации пропадают бары где история обновилась, лучше рисовать гистограмму буферами индикатора, а не объектами - обновится история, при стандартном для МТ4 расчете последнего не посчитанного бара обычно использую конструкцию вида:
int i,limit;
limit=Bars-IndicatorCounted();
if (limit>1) limit = Bars-1;
for(i=limit; i>=0; i--){
}

при синхронизации истории с сервером будет пересчет всего индикатора
удачи!
pox77
 
Posts: 2
Joined: Fri Nov 02, 2012 7:20 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Sun Nov 04, 2012 8:38 am

pox77 , я пробовал сделать с помощью буферов, работает отлично на выбранном дневном таймфрейме, но наткнулся на проблеммы при переключении на меньшие ТФ и не нашел хорошего способа обойти ее (мне ведь нужно отсчитать количество баров за каждый день, и нарисовать гистограмму одной величины на протяжении дня, и так далее). Поэтому и решил рисовать все графическими обьектами. Да и вообще я не считаю себя программистом ;)
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby pox77 » Sun Nov 04, 2012 9:57 pm

someBody wrote:но наткнулся на проблеммы при переключении на меньшие ТФ и не нашел хорошего способа обойти ее (мне ведь нужно отсчитать количество баров за каждый день, и нарисовать гистограмму одной величины на протяжении дня, и так далее).

попробуй так:
Code: Select all
void drawRectangle(string name, datetime time1, double price1, datetime time2, int counter)

   int startpos = iBarShift(NULL,0,time1);
   int stoppos = iBarShift(NULL,0,time2);
   while(startpos >=stoppos){
   buf1[startpos] = volarr[counter]*100/volmax;
   startpos--;
}

Image
у меня отрисовалась четко гистограмма, пока не хочу полностью переписывать твой код, в мой код нужно пару проверок добавить, чтобы "вечный цикл" не получился
удачи!
pox77
 
Posts: 2
Joined: Fri Nov 02, 2012 7:20 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Mon Nov 05, 2012 8:08 am

Буду пробовать, спасибо pox77 !
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby Herzog » Tue Nov 27, 2012 8:04 am

Я для себя изменил нормировку при отрисовке ОИ, чтобы изменения были лучше видны. Для этого же добавил параметр - глубина данных, по которым вычисляется нормировка. Этот параметр работает и для объёмов. Ну и цвета изменил, под белый фон. Картинку хотел вставить, но сюда залить кажется нельзя, а искать куда залить для ссылки времени нет. Поэтому просто исходник выкладываю, а если админ решит что это неинтересно то можно вообще пост потереть, ничего не имею против.
Code: Select all
//+------------------------------------------------------------------+
//|                                              eVOLution-dvoid.mq4 |
//|                                                   2012, someBody |
//|                                    http://trading-evolution.com/ |
//+------------------------------------------------------------------+
#property copyright " 2012, someBody"
#property link      "http://trading-evolution.com/"

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 105
#property  indicator_color1  Silver

extern int depth = 20;
extern string FileNamePruductCode  = "";
//extern int barsToProcess=100;
extern color barColor = PowderBlue, oiColor=Purple;
extern bool showOI = true;
extern bool showHeader = true;
extern color HeaderColor=DarkGreen;
extern int FontSize = 8;
extern int textXshift = 10;
extern int textYshift = 13;



string folder = "/evolution-dvoid/",objpref="evo-dvoid_";
int control, vol0, oi0, vol1, oi1;
string currency,currency1, date0, date1,headertext1,headertext2;
bool cur=TRUE,cross=FALSE;
int a,b,objwidth=4;
double tempvol,tempoi,volmax,oimax,oimin,oirange;

string ddate;
double volarr[], oiarr[];

bool initFinished=false;
color back_ground;
int windowIndex;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
 

initFinished=false;

//----

   return(0);
}
 
 
void drawRectangle(string name, datetime time1, double price1, datetime time2, int counter)


string oiname;

 
   windowIndex=WindowFind("trading-evolution.com : eVOLution-dvoid");
   
 
   
   oiname=objpref+"_oi_"+name;
   name=objpref+"_vol_"+name;
   
   if (Period()<1440)
   ObjectCreate(name, OBJ_RECTANGLE, windowIndex, time1, price1, time2, volarr[counter]*100/volmax);
   else
   ObjectCreate(name, OBJ_TREND, windowIndex, time1, price1, time1, volarr[counter]*100/volmax);
   
   ObjectSet(name, OBJPROP_COLOR, barColor);
   ObjectSet(name, OBJPROP_BACK, true);
   ObjectSet(name, OBJPROP_RAY, false);
   ObjectSet(name, OBJPROP_WIDTH,objwidth);
   ObjectSetText(name, "Volume="+DoubleToStr(volarr[counter],0));
   
   if (showOI)
   {
     if (oiarr[counter+1]>1 && oirange>0)
//     ObjectCreate(oiname,OBJ_TREND,windowIndex,time1-10,oiarr[counter+1]*100/oimax,time2,oiarr[counter]*100/oimax);
     ObjectCreate(oiname,OBJ_TREND,windowIndex,time1-10,(oiarr[counter+1]-oimin)*100/oirange,time2,(oiarr[counter]-oimin)*100/oirange);
     ObjectSet(oiname, OBJPROP_COLOR, oiColor);
     ObjectSet(oiname, OBJPROP_BACK, true);
     ObjectSet(oiname, OBJPROP_RAY, false);
     ObjectSet(oiname, OBJPROP_WIDTH,2);
     ObjectSetText(oiname, "OI="+DoubleToStr(oiarr[counter],0));
   }
   

}
   
   

int Explode(string str, string levelrun, string& arr[])
{
   int i = 0;
   int po = (StringFind(str, levelrun));
   while(po != -1)
   { 
      if(po == 0) arr[i] = "0"; else arr[i] = StringSubstr(str, 0, po);
      i++;
      str = StringSubstr(str, po+StringLen(levelrun));
      po = StringFind(str, levelrun);
      if(po == -1 || str == "0") break;
   }
   arr[i] = str;

   return(i+1);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   deinition();
//----
   return(0);
  }

void deinition()
{

int total = ObjectsTotal();
   int count = 0;
   string prefixline = objpref;
   for (int i = total - 1; i >= 0; i--)
   {
      string prefix1 = ObjectName(i);
      if (StringFind(prefix1,prefixline) == 0)
      {ObjectDelete(prefix1);count++;}
   }
      
}

void drawonce()
{

   int    counted_bars=IndicatorCounted();
   string voldiff,oidiff;

//----
   
   if (!initFinished)
   {
   
   
   IndicatorShortName("trading-evolution.com : eVOLution-dvoid");
   
   
   
   if(cur==FALSE){Alert("Currency is not supported");return(0);}
   color tempColor;
   int total = ObjectsTotal();
   int count = 0;
     
   //product list from database: -EC -J1 -AD -BP -C1 -RY -NE -E1 -YM -NQ -ES -ZW -ZS -ZC -CL -SI -GC
   if (FileNamePruductCode =="") {   
   currency =StringSubstr( Symbol(),0,2);
   currency1 = StringSubstr( Symbol(),0,6);
   if(currency =="6E" || currency1 =="EURUSD")
   {currency = "ec";}
   else if(currency =="6B" || currency1=="GBPUSD")
   {currency = "bp";}
   else if(currency =="ES" || currency1 =="S&P_50")
   {currency = "es";}
   else if(currency == "NQ" || currency1 == "Nasdaq")
   {currency ="nq";}
   else if(currency == "YM" || currency1 == "DowJon")
   {currency ="ym";}
   else if(currency=="J1" || currency1=="USDJPY")
   {currency ="j1";}
   else if(currency == "AD" || currency1 == "AUDUSD")
   {currency ="ad";}
   else if(currency == "GC" || currency1 == "XAGUSD")
   {currency ="gc";}
   else if(currency == "SI" || currency1 == "XAUUSD")
   {currency ="si";}
   else if(currency == "CL" || currency1 == "_CL")
   {currency ="cl";}
   else if(currency == "6S" || currency1 =="USDCHF")
   {currency ="e1";}
   else if(currency == "6C" || currency1 =="USDCAD")
   {currency ="c1";}
   else if(currency == "6N" || currency1 =="NZDUSD")
   {currency ="ne";}
   else if(currency == "6R" || currency1 =="EURJPY")
   {currency ="ry";}
   else if(currency == "ZS" || currency1 =="_ZS")
   {currency ="zs";}
   else if(currency == "ZC" || currency1 =="_ZC")
   {currency ="zc";}
   else if(currency == "ZW" || currency1 =="_ZW")
   {currency ="zw";}
   else{cur=FALSE;return(0);}
   
   }
   else currency=FileNamePruductCode ;
   
   
   string temp[10000],asd[4];
   int FileHandler = FileOpen( folder+"dvoid-"+currency+".csv", FILE_BIN|FILE_READ);
   if(FileHandler <0){
   if (GetLastError() == 4103/* CANNOT_OPEN_FILE */) Alert("No such file ");
      else Alert("Error opening file ");
      return (0);}
   a=FileReadArray(FileHandler, temp, 0,10000);
   if (a<1) {Alert("Error opening file ");return(0);}
   FileClose(FileHandler);
   ArrayResize(temp,a);
   ArrayResize(volarr,a);
   ArrayResize(oiarr,a);

   if(GlobalVariableGet(Symbol()+"_"+currency) != control){deinition();}
   
   for(b=0;b<a;b++)
   {
      Explode(temp[b],",",asd);
      volarr[b]=StrToInteger(asd[1]);
      oiarr[b]=StrToInteger(asd[2]);
     
   }
   
   //getting maximum value from array
   volmax=volarr[(ArrayMaximum(volarr,depth))];
   oimax=oiarr[(ArrayMaximum(oiarr,depth))];
   oimin=oiarr[(ArrayMinimum(oiarr,depth))];
   oirange=oimax-oimin;
   
   for(b=0;b<a;b++)
   {
      Explode(temp[b],",",asd);
      ddate=StringSubstr(asd[0],0,4)+"."+StringSubstr(asd[0],4,2)+"."+StringSubstr(asd[0],6,2);
      drawRectangle(ddate,StrToTime(ddate+" 00:00"),0,StrToTime(ddate+" 23:59"),b);
   }
   
//----- getting last two days data to display header text
      Explode(temp[0],",",asd);
      date0=StrToInteger(asd[0]);
      vol0=StrToInteger(asd[1]);
      oi0=StrToInteger(asd[2]);
     
     
      Explode(temp[1],",",asd);
      date1=StrToInteger(asd[0]);
      vol1=StrToInteger(asd[1]);
      oi1=StrToInteger(asd[2]);
     
     
     
 //---- displaying header here
 if (showHeader)
 {
      if (vol0>vol1)
      {
      voldiff = "+"+(vol0-vol1);
      } else voldiff = vol0-vol1;
     
      if (oi0>oi1)
      {
      oidiff = "+"+(oi0-oi1);
      } else oidiff = oi0-oi1;
     
     
      headertext1=date0+" V="+vol0+" OI="+oi0+" : Vol-D= "+voldiff+" OI-D= "+oidiff;
      headertext2=date1+" V="+vol1+" OI="+oi1;
     
      windowIndex=WindowFind("trading-evolution.com : eVOLution-dvoid");
     
      string headername0=objpref+"header0";
      string headername1=objpref+"header1";
     
      ObjectCreate(headername0, OBJ_LABEL, windowIndex, 0, 0, 0, 0);
      ObjectSet(headername0, OBJPROP_XDISTANCE, textXshift);
      ObjectSet(headername0, OBJPROP_YDISTANCE, textYshift);
      ObjectSetText(headername0, headertext1, FontSize, "Arial", HeaderColor);

      ObjectCreate(headername1, OBJ_LABEL, windowIndex, 0, 0, 0, 0);
      ObjectSet(headername1, OBJPROP_XDISTANCE, textXshift);
      ObjectSet(headername1, OBJPROP_YDISTANCE, FontSize*1.6+textYshift);
      ObjectSetText(headername1, headertext2, FontSize, "Arial", HeaderColor);
}
   
//----
   initFinished=true;
   WindowRedraw();
   }


}



//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   drawonce();
   WindowRedraw();
   return(0);
  }
//+----------
Herzog
 
Posts: 7
Joined: Mon Oct 01, 2012 10:09 am

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Tue Nov 27, 2012 8:55 am

Herzog wrote:Я для себя изменил нормировку при отрисовке ОИ, чтобы изменения были лучше видны. Для этого же добавил параметр - глубина данных, по которым вычисляется нормировка. Этот параметр работает и для объёмов. Ну и цвета изменил, под белый фон. Картинку хотел вставить, но сюда залить кажется нельзя, а искать куда залить для ссылки времени нет. Поэтому просто исходник выкладываю, а если админ решит что это неинтересно то можно вообще пост потереть, ничего не имею против.


Я никогда не против усовершенствований, и ты сделал все правильно. У меня в планах было приделать параметр barsToProcess (он закомментирован) и теперь я это точно сделаю. Да и формула твоя верная. Спасибо!

Сегодня наверно выложу новую версию с твоими поправками.
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby Herzog » Tue Nov 27, 2012 9:49 am

Ну я рад что польза какая-то вышла.
Herzog
 
Posts: 7
Joined: Mon Oct 01, 2012 10:09 am

Re: Предложения и комментарии по eVOLution-dvoid

Postby Bes » Thu Dec 06, 2012 11:06 am

Вот кстати хотел спросить данные в какой момент дня выходят?
Ссылку ты писал
http://www.cmegroup.com/market-data/vol ... olume.html
И как эти данные самому читать..в смысле, вот по евре смотреть Euro FX или Euro FX Future?
User avatar
Bes
 
Posts: 36
Joined: Thu Nov 01, 2012 8:58 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Thu Dec 06, 2012 8:57 pm

Сегодня я проинвестигировал и понял что основное время обновления это 7:30 по GMT, так и сделал у себя. Тоесть в основном в 7:40 по GMT данные для двоида должны быть уже у меня

По тому линку тебе нужен "Euro FX Future", смотри вторую колонку возле названия - тебе нужно только фьючерсы а не опционы
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby Beluga » Fri Dec 14, 2012 5:49 am

А где брать данные для DVOID? :?
Beluga
 
Posts: 1
Joined: Wed Dec 12, 2012 6:19 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby styleoff » Fri Dec 14, 2012 6:48 am

Данные бурутся во флешь-апплете на главной странице сайта.
styleoff
 
Posts: 18
Joined: Thu Dec 13, 2012 2:46 am

Re: Предложения и комментарии по eVOLution-dvoid

Postby Zer0k » Sun Feb 02, 2014 4:52 pm

Доброго времени суток)
Подскажите, есть ли возможность добавить в данный индикатор Индекс доллара? При торговле валютными фьючерсами он для меня просто не заменим. А где его смотреть не могу найти((
Zer0k
 
Posts: 4
Joined: Sat Feb 04, 2012 6:55 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Mon Feb 03, 2014 7:43 am

Zer0k wrote:Доброго времени суток)
Подскажите, есть ли возможность добавить в данный индикатор Индекс доллара? При торговле валютными фьючерсами он для меня просто не заменим. А где его смотреть не могу найти((


Привет,

Такой возможности нет.
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

Re: Предложения и комментарии по eVOLution-dvoid

Postby someBody » Thu Aug 14, 2014 10:28 am

Покажите как не работает evolution-dvoid? Сегодня проверил - все на месте.
Терминал от альпари
версия 4.00 билд 670
Attachments
sshot-2014-08-14-12-27-06.png
sshot-2014-08-14-12-27-06.png (19.23 KiB) Viewed 20713 times
если знания выгоднее продавать чем применять - они бесполезны
User avatar
someBody
Site Admin
 
Posts: 1465
Joined: Sat Nov 29, 2008 9:46 pm

PreviousNext

Return to Ресурсы на eVOLution



Who is online

Users browsing this forum: Bing [Bot], Google [Bot] and 2 guests

cron