[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 263

 
Run >>:

не подскажете как нарисовать квадрат либо прямоугольник но только чтобы он не рисовался как фон а рисовался как рамка

Спасибо

Установите в списке свойств обьекта прямоугольник, свойство рисоваться как фон в положение false :

ObjectSet( string name, OBJPROP_BACK, false) ;

Правда при этом обьект будет рисоваться перед графиком .

 

правка | удалить

Прошу прощения, возможно, за неразумный вопрос...


немножко торможу с буферами индикаторов.... либо, не совсем точно разобрался с самим индикатором...


подскажите, пожалуйста, если будет возможность, как обратиться к индикатору BrainTrend2StopN?


хочу проверить, находится ли открытие текущего бара выше/ниже значений индикатора.

обращаюсь к индикатору из советника строкой:


iCustom(NULL,0,"BrainTrend2StopN",CountBars, 1,0)

или

iCustom(NULL,0,"BrainTrend2StopN",CountBars, 0,0)

для соответственно нулевого и первого буфера....

но, на эту строку советник никак не реагирует...


Заранее большое спасибо.

Файлы:
 
Morzh09 >>:

iCustom(NULL,0,"BrainTrend2StopN",CountBars,1,0)

или

iCustom(NULL,0,"BrainTrend2StopN",CountBars, 0,0)

для соответственно нулевого и первого буфера....

но, на эту строку советник никак не реагирует...

обратите внимание, у вас в индикаторе 2 внешних параметра:

extern int Simbol =119;

extern int CountBars=500;

их все надо прописывать в iCustom:


iCustom(NULL,0,"BrainTrend2StopN",Simbol,CountBars, 0,0);

iCustom(NULL,0,"BrainTrend2StopN",Simbol,CountBars, 1,0);
 

alsu


спасибо большое. Поправил код, теперь передаю оба параметра, но, к сожалению, при вызове Alert со значениями буферов индикатора, мне пишутся одни нули....


если будет возможность, подскажите, как с этим справиться.

Файлы:
bt1_1.mq4  10 kb
 

попробуйте

Alert("Buy signal",
      "  ",
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN",Simbol,CountBars,EnableAlerts,SignalID,1,0),8),
      "   ", 
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN",Simbol,CountBars,EnableAlerts,SignalID,0,0),8)
      );
 
Помогите пожайлуста господа программисты. Уже неделю мучаюсь но ничего не выходит, так как в программировании ноль. Можете написать индикатор, чтобы при пересечении двух HMA были указатели в виде стрелочек
Файлы:
hma.mq4  4 kb
 

почему-то не понимает, что такое сдвиг и не хочет ставить стрелочки

#property indicator_chart_window
//#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Magenta // 12
#property indicator_color2 Blue // 26
#property indicator_color3 MediumBlue
#property indicator_color4 Tomato
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 1
#property indicator_width4 1
//---- indicator parameters
extern int FastHMA = 12;
extern int SlowHMA = 26;
extern int ExtmethodFastHMA=0; // MODE_SMA
extern int ExtmethodSlowHMA=0; // MODE_SMA
extern int ExtpriceFastHMA=0; // PRICE_CLOSE
extern int ExtpriceSlowHMA=0; // PRICE_CLOSE
extern int ExtsdvigFastHMA=0;
extern int ExtsdvigSlowHMA=0;
extern bool EnableAlert=true;
extern string ExtSoundFileName = "";
//---- indicator buffers
double PreHMA1[];
double PreHMA2[];
double CrossUp[];
double CrossDown[];
static int bBuy = 0;
static int bSell = 0;

//+------------------------------------------------------------------+
int pF, pS;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

// Средние
SetIndexStyle( 0, DRAW_LINE );
SetIndexStyle( 1, DRAW_LINE );
// Сигналы
SetIndexStyle( 2, DRAW_ARROW, EMPTY );
SetIndexArrow( 2, 233 );
SetIndexStyle( 3, DRAW_ARROW, EMPTY );
SetIndexArrow( 3, 234 );

//---- 5 indicator buffers mapping
SetIndexBuffer(0,PreHMA1);
SetIndexBuffer(1,PreHMA2);
SetIndexBuffer( 2, CrossUp );
SetIndexBuffer( 3, CrossDown );

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

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("HMA2("+FastHMA+","+SlowHMA+")");
SetIndexLabel( 0, "HMA("+ FastHMA + "," + SlowHMA+")" + FastHMA );
SetIndexLabel( 1, "HMA(" + FastHMA + "," + SlowHMA+")" + SlowHMA );
SetIndexLabel( 2, "Buy" );
SetIndexLabel( 3, "Sell" );

pF = MathSqrt(FastHMA);
pS = MathSqrt(SlowHMA);

//---- initialization done
return(0);
}


