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

 
mladen:
Вы можете добавить его, чтобы рисовать эти дополнительные линии еще раз - вот так:
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
и он будет рисовать эти дополнительные линии вокруг всех "основных" линий.

Еще раз спасибо mladen

 

Нужна помощь в программировании оповещения

Здравствуйте, я новичок в программировании mql4.

Я хочу создать новый сигнал тревоги "все в одном".

У меня есть Fx MNT, Super Signal и CHT Value Chart с сигналами тревоги.

Теперь я хочу иметь только один сигнал тревоги, когда MNT, Super Signal, Value Chart и RSI находятся в правильном месте.

Как это закодировать? Могу ли я использовать части сигналов тревоги из существующих и поместить их все в один большой код?

С уважением, Slow

 
Slow Moe:
Здравствуйте, я новичок в программировании на mql4.

Я хочу создать новый сигнал тревоги "все в одном".

У меня есть Fx MNT, Super Signal и CHT Value Chart с сигналами тревоги.

Теперь я хочу иметь только один сигнал тревоги, когда MNT, Super Signal, Value Chart и RSI находятся в правильном месте.

Как это закодировать? Могу ли я использовать части сигналов тревоги из существующих и поместить их все в один большой код?

С уважением, Slow

Медленный

Вы можете это сделать, но код, который будет "отвечать" за получение данных от всех этих индикаторов, не будет простым (особенно часть с параметрами, где вам нужно будет объявить внешние параметры для всех индикаторов, которые будут вызываться, чтобы узнать, должен ли срабатывать алерт или нет).

 

последовательные закрытия выше/ниже

В приложенном файле есть несколько условий, которые можно включить, выбрав true/false.

Я хотел бы включить еще одно условие как true/false: есть ли

2 последовательных более высоких закрытия для длинных позиций?

Если да, то при наличии других условий, включенных в true, создается стрелка вверх.

Есть ли 2 последовательных более низких закрытия для шортов?

Если да, то если присутствуют другие условия, включенные в true, то создается стрелка вниз.

Может ли количество закрытий быть переменной?

Может ли кто-нибудь закодировать это дополнительное условие в индикаторе Stoch_Indy? Спасибо.

Файлы:
 
person77:
В приложенном файле есть ряд условий, которые можно включить, выбрав true/false.

Я хотел бы включить еще одно условие как истина/ложь: есть ли

2 последовательных более высоких закрытия для длинных позиций?

Если да, то при наличии других условий, включающих true, создается стрелка вверх.

Есть ли 2 последовательных более низких закрытия для шортов?

Если да, то если присутствуют другие условия, включенные в true, то создается стрелка вниз.

Может ли количество закрытий быть переменной?

Может ли кто-нибудь закодировать это дополнительное условие в индикаторе Stoch_Indy? Спасибо.

человек77

Попробуйте этот вариант

Для этого добавлена опция UseConsecutiveCloseBars. Проверяется не просто закрытие, а закрытие должно быть больше открытия на таких барах, чтобы это было последовательное повышение, или меньше открытия на таких барах, чтобы это было последовательное понижение.

Файлы:
 
mladen:
person77

Попробуйте вот это

Для этого добавлена опция UseConsecutiveCloseBars. Проверяется не просто закрытие, а закрытие должно быть больше, чем открытие на таких барах, чтобы это было последовательное повышение, или оно должно быть меньше, чем открытие на таких барах, чтобы это было последовательное понижение.

Очень хороший mladen - работает очень хорошо. Спасибо!

В тех немногих случаях, с которыми я сталкивался, разрешение C = O в большинстве случаев было благоприятным.

Не могли бы вы изменить его, чтобы разрешить это, или, что еще лучше, иметь опцию, разрешено ли C = O или нет?

Файлы:
 
person77:

Очень хороший младен - работает очень хорошо. Спасибо!

В тех немногих случаях, с которыми я сталкивался, разрешение C = O в большинстве случаев является благоприятным.

Не могли бы вы изменить его, чтобы разрешить это, или, что еще лучше, иметь опцию, разрешено ли C = O или нет?

person77

Добавлена еще одна опция : AllowCloseEqualOpen. так что теперь вы можете контролировать это с помощью этой опции.

Файлы:
 

Привет, ребята,

У меня вопрос по кодированию

Можно ли с помощью таких настроек построить скользящую среднюю на общем графике?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

 
cain82:
Привет, ребята,

У меня вопрос по кодированию

Можно ли с помощью этих предпочтений построить скользящую среднюю на общем графике?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

То, что вы написали (dFactor и mFactor), все оценивается в постоянное значение независимо от цены и номера бара, поэтому на графике будет горизонтальная линия.

 
mladen:
То, что вы написали (dFactor и mFactor), все оценивается в постоянное значение независимо от цены и номера бара, так что у вас будет горизонтальная линия на графике.

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

Но как я могу получить угловые линии МА на общем графике, как в этом коде indi hystogramm?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

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

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

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