Скачать MetaTrader 5

Кто может подправить индикатор?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Читай форум и увеличивай свой рейтинг!
Сергей
264
Сергей 2011.05.09 13:07 

Есть индикатор, не MTF но почему то перерисовывается, иногда прилично. Возможно ли убрать этот недостаток, или хотя сделать стабильность перерисовки, к примеру перерисовывался чтобы 1бар но не более. Из второго можно сделать первый по показаниям но он тоже рисуется, может второй легче исправить.

Victor Nikolaev
Модератор
14493
Victor Nikolaev 2011.05.09 13:21  
Просьба - не выкладывать декомпилированный софт
Сергей
264
Сергей 2011.05.09 13:30  
Vinin:
Просьба - не выкладывать декомпилированный софт

а как поступить если кода нет, а есть только сам индюк и декомпил. Можно ли как то из ex4 получить чистый код?
Комбинатор
15920
Комбинатор 2011.05.09 13:46  

Как вариант, обратиться в Жобу. Или на другой форум.

Есть еще два варианта -- почистить декомпил или обратиться к автору.

Сергей
264
Сергей 2011.05.11 14:32  
#property copyright "Copyright © 2009.07.06"
#property link ""

// no repaint version: limit =200
/*--------------------------------------------------------------------
Source code:

#property copyright "fxfariz a.k.a warrior trader"
#property link "fxfariz@gmail,com"


//------------------------------------------------------------------*/

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_minimum 0.0
#property indicator_maximum 2.0

//-------------------------------------------------------------------
extern int period=8;
extern bool alarm=false;
extern int nBars = 200;
extern int arrowUP = 110;
extern int arrowDN = 110;
//-------------------------------------------------------------------

double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
double alertBar;
double last;

int init()
{
IndicatorDigits(0);
IndicatorBuffers(3);

SetIndexBuffer(0,ExtBuffer1); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,arrowUP);
SetIndexBuffer(1,ExtBuffer2); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,arrowDN);
SetIndexBuffer(2,ExtBuffer0);

IndicatorShortName("SwingMan Vorticity" +" ("+period+")");
SetIndexLabel(0,"Trend UP");
SetIndexLabel(1,"Trend DN");

return(0);
}


int start()
{
int limit;
// int counted_bars=IndicatorCounted();
double prev=0,current;
double Value=0,Fish1=0;
double price;
double MinL=0;
double MaxH=0;

// if(counted_bars>0) counted_bars--;
// limit=Bars-counted_bars;

limit = nBars;
//for(int i=0; i<Bars; i++)
for(int i=0; i<limit; i++) {
MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
price = (High[i]+Low[i])/2;
if(MaxH-MinL == 0) Value = 0.33*2*(0-0.5) + 0.67*prev;
else Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*prev;
Value=MathMin(MathMax(Value,-0.999),0.999);
if(1-Value == 0) ExtBuffer0[i]=0.5+0.5*Fish1;
else ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
prev=Value;
Fish1=ExtBuffer0[i];
}


bool trendUP = TRUE;
for (i = limit; i >= 0; i--) {
current = ExtBuffer0[i];
prev = ExtBuffer0[i + 1];
if ((current < 0.0 && prev > 0.0) || current < 0.0) trendUP = FALSE;
if ((current > 0.0 && prev < 0.0) || current > 0.0) trendUP = TRUE;
if (trendUP) {
ExtBuffer1[i] = 1.0;
ExtBuffer2[i] = EMPTY_VALUE;
if (alarm == true) {
if (i==0 && prev != 2 && ExtBuffer1[i] == 1.0 && Bars>alertBar) {
Alert("(smVorti) Trend Changing Down on ",Period()," ",Symbol());
alertBar = Bars;
last = 2;
}
}
}
else {
ExtBuffer2[i] = 1.0;
ExtBuffer1[i] = EMPTY_VALUE;
if (alarm == true) {
if (i==0 && last != 1 && ExtBuffer2[i] == 1.0 && Bars>alertBar) {
Alert("(smVorti) Trend Changing Up on ",Period()," ",Symbol());
alertBar = Bars;
last = 1;
}
}
}
}
return(0);
}

Указано что мол не перерисовывающаяся версия хотя на самом деле не так, посмотрите кто может, как сделать чтоб не перерисовывался или рисовался строго на 1-2 бара (для торговли не страшно).

Dmitry Fedoseev
42887
Dmitry Fedoseev 2011.05.11 14:41  

Идем справа навлево 

for(int i=0; i<limit; i++) {

и экспоненциально сглаживаем

Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*prev; 

Отправьте этот индикатор в корзину. 

Сергей
264
Сергей 2011.05.11 14:46  

Не хочется как бы в корзину, в реале вход на 1-2 бара позже


Dmitry Fedoseev
42887
Dmitry Fedoseev 2011.05.11 14:51  

В инете найдутся картинки денег и покрасивее, глядя на которые можно помечтать.

Сергей
264
Сергей 2011.05.11 14:56  
человек по этой картинке заходил но в реале сигнал получился на 1-2 бара позже, он вошел в сделку и при переключении периода сигналы появились там где сейчас указано на картинке, 1-2 бара не страшно для м1 но как добиться четко перерисовки на 1 или на 2 бара.
Сергей
264
Сергей 2011.05.11 14:57  
Integer:

В инете найдутся картинки денег и покрасивее, глядя на которые можно помечтать.


покажите картинку покрасивее
Dmitry Fedoseev
42887
Dmitry Fedoseev 2011.05.11 15:04  
Пожалуйста, сколько угодно
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий