Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 446

 
Artyom Trishkin:

Continuo a non capire: cosa vuoi trovare e visualizzare? Semplicemente in parole - senza codice.

Quindi stai scrivendo:

La domanda è: perché lo cercate alla decima barra?


Alla decima barra, l'ho presa come esempio.

Ho bisogno di impostare i punti dopo 10 o "N" barre dopo che la freccia dell'indicatore chiamato appare.

come se avessi bisogno di posizionare i punti solo sulla decima barra, lo farei in questo modo

 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 allegare l'intero indicatore, non OnCalculate()

Questa è la prima opzione

#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, voglio confrontare il minimo della prima barra con il frattale superiore"n" dietro la prima freccia dell'indicatore chiamato (primo buffer).

E trova il prezzo massimo tra la prima barra e la barra del frattale trovato.

La condizione è la seguente: se il minimo (+-10 punti) della prima barra è uguale al prezzo (che sia il primo) del frattale dietro la freccia dell'indicatore e il prezzo massimo tra la barra del frattale e la prima barra meno il prezzo del frattale trovato è maggiore di 50 punti, allora metti la freccia.

In realtà, per trovare il frattale, ho bisogno del numero della barra in cui si trova la freccia. Voglio guardare attraverso i frattali a partire da questa barra e poi alla storia.

Forse sono partito dal punto sbagliato e tu puoi darmi un'altra soluzione.

 
mila.com:

Globalmente, voglio confrontare il minimo della prima barra con il frattale superiore"n" dietro la prima freccia dell'indicatore chiamato (primo buffer).

E trova il prezzo massimo tra la prima barra e la barra del frattale trovato.

La condizione è la seguente: se il minimo (+-10 punti) della prima barra è uguale al prezzo (che sia il primo) del frattale dietro la freccia dell'indicatore e il prezzo massimo tra la barra del frattale e la prima barra meno il prezzo del frattale trovato è maggiore di 50 punti, allora metti la freccia.

In realtà, per trovare il frattale, ho bisogno del numero della barra in cui si trova la freccia. Voglio guardare attraverso i frattali a partire da questa barra e poi tornare alla storia.

Forse sono partito dal punto sbagliato e tu puoi suggerire un altro modo di risolverlo.

Questo dovrebbe semplicemente mettere punti attraverso la storia sulla distanza in barre che avete impostato nelle impostazioni.

Cioè, se impostate 10 barre, allora nel caso in cui ci sia un segnale dall'indicatore personalizzato a sinistra dell'indice del ciclo per 10 barre, imposterà un punto sulla barra corrente (indice i) del 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);
  }
//+------------------------------------------------------------------+
Tuttavia, "devo" non significa che devo farlo. L'ho stupidamente disegnato sulle mie ginocchia mentre dormivo. Non posso controllarlo, non ne ho uno personalizzato. Sai...
 
Saluti. Ho davvero bisogno di aiuto. Qualcuno conosce qualche script o metodo per evidenziare le compravendite nella storia delle transazioni e poi salvare queste selezioni nella storia, per esempio: https://yadi.sk/d/7aHIs_vh3RxLvW o qui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - grazie in anticipo
File:
2.jpg  481 kb
3.jpg  708 kb
 
civic111:
Saluti. Ho davvero bisogno di aiuto. Qualcuno conosce qualche script o metodo per evidenziare le compravendite nella storia delle transazioni e poi avere queste selezioni salvate nella storia, come https://yadi.sk/d/7aHIs_vh3RxLvW o qui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - grazie in anticipo

È questo il modo


per metterci le foto?

 
civic111:
Saluti. Ho davvero bisogno di aiuto. Forse qualcuno conosce qualche script o metodo, come posso selezionare alcune offerte nella storia dell'affare e poi queste selezioni saranno salvate nella storia, per esempio: https://yadi.sk/d/7aHIs_vh3RxLvW o qui:
https://yadi.sk/i/Ft8yNn1e3RxMEH - grazie in anticipo

Nel pannello standard - in nessun modo.

Ma CodeBase o (forse) Market dovrebbero avere strumenti per lavorare con la storia degli ordini. O, in alternativa, puoi farlo tu stesso o richiedere un freelance "pannello alternativo di storia degli ordini con blackjack e devs" :-)

O molto semplicemente, esportate in CSV e poi usate Excel per analizzare la storia in esso contenuta.

 

si prega di chiudere il lavoro

Ho bisogno di uno slot gratuito

 
Lo sviluppatore Hooshang Nosratpanah ha confermato il passo "Work Acceptance"
 
اه مو مشكلة
يعني ممكن صفقة شرا لم تحق هدفها فلذلك مكن تعزيزها بصفقة اخرى شراء اذا اعطى الاكسبيرت اشارة بذلك
 
انا اعتقد ان كل مسافه معينه افضل
لان ممكن نفتح شرا و السعر ينزل ويجيب اشاره بيع
ويفضل علي البيع كتير وينزلجامد واتحين كل دا صفق واحده بس شرا ومنتظرين اشاره شرا تانيه عشان ندخل بلوت اكبر
Motivazione: