Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 651

 
Taras Slobodyanik:

мой код записывает лонг-ChartID во временную Глобальную переменную.

Визуально, если нажать F3, там отображается ноль (или другое отличное значение).
Это происходит потому что терминал думает что это double-значение и пытается его показать, но мы ему подсунули long - это совсем другой формат числа.

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

Как мне результат использовать в CHART_BRING_TO_TOP ?
 
Artyom Trishkin:

Убрать инициализацию time временем в OnInit()

Спасибо.

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

#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1


//--- indicator buffers
double         BufferUP[];
double         BufferDN[];

int dist=3;
string nameInd;
datetime timf=0;
int numf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);
  
   
//---
//---
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
//---
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         limit=rates_total-2;
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         
         if(fub(i))
           {
            BufferUP[i]=low[i]-dist*Point;
           }

         Comment("");
        }
      //--- return value of prev_calculated for next call

     }
   return(rates_total);
  }
//+
bool fub(int ib)//
  {
   bool bingob=false,flag_verh_f=0;
   int start_bar=0,numbarfrup=0,kfr_all=0;
   double high_old=0,prfra=0,f_up=0,f_dn=0,f=0;

     {
      for(int i_i=ib+3; i_i<Bars-2; i_i++)
        {
         if(high_old<High[i_i]) high_old=High[i_i];

        f_up=iFractals(Symbol(),0,MODE_UPPER,i_i);
        //f_up=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         f_dn=iFractals(Symbol(),0,MODE_LOWER,i_i);
         //f_dn=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,1,i_i),Digits);
         if(f_up>0 && f_up>iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i)+10*Point)//Если фрактал найден выше МА+10 pips
           {
            numbarfrup=i_i;
           }
         if(f_dn>0 && f_dn<iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i))
           {
            start_bar=numbarfrup;break;
           }
        }
      for(int i_i=start_bar; i_i<Bars-2; i_i++)
        {
         f=iFractals(Symbol(),0,MODE_UPPER,i_i);
         //f=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         if(f>0)kfr_all++;
         if(f>0 && Low[ib]<f+1*_Point && Open[ib]>f //Сравнение фрактала с текущ баром
            &&
            high_old-f>=100*Point//от максимума до фрактала 100 пп
            )
           {
            bingob=true;
            prfra=f;
            timf=Time[i_i];
            break;
           }
         if(kfr_all==3)break;
        }
     }
// numfb=iBarShift(NULL,PERIOD_CURRENT,timf,true);
   if(bingob)
     {flag_verh_f=true;}
   if(bingob==false)
      flag_verh_f=false;

   return(flag_verh_f);

  }
//



 
inter78:
Как мне результат использовать в CHART_BRING_TO_TOP ?

так же как использовали до этого CHART_BRING_TO_TOP 

 
ребят всем привет, такая ситуация имеем в рынке три ордера бай по одной цене цена идет вверх на 10 пунктов мы имеем по каждому ордеру +10 пунктов я хочу за локировать тремя ордерами сел теперь как сделать так что бы эти ордера больше не проверялись в мкл4
 
Ghabo:

Спасибо.

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




Индикаторы iFreeNumFractals с настройками как у стандартного и стандартный Fractals есть на графике?

Если есть, их сигналы совпадают?

 
Aleksandr Egorov:
ребят всем привет, такая ситуация имеем в рынке три ордера бай по одной цене цена идет вверх на 10 пунктов мы имеем по каждому ордеру +10 пунктов я хочу за локировать тремя ордерами сел теперь как сделать так что бы эти ордера больше не проверялись в мкл4

Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...

 
Taras Slobodyanik:

так же как использовали до этого CHART_BRING_TO_TOP 

Так как использовал ничего не получается. Для Вас наверное не составит большого труда все тоже самое, только в виде индикатора и довести до CHART_BRING_TO_TOP. 
 
Artyom Trishkin:

Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...

такая ситуация, имеем в рынке три ордера бай, по одной цене, цена идет вверх на 10 пунктов, мы имеем по каждому ордеру +10 пунктов, я хочу за локировать тремя ордерами сел, теперь как сделать так, что бы эти ордера больше не проверялись в мкл4

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам

Taras Slobodyanik, 2018.10.07 22:12

GlobalVariableCheck() - проверяет есть ли уже такая переменная, если нет, то
GlobalVariableTemp()  - создает временную переменную, которая сама удалится при следующем запуске.

Этот момент понятен, вопрос почему если не существует ГП создается только временная, а не постоянная через GlobalVariableSet?

 
Artyom Trishkin:

Индикаторы iFreeNumFractals с настройками как у стандартного и стандартный Fractals есть на графике?

Если есть, их сигналы совпадают?

Совпадают фракталы полностью.

Стрелки по обычным фракталам на скрине 

по iFreeNumFractals ставит первую и последнюю, средних трёх нет.

aqz

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