Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 553

 
splxgf:
Non è un bug, è una caratteristica. Puoi andare qui https://www.mql5.com/ru/articles/1388

YOOOOO grazie! Oh, cavolo. Un clic ha risolto il problema.
 
AlexeyVik:

In matematica, 0 è 0, e nel vostro caso 0 è un prezzo da cui tutto è partito.

Se il prezzo di apertura è 1,3926 come suggerito da splxgf, allora 0 sarà a 1,3926/123*100=1,1322 o 1,3926/1,23=1,1322.

L'1% di questo movimento di prezzo sarebbe (1,3926-1,1322)/100=0,0026

Inoltre, spero che lo capirai da solo.


Cari signori, questa è una sciocchezza. Il Fibo è costruito su 2 punti, leggi quello che ho scritto prima. Non si può calcolare nulla da un punto 1,3926. Guarda quando l'EUR era a 1,13 :)

Il prezzo di riferimento è il livello 0 di Fibo (minimo/massimo di 4H, giorno, settimana, mese, anno...) ed è un prezzo completamente specifico e non uno 0 matematico. Zero e 100% Fibo sono il minimo e il massimo del prezzo per il periodo. Poi anche il 23% come punto di entrata dal livello 0 è comprensibile e il TP al 38% ecc.

 
splxgf:


In questo caso, è una storia diversa e può essere risolta a livello di matematica elementare con le percentuali.

PercentStep=(OrderTakeProfit-OrderOpenPrice)/(138-23) - Questo sarebbe 1% in pappagalli. Francamente, a volte dovrete scambiare gli operandi a seconda del tipo di ordine o modulo.

Allora

StoplossLevel = OrderOpenPrice + PercentStep*(51-23) //LevelWLoss nei termini di Kim, ma questo dovrebbe essere calcolato per ogni ordine

MoveStoplossLevel = OrderOpenPrice + PercentStep*(76-23) //LevelProfit - vedi sopra.


Grazie mille per la sua risposta e la formula. Farò un tentativo.
 

Non posso ottenere il valore del quarto buffer. Cosa sto facendo di sbagliato?

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua
//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),                      
    limit;
    double MA_1_t,MA_2_t;
    if(counted_bars>0)
    counted_bars--;
    limit=Bars-counted_bars;
    
   for(int i=0;i<limit;i++)
   {
   ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);
   }
   
   return(0);
  }
 
Forexman77:

Non posso ottenere il valore del quarto buffer. Cosa sto facendo di sbagliato?


Nel mio esempio avevo diversi loop. Vi siete sbarazzati di quelli non necessari?
 

Salve.

Potete dirmi perché nella finestra delle impostazioni EA non posso selezionare la casella "Consenti chiamate DLL"?

È abilitato nelle impostazioni del terminale. Va bene su altri EA.

Sto cercando di scrivere questo EA da solo. Utilizza l'indicatore tramite iCustom e quest'ultimo ha bisogno di accedere alla DLL.

Grazie per l'aiuto.

 
Vinin:

Nel mio esempio avevo diversi loop. Vi siete sbarazzati di quelli non necessari?
Ho provato diversi modi, ma se faccio questo
#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }

   for(i=limit1;i>=0;i--) ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   for(i=limit3;i>=0;i--) ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   for(i=limit4;i>=0;i--) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);

   return(0);
  }

Il terzo e il quarto buffer non contano. Non so dove sia l'errore. La mia conoscenza in questo campo non è sufficiente.

Sarebbe bene non infilare tutto in diversi buffer, ma calcolare la parte principale in questo modo:

 ExtMapBuffer1[i]=(Close[i]-Close[i+Period_MA_1])/MathAbs(Close[i]-Close[i+Period_MA_1]);
ma in questo caso non c'è niente di niente.
 
Forexman77:
Ho provato diversi modi, ma se faccio così

Il terzo e il quarto buffer non contano. Non so dove sia l'errore. La mia conoscenza in questo campo non è sufficiente.

Sarebbe bene non modellare tutto in diversi buffer, e calcolare la parte principale in questo modo:

ma in questo caso non c'è proprio niente.


Secondo la vostra formula, il risultato sarà 1 o -1. È vero o vi aspettate un risultato diverso?
 
Vinin:

Secondo la vostra formula, il risultato sarà 1 o -1. È vero o vi aspettate un risultato diverso?

Sì, il terzo buffer sarà 1 o -1. E il quarto buffer calcola la media mobile di questi parametri.

Nel terzo buffer, il valore che divide è moltiplicato per 100, ma questo non è un problema.

 
Forexman77:

Sì, il terzo buffer sarà 1 o -1. E il quarto buffer calcola la media mobile di questi parametri.

Nel terzo buffer, il valore che divide è moltiplicato per 100, ma questo non è un problema.


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property  indicator_color1 Lime
#property  indicator_color2 Yellow

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2=7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   if(limit1>0)
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
     }

   for(i=limit1;i>=0;i--) 
     {
      ExtMapBuffer1[i]=1;
      if(Close[i]<Close[i+Period_MA_1])
         ExtMapBuffer1[i]=-1;
     }
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1,0,p2,0,MODE_SMA,i);

   return(0);
  }
//+------------------------------------------------------------------+
Motivazione: