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

 
skyjet:

Здравствуйте! Извините за настойчивость, но если Вам не сложно, подскажите пожалуйста.

С помощью iCustom я получаю сигнал индикатора в советнике, но советник открывает сделки только в одну сторону, в зависимости от условия этой части.

Нет ничего утомительнее, чем искать ошибки в кусках чужого кода. Да и не программист я.

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

         #property copyright "Integer"
         //..............................  
         double bv=iCustom(NULL,TimeFrame,IND,PatternLength,PatternID,UsePatternStr,BuyPatternStr,0,1);
         double sv=iCustom(NULL,TimeFrame,IND,PatternLength,PatternID,UsePatternStr,BuyPatternStr,1,1);
         
         bool BuySignal=false;
         bool SellSignal=false;
            if(bv!=0 && bv!=EMPTY_VALUE){
               BuySignal=true;
            }
            if(sv!=0 && sv!=EMPTY_VALUE){
               SellSignal=true;
            }
            
            if(BuySignal || SellSignal){
               if(CloseOnRev)fOrderCloseMarket(SellSignal,BuySignal);
               int BuyCount,SellCount;
               int Total=fMarketOrdersTotal(BuyCount,SellCount);
                  if(Total==-1){
                     return(0);
                  }
                  if(Total<MaxCount || MaxCount==-1){
                     if(BuySignal){
                        if(BuyCount<MaxBuyCount || MaxBuyCount==-1){
                           if(LastBuyTime!=iTime(NULL,TimeFrame,0)){
                              fOrderOpenBuy();
                           }  
                        }
                     }
                     if(SellSignal){
                        if(SellCount<MaxSellCount || MaxSellCount==-1){
                           if(LastSellTime!=iTime(NULL,TimeFrame,0)){
                              fOrderOpenSell();
                           }
                        }
                     }
                  }
                  
            }
            
 
skyjet:

Здравствуйте! Извините за настойчивость, но если Вам не сложно, подскажите пожалуйста.

С помощью iCustom я получаю сигнал индикатора в советнике, но советник открывает сделки только в одну сторону, в зависимости от условия этой части.


Надо было бы еще посмотреть на эти условия
 
Vinin:

Но лучше код индикатора не переносить в эскперта - тормоза будут
Как же быть? через iCustom получать данные для эксперта?
 
Alexandr24:
Как же быть? через iCustom получать данные для эксперта?

Оптимальный вариант, если конечно код индикатора оптимален. Иначе можно и ускорить обработку
 
Vinin:

Надо было бы еще посмотреть на эти условия

Проверка на сигнал, сначала и на buy и на sell было db/ub == 0 открывает только длинные сделки


после сигнал стал db!=1, ub!=0 открывает только короткие позиции

ставлю db!=0 и ub!=!0 сделок не открывает вообще

//------ получение сигнала в советнике


double db=iCustom(NULL,0,"GetSignal",0,SignalBar);// Стрелка вниз
double ub=iCustom(NULL,0,"GetSignal",1,SignalBar);// Cтрелка вверх
 
 
 bool BuySignal=false;
 bool SellSignal=false;
 
//-----------------------------------------------------------------------------------+
//Проверка на сигнал
if(db!=1)
 {
  SellSignal=true;
 }
if(ub!=1)
 {
  BuySignal=true;
 }
 
skyjet:

Проверка на сигнал, сначала и на buy и на sell было db/ub == 0 открывает только длинные сделки


после сигнал стал db!=1, ub!=0 открывает только короткие позиции

ставлю db!=0 и ub!=!0 сделок не открывает вообще


Ни о чем не говорит, особенно если индикатор кривой
 
Vinin:

Ни о чем не говорит, особенно если индикатор кривой

За работой индикатора я следил, и нареканий по его работе не замечал.

Но если Вы говорите что он кривой, скажите что в нем проверить?

 
skyjet:
MetaEditor
спасибо!
 

Добрый вечер!! Скажите пожалуста, чем отличается

текст и текстовая метка?

OBJ_TEXT 21 Текст
OBJ_LABEL 23 Текстовая метка.
 

не подскажите...
На заданном интервале производится поиск максимального значения:

buy_stop_level = High[iHighest(NULL,0,MODE_HIGH,Bars-bar_start,1)];

Требуется:
После нахождения максимума, на новом интервале (от первого бара, до бара на котором определён максимум), найти минимум.

StopLoseBuy    = Low[iLowest(NULL,0,MODE_LOW,Bars-(бар который приходится на максимум),1)];
Причина обращения: