Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 446

 
Artyom Trishkin:

Eu ainda não entendo: o que você quer encontrar e exibir? Apenas em palavras - sem código.

Portanto, você está escrevendo:

A pergunta é: Por que você está procurando na décima barra?


Na décima barra, tomei-a como exemplo.

Preciso definir pontos após 10 ou "N" barras depois que a seta do indicador chamado aparecer.

como se eu estivesse procurando apenas na décima barra, eu faria o seguinte

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

        }

Artyom Trishkin:

E anexar o indicador inteiro, não o OnCalculate()

Esta é a primeira opção

#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);
  }
//
.
 

Globalmente, quero comparar o baixo da primeira barra com o"n" fractal superior por trás da primeira seta do chamado indicador (primeiro tampão).

E descubra o preço máximo entre a primeira barra e a barra do fractal encontrado.

A condição é a seguinte: se a baixa (+-10 pontos) da primeira barra for igual ao preço (que seja a primeira) do fractal atrás da seta indicadora e o preço máximo entre a barra fractal e a primeira barra menos o preço do fractal encontrado for maior que 50 pontos, então coloque a seta.

Na verdade, para encontrar o fractal, eu preciso do número da barra onde está a flecha. Quero olhar através dos fractais a partir desta barra e depois para a história.

Talvez eu tenha começado do lugar errado e você possa me dar outra solução.

 
mila.com:

Globalmente, quero comparar o baixo da primeira barra com o"n" fractal superior por trás da primeira seta do chamado indicador (primeiro tampão).

E descubra o preço máximo entre a primeira barra e a barra do fractal encontrado.

A condição é a seguinte: se a baixa (+-10 pontos) da primeira barra for igual ao preço (que seja a primeira) do fractal atrás da seta indicadora e o preço máximo entre a barra fractal e a primeira barra menos o preço do fractal encontrado for maior que 50 pontos, então coloque a seta.

Na verdade, para encontrar o fractal, eu preciso do número da barra onde está a flecha. Quero olhar através dos fractais a partir desta barra e depois voltar para a história.

Talvez eu tenha começado do lugar errado e você possa sugerir outra maneira de resolvê-lo.

Este deve simplesmente colocar pontos através do histórico sobre a distância em barras que você definir nos ajustes.

Isto é, se você definir 10 barras, no caso de haver um sinal do indicador personalizado à esquerda do índice do ciclo para 10 barras, ele definirá um ponto na barra atual (índice i) do ciclo

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
No entanto, "deve" não significa que eu tenha que fazê-lo. Eu o desenhei de joelhos enquanto eu dormia. Eu não posso verificar, não tenho um personalizado. Você sabe...
 
Saudações. Realmente precisam de alguma ajuda. Alguém conhece algum roteiro ou método para destacar negócios no histórico do negócio e depois salvar estas seleções no histórico, por exemplo: https://yadi.sk/d/7aHIs_vh3RxLvW ou aqui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - obrigado antecipadamente
Arquivos anexados:
2.jpg  481 kb
3.jpg  708 kb
 
civic111:
Saudações. Realmente precisam de alguma ajuda. Alguém conhece algum roteiro ou método para destacar negócios no histórico do negócio e depois tem estas seleções salvas no histórico, como https://yadi.sk/d/7aHIs_vh3RxLvW ou aqui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - obrigado de antemão

É este o caminho


para colocar as fotos?

 
civic111:
Saudações. Realmente precisam de alguma ajuda. Talvez alguém conheça algum roteiro ou método, como posso selecionar alguns acordos no histórico do negócio e então estas seleções serão salvas no histórico, por exemplo: https://yadi.sk/d/7aHIs_vh3RxLvW ou aqui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - obrigado de antemão

No painel padrão - de jeito nenhum.

Mas CodeBase ou (talvez) Mercado deve ter ferramentas para lidar com o histórico de pedidos. Ou, como alternativa, eu poderia criar ou encomendar o "painel de histórico de pedidos alternativos com blackjack e devs" como um freelancer :-)

Ou simplesmente, exportar para o CSV e depois usar o Excel para analisar o histórico nele contido.

 

por favor, feche o trabalho

Preciso de espaço livre

 
O desenvolvedor Hooshang Nosratpanah confirmou a etapa "Aceitação do Trabalho".
 
اه مو مشكلة
يعني ممكن شراء صفقة شرا لم تحق تحق هدفها فلذلك مكن مكن تعزيزها بصفقة اخرى اخرى اخرى اذاا اعطى الاكسبيرت بذلك
 
انا اعتقد ان كل مسافه معينه افضل
لان ممكن نفتح نفتح شرا و السعر ينزل ويجيب اشاره بيع
ويفضل علي البيع البيع كتير وينزلجامد واتحين كل دا صفق صفق بس بس شرا ومنتظرين اشاره شرا تانيه عشان ندخل بلوت بلوت اكبر
Razão: