[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 290

 
Да, и загляните сюда :
Документация
 

Здравствуйте! Я пытаюсь создать индикаторную функцию, и у меня вопрос: индикатор рисует стрелки при пересечении кривых, но как мне получить этот сигнал из индикаторной функции через iCustom? (1)

Я думал, можно ли перенести этот сигнал с помощью условия true/false? (2)

Но тогда как перенести этот сигнал через iCustom? Мне все равно нужно указывать и в индикаторной функции и в iCustom переменные индикатора и объявлять массивы?

(1) else
               { // если выполнено условие нисходящего пересечения
               Print("  Up выполнены условия истинности пересечения ");

                CrossDownBuffer[index_up_1]=Cr1+5*Point;// ставим стрелку вниз 
                // 

(2) else
               { // если выполнено условие нисходящего пересечения
               Print("  Up выполнены условия истинности пересечения ");

                CrossDownBuffer[index_up_1]=Cr1+5*Point;// ставим стрелку вниз 
                //  
                CrossDownSignal = true;
//тогда
if
{
Ind_Value = iCustom(NULL, 0, "MaSignalFunction", true 0, 2); 
{ticket = OrderSend(....
 
FAQ спасибо.
 
Народ, подтягивайтесь, пожалуйста, для ответов новичкам. Предыдущая смена выдохлась.
 
А как найти минимальное и максимальное значение индикатора за определенный период?
 
Точно так же . пробежаться в цикле с условием, если значение меньше минимума, то обновляем минимум (минимум=значение), ну и с максимумом так же, только если больше
 
Вот так?

//+------------------------------------------------------------------+
//| 00003.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property show_inputs
extern int Depth=100;
extern int ExtRVIPeriod=10;
double mini=0;
double maxi=0;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start() {
//----
if(Depth>Bars-1) Depth=Bars-1;
for(int i=1; i<Depth; i++) {
double RVI = iRVI(NULL,0,ExtRVIPeriod,MODE_MAIN,i);
if(RVI < mini){
mini=RVI;
}
if(RVI > maxi){
maxi=RVI;
}
}
//----
Alert (mini," : ",maxi);
return(0);
}
//+------------------------------------------------------------------+
 
granit77:
Народ, подтягивайтесь, пожалуйста, для ответов новичкам. Предыдущая смены выдохлась.

Вот уж правда, так правда - от этих ответов иной раз устаёшь так, что возникает ощущение, будто реально на рабочей смене побывал :)
 
GarKain:
Вот так?
.......... .........
Alert (mini," : ",maxi);
return(0);
}
Ага. НО! Если Алерт поставить за скобками цикла, то он выдаст только те значения переменных, которые оказались в тех переменных послевыполнения цикла. Если же его включить цикл, да ещё и добавить туда переменную i, т мы увидим эти значения на каждой свече, да ещё и будем знать номер свечи. Ну а поскольку Ваш цикл перебирает свечи из настоящего в прошлое, то ближайшие к рынку значения можно посмотреть на графике, используя инструмент "перекрестие" - оно покажет (с зажатой левой кнопкой мыши) на сколько свеч оно отстоит от текущего положения
 

угу, и полную голову алертов...

достаточно вместе с обновлением максимума/минимума запоминать и номер бара.