Помощь в кодировании - страница 466

 

Доброе утро всем.

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

Большое спасибо.

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 Red

//---- индикаторные буферы

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

double resh = 0, resl = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- 1 дополнительный буфер, используемый для подсчета.

IndicatorBuffers(3);

//---- настройки рисования

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 отображение буферов индикаторов

if(!SetIndexBuffer(0, ind_buffer1) &&

!SetIndexBuffer(1, ind_buffer2) &&

!SetIndexBuffer(2, ind_buffer3))

Print("cannot set indicator buffers!");

//---- имя для DataWindow и метки подокна индикатора

IndicatorShortName("DeltaForce");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- инициализация выполнена

return(0);

}

//+------------------------------------------------------------------+

//| Delta Force |

//+------------------------------------------------------------------+

int start()

{

for(CB = 0 ; CB <= Bars ; CB++)

{

CurrentBar = Bars - CB;

if(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0;

if(resh == 0)

дельта = 0;

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1]);

// valueh = High[CurrentBar];

реш = 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Close[CurrentBar] < Close[CurrentBar+1] )

{

реш = 0;

if(resl == 0)

дельтал = 0;

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar]);

//valuel = Low[CurrentBar];

resl = 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- сделано

return(0);

}

//+------------------------------------------------------------------+

 
rookiespain:
Доброе утро всем.

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

Большое спасибо.

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 Red

//---- индикаторные буферы

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

double resh = 0, resl = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- 1 дополнительный буфер, используемый для подсчета.

IndicatorBuffers(3);

//---- настройки рисования

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 отображение буферов индикаторов

if(!SetIndexBuffer(0, ind_buffer1) &&

!SetIndexBuffer(1, ind_buffer2) &&

!SetIndexBuffer(2, ind_buffer3))

Print("cannot set indicator buffers!");

//---- имя для DataWindow и метки подокна индикатора

IndicatorShortName("DeltaForce");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- инициализация выполнена

return(0);

}

//+------------------------------------------------------------------+

//| Delta Force |

//+------------------------------------------------------------------+

int start()

{

for(CB = 0 ; CB <= Bars ; CB++)

{

CurrentBar = Bars - CB;

if(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0;

if(resh == 0)

дельта = 0;

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1]);

// valueh = High[CurrentBar];

реш = 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Close[CurrentBar] < Close[CurrentBar+1] )

{

реш = 0;

if(resl == 0)

дельтал = 0;

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar]);

//valuel = Low[CurrentBar];

resl = 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- сделано

return(0);

}

//+------------------------------------------------------------------+

Попробуйте сейчас: _test.mq4

Файлы:
_test.mq4  3 kb
test.gif  68 kb
 
Big Be:
Стэнвелл,

Пара фотографий, показывающих все это, помогла бы.

Биг Би

Привет, Биг Би,

Хорошая мысль, я выложу несколько графиков завтра.

Ваше здоровье.

Стэн

 

Вот график AUD, который я отметил вручную. Красные квадраты - это перекрывающиеся бары. Слева есть квадрат, внутри которого только три бара, поэтому он не подходит под определение. Однако, если бы эта нога была значительной, скажем, больше 6 X ATR, я бы тоже посчитал их как свинг (просто трудно торговать только с тремя барами), но подумал, что это требование усложнит кодирование, поэтому мы можем пока оставить его в стороне.

thx.

Стэн

Файлы:
 

Привет Младен и Mrtools!

Мне снова нужна ваша помощь, можете ли вы добавить визуальный / акустический сигнал к этому индикатору?

Заранее спасибо, будьте здоровы!

Файлы:
 

МЛАДЕН, доброе утро.

Спасибо большое, попробовал их _test и право появляется.

Любая помощь у меня есть здесь, хотя его доминирование гораздо больше, чем мое, хотя в ProRealTime / VISUALCHART да я могу помочь больше.

С наилучшими пожеланиями.

 

Здравствуйте,

У меня есть индикатор, и я хочу ограничить расчет баров.

Оригинальный код был таким:

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);

Правильно ли это? Индикатор вроде бы работает нормально, но у меня есть сомнения, действительно ли я ограничил расчет баров.

 
thefxpros:
Привет,

У меня есть индикатор, и я хочу ограничить расчет баров.

Исходный код был таким:

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);
Все правильно? Индикатор вроде бы работает нормально, но у меня есть сомнения, действительно ли я ограничил расчет баров.

thefxpros

Нет. Сделайте это следующим образом:

int limit = MathMin(MathMin(Bars-counted_bars,Bars-1),NBars);

Но в этом случае вы всегда должны быть уверены, что NBars всегда > 0.

 

Привет, Младен

Если вы можете помочь мне, добавить оси X и Y, тогда я могу поместить его в угол.

и могу настроить размер шрифта, извините за мой английский.

X2014-PIPSv2

большое спасибо.

Файлы:
 
blueface:
Привет, Младен

Если вы можете помочь мне, добавьте оси X и Y, тогда я могу поместить его в угол.

и могу настроить размер шрифта, извините за мой английский.

X2014-PIPSv2

большое спасибо.

blueface

Они уже есть: переменные posX и posY в коде.

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