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

 
Artyom Trishkin:

Я вот так и не пойму: а что хотите найти и отобразить? Просто словами - без кода.

Вот вы пишете:

Вот и вопрос сразу: а зачем ищете именно на десятом баре?


на десятом баре, это для примера взяла

мне нужено по всей истории поставить точки через 10 или "N" баров после появления стрелки вызываемого индикатора.

как если бы нужно было только на десятом я сделала бы так

 if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i+10),Digits)!=EMPTY_VALUE
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }

Artyom Trishkin:

И приложите полностью весь индикатор, а не OnCalculate()

Это самый первый вариант

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#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 distance=5;
double MyPoint;
//+------------------------------------------------------------------+
//| 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);

//---
   if(Digits()==5 || Digits()==3){MyPoint=Point*10;} else{MyPoint=Point;}
  
   return(INIT_SUCCEEDED);
  }
   // int ila;
int    vspread,num_buy=0,num_sell=0;
//+------------------------------------------------------------------+
//| 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--) 
     {
     for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            //Print()
           // break;
           }
        }
//
      if(num_buy==60)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
    
     for(int ila=i+1;ila<=i+300;ila++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,ila),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=ila;
           // break;
           }
        }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

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

   return(rates_total);
  }
//
.
 

Глобально, хочу сравнить лоу первого бара с “n”-ным верхним фракталом за первой попавшейся стрелкой вызываемого индикатора (первый буфер).

И узнать максимальную цену между первым баром и баром найденного фрактала.

Всё условие такое: если лоу(+-10пп) первого бара равно цене (пусть будет первого) фрактала за стрелкой индикатора и максимальная цена между баром фрактала и первым баром минус цена найденного фрактала  больше 50 пп то ставить стрелку.

Собственно чтобы найти фрактал мне и нужен номер бара на котором стрелка. Я хочу перебирать фракталы начиная с этого бара, дальше в историю.

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

 
mila.com:

Глобально, хочу сравнить лоу первого бара с “n”-ным верхним фракталом за первой попавшейся стрелкой вызываемого индикатора (первый буфер).

И узнать максимальную цену между первым баром и баром найденного фрактала.

Всё условие такое: если лоу(+-10пп) первого бара равно цене (пусть будет первого) фрактала за стрелкой индикатора и максимальная цена между баром фрактала и первым баром минус цена найденного фрактала  больше 50 пп то ставить стрелку.

Собственно чтобы найти фрактал мне и нужен номер бара на котором стрелка. Я хочу перебирать фракталы начиная с этого бара, дальше в историю.

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

Вот этот должен просто точки ставить по всей истории на дистанции в барах, которую вы задаёте в настройках.

Т.е., если задали 10 баров, то в случае наличия сигнала от кастомного индикатора левее индекса цикла на 10 баров, то на текущем баре (индексу i) цикла будет поставлена точка

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#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
//--- input parameters
input uint     InpNumberOfBars   =  10;   // Количество баров отступа
input int      InpDistance       =  5;    // Отступ в пунктах
//--- indicator buffers
double         BufferUP[];
double         BufferDN[];
//---
int            num_bars;
double         distance;
//+------------------------------------------------------------------+
//| 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);
//--- setting variables
   num_bars=(int)InpNumberOfBars+1;
   distance=InpDistance*Point();
//---
   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<num_bars) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-num_bars-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)   // 1000 - 11 - 1 = 999-11 = 988
     {
      double val_0=iCustom(NULL,0,"Arrow v.3",0,i+num_bars);   // rates_total=1000, i=988, val from 988+11=999
      double val_1=iCustom(NULL,0,"Arrow v.3",1,i+num_bars);   // rates_total=1000, i=988, val from 988+11=999
      if(val_0>0 && val_0<EMPTY_VALUE)
         BufferDN[i]=low[i]-distance;  // BufferDN[988]=val
      if(val_1>0 && val_1<EMPTY_VALUE)
         BufferUP[i]=high[i]+distance;
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
//+------------------------------------------------------------------+
Впрочем, "должен" - не значит обязан. Я тупо "на коленке" нарисовал спросонья. Проверить не могу - нет кастомного. Сами уж...
 
Приветствую. Очень нужна помощь. Может кто знает какой-нибудь скрипт или метод, как можно в истории сделок выделять как-нибудь сделки и чтобы потом эти выделения сохранялись в истории, вот например:  https://yadi.sk/d/7aHIs_vh3RxLvW или вот: 
https://yadi.sk/i/Ft8yNn1e3RxMEH - заранее спасибо
Файлы:
2.jpg  481 kb
3.jpg  708 kb
 
civic111:
Приветствую. Очень нужна помощь. Может кто знает какой-нибудь скрипт или метод, как можно в истории сделок выделять как-нибудь сделки и чтобы потом эти выделения сохранялись в истории, вот например:  https://yadi.sk/d/7aHIs_vh3RxLvW или вот: 
https://yadi.sk/i/Ft8yNn1e3RxMEH - заранее спасибо

А вот так


вставить снимки мама не разрешила?

 
civic111:
Приветствую. Очень нужна помощь. Может кто знает какой-нибудь скрипт или метод, как можно в истории сделок выделять как-нибудь сделки и чтобы потом эти выделения сохранялись в истории, вот например:  https://yadi.sk/d/7aHIs_vh3RxLvW или вот: 
https://yadi.sk/i/Ft8yNn1e3RxMEH - заранее спасибо

в стандартной панеле - никак.

Но в CodeBase или (возможно) в Market должны быть тулзы для работы с историей ордеров. Или как вариант делать самому или заказывать на фриланс "альтернативная панель истории ордеров с блекджеком и девами" :-)

Или совсем-совсем просто, экспортировать в CSV а дальше брать Эксель и анализировать историю  в нём.

 

please close job

i need free slot

 
Developer Hooshang Nosratpanah has confirmed step "Work Acceptance"
 
اه مو مشكلة
يعني ممكن صفقة شرا لم تحقق هدفها فلذلك ممكن تعزيزها بصفقة اخرى شراء اذااا اعطى الاكسبيرت اشارة بذلك
 
انا اعتقد ان كل مسافه معينه افضل
لان ممكن نفتح شرا و السعر ينزل ويجيب اشاره بيع
ويفضل علي البيع كتير وينزل جامد واحنا فاتحين كل دا صفقه واحده بس شرا ومنتظرين اشاره شرا تانيه عشان ندخل بلوت اكبر
Причина обращения: