Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, я хотел бы спросить, можно ли переписать этот индикатор так, чтобы он показывал только стрелки, а они должны появляться на свечах? Может ли кто-нибудь помочь мне с этим, или, возможно, закодировать это для меня, пожалуйста?
с уважением
Медленный
fxmtn-test.mq4Slow
Попробуйте так
Спасибо большое mladen работает прекрасно !!!
Я тоже пытаюсь как-то активировать "extern int arrowDistance = XXX;".
Теперь он отображается в меню выбора, но расстояние не меняется. Куда вставлять *arrowDistance ?
Или я совсем не прав?
Я ввел его в нескольких местах, но это дало мне только больше точек, а не больше расстояния.
Я новичок, пытаюсь понять код и надеюсь на помощь.
Сделал это следующим образом :
if (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
if (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);
Правильный ли это способ? Просто потому что это работает, это может быть неправильно
Сделали вот так :
если (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
если (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);
Правильный ли это способ? Просто потому что это работает, это может быть неправильноЭто должно сработать, есть и другой способ, который можно сделать следующим образом
LongBuffe = Low-arrowDistance*iATR(NULL,0,20,i) и ShortBuff = High+arrowDistance**iATR(NULL,0,20,i)
Медленно,
Лучше использовать режим iATR(). Поменяйте таймфреймы и вы поймете, что я имею в виду. Визуально у вас будет проблема на более высоких таймфреймах, когда расстояние стрелки от максимума или минимума фиксировано (они будут выглядеть грязно на некоторых таймфреймах). Использование iATR() вместо фиксированного расстояния решает эту проблему.
Спасибо mrtools, mladen работает действительно намного лучше.
Один последний индикатор, который я не могу контролировать.....
Пытаюсь изменить его здесь: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Думал, что это правильное место, так как изменение 50 изменяет расстояние. Но ничего из того, что я тестировал, не работало с arrowDistance.
Спасибо mrtools, mladen работает действительно намного лучше.
Один последний индикатор, который я не могу контролировать .....
Пытаюсь изменить его здесь: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Думал, что это правильное место, так как изменение 50 меняет дистанцию. Но ничего из того, что я тестировал, не работало с arrowDistance.Медленно
Когда вы используете atr для расстояния между стрелками, вероятно, лучшим способом изменить это расстояние является своего рода множитель. Например :
arrowPrice = High+iATR(NULL,0,50,0)*arrowDistance;
Где arrowDistance определяется как double и может быть дробным (поэтому вы можете использовать как значения типа 0.5, так и 10.5). Изменение периода atr не приведет к существенному изменению расстояния (просто будет учитываться более длительное среднее значение диапазонов).
попытка получить значение из другого индикатора
Здравствуйте,
Я пытаюсь написать свой первый собственный индикатор и хочу использовать также значение из существующего индикатора, который я взял с этого сайта. Я просто скопировал код с инди здесь.
Что я должен написать в моем новом индикаторе, чтобы узнать, является ли бар синим/красным или 1/0. Я не против, но я уже много раз пробовал и все время получал только ноль.
Я даже пытался получить весь код в моем индикаторе, но ничего не вышло.
Любая помощь была бы признательна
спасибо Боб
#property link "fxfariz@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue //Red //Aqua
#property indicator_color2 Red
extern int SSP=7;
extern double Kmax=50.6; //24 21.6 21.6
extern int CountBars=300;
extern int myPeriod = 0 ;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtHBuffer1[];
double ExtHBuffer2[];
int xPeriod ;
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN1";
}
return(tfs);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(4);
SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red
SetIndexBuffer(0,ExtHBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime
SetIndexBuffer(1,ExtHBuffer2);
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(3,ExtMapBuffer2);
if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}
string tPeriod = TimeFrameToString(xPeriod) ;
IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+SSP);
SetIndexDrawBegin(1,Bars-CountBars+SSP);
int i, counted_bars=IndicatorCounted();
double SsMax, SsMin, smin, smax;
if(Bars<=SSP+1) return(0);
if(counted_bars<SSP+1)
{
for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
}
for(i=CountBars-SSP;i>=0;i--) {
SsMax = High;
SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];
smax = SsMax-(SsMax-SsMin)*Kmax/100;
ExtMapBuffer1=smax;
ExtMapBuffer2=smax;
}
for(int b=CountBars-SSP;b>=0;b--)
{
if(ExtMapBuffer1>ExtMapBuffer2)
{
ExtHBuffer1=1;
ExtHBuffer2=0;
}
else
{
ExtHBuffer1=0;
ExtHBuffer2=1;
}
}
return(0);
}hello com,
я пытаюсь написать свой первый собственный индикатор и хочу использовать также значение из существующего индикатора, который я взял с этого сайта. я просто скопировал код с инди здесь.
Что я должен написать в моем новом индикаторе, чтобы узнать, является ли бар синим/красным или 1/0. Я не против, но я уже много раз пробовал и все время получал только ноль.
Я даже пытался получить весь код в моем индикаторе, но ничего не вышло.
Любая помощь была бы признательна
спасибо Боб
#property link "fxfariz@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue //Red //Aqua
#property indicator_color2 Red
extern int SSP=7;
extern double Kmax=50.6; //24 21.6 21.6
extern int CountBars=300;
extern int myPeriod = 0 ;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtHBuffer1[];
double ExtHBuffer2[];
int xPeriod ;
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN1";
}
return(tfs);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(4);
SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red
SetIndexBuffer(0,ExtHBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime
SetIndexBuffer(1,ExtHBuffer2);
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(3,ExtMapBuffer2);
if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}
string tPeriod = TimeFrameToString(xPeriod) ;
IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+SSP);
SetIndexDrawBegin(1,Bars-CountBars+SSP);
int i, counted_bars=IndicatorCounted();
double SsMax, SsMin, smin, smax;
if(Bars<=SSP+1) return(0);
if(counted_bars<SSP+1)
{
for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
}
for(i=CountBars-SSP;i>=0;i--) {
SsMax = High;
SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];
smax = SsMax-(SsMax-SsMin)*Kmax/100;
ExtMapBuffer1=smax;
ExtMapBuffer2=smax;
}
for(int b=CountBars-SSP;b>=0;b--)
{
if(ExtMapBuffer1>ExtMapBuffer2)
{
ExtHBuffer1=1;
ExtHBuffer2=0;
}
else
{
ExtHBuffer1=0;
ExtHBuffer2=1;
}
}
return(0);
}BobMorane1000
Вы можете сделать что-то вроде этого:
bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);
Но будьте осторожны. Этот индикатор является разновидностью индикатора суперсигнал, а индикатор суперсигнал пересчитывает (перерисовывает)
спасибо большое и за предупреждение^^, я попробую сейчас ...