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

 

Я хочу использовать "ЦЕНУ ЗАКРЫТИЯ" вместо цены медианы в приведенной ниже кодировке ..... Пожалуйста, помогите:

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

int start()

{

double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

int counted_bars = IndicatorCounted();

//---- проверка на возможные ошибки

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

//---- последний подсчитанный бар будет пересчитан

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//Print(limit);

//----

for (i = Bars; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("medianPrice: "+medianPrice);

up=medianPrice+(Multiplier*atr);

//Print("up: "+up);

dn=medianPrice-(Multiplier*atr);

//Print("dn: "+dn);

trend=1;

if (Close>up) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

if (trend == 1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

if (trend0) {

flag=1;

//Print("flag: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

флагх=1;

//Print("флагх: "+флагх);

}

else {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

if (trendup)

up=up;

if (flag==1)

up=medianPrice+(Multiplier*atr);

if (flagh==1)

dn=medianPrice-(Multiplier*atr);

//-- Рисуем индикатор

if (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown = Up;

if (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point);

}

}

WindowRedraw();

//----

return(0);

}

 
rpasupathy:
Я хочу использовать "ЦЕНУ ЗАКРЫТИЯ" вместо цены медианы в приведенной ниже кодировке ..... Пожалуйста, помогите:

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

int start()

{

double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

int counted_bars = IndicatorCounted();

//---- проверка на возможные ошибки

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

//---- последний подсчитанный бар будет пересчитан

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//Print(limit);

//----

for (i = Bars; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("medianPrice: "+medianPrice);

up=medianPrice+(Multiplier*atr);

//Print("up: "+up);

dn=medianPrice-(Multiplier*atr);

//Print("dn: "+dn);

trend=1;

if (Close>up) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

if (trend == 1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

if (trend0) {

flag=1;

//Print("flag: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

флагх=1;

//Print("флагх: "+флагх);

}

else {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

if (trendup)

up=up;

if (flag==1)

up=medianPrice+(Multiplier*atr);

if (flagh==1)

dn=medianPrice-(Multiplier*atr);

//-- Рисуем индикатор

if (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown = Up;

if (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point);

}

}

WindowRedraw();

//----

return(0);

}

Вы можете заменить :

(High+Low)/2

на

Close

 
mladen:
kenwa

О какой функциональности символа автопроверки вы говорите? В этом коде такого нет

Все, что вам нужно сделать, это ввести символ в соответствующее поле параметров, и он будет работать (на любом символе, при условии, что имя символа правильно) Используйте индикатор, который предоставил fareastol, поскольку он делает все то, о чем вы говорили, что вам нужно.

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

я вижу это внутри:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

некоторые части:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

Я не могу точно знать, что он делает, так как моя способность не может знать его точную цель, но из моей сырой догадки, кажется, что код автоматически определяет, если мы внешний ввод символа, то показать на графике, если нет ввода, будет показывать локальный график Null. тогда я буду думать, если я намеренно оставить несколько внешних строк ввода в пустой снаружи (заполнение ничего там), будет ли индикатор повторно (по крайней мере, наложить) показать локальный график Null несколько раз? Также как код адаптируется к внутренним предустановленным символам? Я не знаю, как точно это сделать, но я пытаюсь, это похоже на способ вложения (десенсибилизировать функцию/распознавание внешних входных символов)? или как адаптировать модификацию к внутренним предустановленным символам?

Кстати, почему версия, которую я сделал до страницы 166 #1660, все еще перерисовывается в реальном времени? Какие основные причины вызывают такое перерисовывание? Спасибо за советы.

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

Я вижу это внутри:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

некоторые части:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

Я не могу точно знать, что он делает, так как моя способность не может знать его точную цель, но из моей сырой догадки, кажется, что код автоматически определяет, если мы внешний ввод символа, то показать на графике, если нет ввода, покажет локальный график Null. тогда я думаю, если я намеренно оставить несколько внешних строк ввода в пустой снаружи (заполнение ничего там), будет ли индикатор неоднократно (по крайней мере, накладывать) показать локальный график Null несколько раз? Также как код адаптируется к внутренним предустановленным символам? Я не знаю, как точно это сделать, но я пытаюсь, это похоже на способ вложения (десенсибилизировать функцию/распознавание внешних входных символов)? или как адаптировать модификацию к внутренним предустановленным символам?

кстати, почему версия, которую я сделал до страницы 166 #1660, до сих пор перерисовывается в реальном времени? какие основные причины вызывают такое перерисовывание? Спасибо за советы.

Вы можете проверить индикатор из этого сообщения: https: //www.mql5.com/en/forum/178416/page19, чтобы увидеть, как некоторые дополнительные элементы управления могут быть сделаны.

 

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

 
kenwa:
для #1664, прочитал и скачал раньше, не могу адаптировать коды, слишком продвинутые и сложные для меня.

Не все можно написать в две строки. В некоторых случаях это невозможно

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

В связи с моей просьбой рассчитать POC и VA для целевой группы на основе заданного профиля рынка, я старался изо всех сил. К сожалению, я получил только значение POC. Получение значений VA High/Low находится за пределами моих текущих возможностей.

Кроме того, в начале недели оригинальный индикатор Level Sensor, похоже, имеет ошибку в своем коде, что приводит к ужасному отображению, как вы можете видеть на прилагаемой картинке. Я не могу понять, в чем причина, но предполагаю, что это связано с конфликтом между отображением MT4 по умолчанию и данными более низкого таймфрейма (<W1).

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

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

fareastol

fareastol

Эта вещь на экране происходит потому, что на графике есть временной разрыв между данными последней пятницы и первыми данными воскресенья или понедельника, и когда время xshift добавляется к времени линии.

Одно из возможных решений - это решение из этой версии: инвертировать отображение и вместо отображения справа налево отображать слева направо (как на картинке). Пока что я не нашел решения для отображения справа налево.

Файлы:
 

Иногда достаточно немного подумать (как только я закончил предыдущий пост, идея появилась ).

Вот решение "справа налево" (насколько я его проверил, сейчас оно работает нормально)

Файлы:
 

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

Я рассчитал линию стандартного отклонения "вручную".

Теперь я хочу нарисовать канал, как оригинальный Deviation Channel из метатрейдера.

Но я не знаю, как рассчитать коэффициент = 0.618 к моей линии стандартного отклонения, чтобы она работала как оригинальный канал ...OBJPROP_DEVIATION,0.618)

 

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

Вы напоминаете мне о многих значимых вещах и мотивируете меня.

Спасибо за все

fareastol