//+------------------------------------------------------------------+
double WMA(int x, int p) {
return(iMA(NULL, 0, p, 0, MODE_SMA, PRICE_CLOSE, x+sdvig));
}


//+------------------------------------------------------------------+
//| Moving Average of Oscillator |
//+------------------------------------------------------------------+
int start()
{

bool bConditionUp;
bool bConditionDown;
double Range;
double AvgRange;

int limit;
int counter;
int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

//---- preparing the HMA
for(int i=0; i<limit; i++) {
PreHMA1[i] = 2*WMA(i, FastHMA/2) - WMA(i, FastHMA);
PreHMA2[i] = 2*WMA(i, SlowHMA/2) - WMA(i, SlowHMA);

AvgRange = 0;
bConditionUp = 0;
bConditionDown = 0;
for ( counter = i; counter <= i + 9; counter++ ) {
AvgRange += MathAbs( High[ counter ] - Low[ counter ] );
}
Range = AvgRange/10;
bConditionUp = (PreHMA1[i+1] >= PreHMA2[i+1] ) &&
(PreHMA1[i+2] <= PreHMA2[i+2] ) &&
(PreHMA1[i] > PreHMA2[i] ); // пересечение вверх
bConditionDown = (PreHMA1[i+1] <= PreHMA2[i+1] ) &&
(PreHMA1[i+2] >= PreHMA2[i+2] ) &&
(PreHMA1[i] < PreHMA2[i] ); // пересечение вниз
if ( bConditionUp) {//
CrossUp[i+1] = PreHMA2[i+1]-Range * 0.75;
CrossDown[i+1] = EMPTY_VALUE;
bConditionDown = false;
}

if ( bConditionDown) {//
CrossDown[i+1] = PreHMA2[i+1]+Range * 0.75;
CrossUp[i+1] = EMPTY_VALUE;
bConditionUp = false;
}

if (!bConditionUp && !bConditionDown) {
CrossDown[i+1] = EMPTY_VALUE;
CrossUp[i+1] = EMPTY_VALUE;
}

if (bConditionUp && !bBuy==1 && i==0 && EnableAlert){
bBuy = 1; // установка флага покупки
bSell = 0; // сброс флага продажи
Alert (Symbol()," ",Period(),"M Achtung BUY "); // звуковой сигнал
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
if (bConditionDown && !bSell==1 && i==0 && EnableAlert){
bBuy = 0; // установка флага покупки
bSell = 1; // сброс флага продажи
Alert (Symbol()," ",Period(),"M Achtung SELL "); // звуковой сигнал
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
//Comment ("Buy-"+bBuy+"\nSell-"+bSell);
} // for

//return ( 0 );
}
//for buy
// if (bBuy==0 && i < 1 && EnableAlert) {
// //Alert (Symbol()," ",Period(),"M Achtung BUY "); // звуковой сигнал
// Alert ("Buy-",bBuy," ",i," ",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

// if (bSell==0 && i < 1 && EnableAlert) {
// //Alert (Symbol()," ",Period(),"M Achtung SELL ");
// Alert ("Sell-",bSell," ",i," ",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

может кто подскажет в чем моя ошибка

 
kurt >>:


может кто подскажет в чем моя ошибка

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

 

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


Помогите пожалуйста разобраться в информационной функции из учебника https://book.mql4.com/ru/build/info Уже неделю не могу понять, почему не появляется от неё сигналов? Советника брал в точности из учебника, информ там включен внутри.


Надо ли теперь добавлять индикатор на график? И чем его заполнить? В примере написан пустой и мол чем пожелаете тем и заполняйте... Как сделать чтобы он всё-таки стал выводить сигналы функции Inform() ???

 

Похоже неделя у нас у новичков это предельный срок после которого мы идём к вам профи)))


Вывод делал по последним постам...

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