Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 553

 
splxgf:
Não é um bug, é uma característica. Você pode ir aqui https://www.mql5.com/ru/articles/1388

YOOOOOO obrigado! Caramba! Um clique resolveu o problema.
 
AlexeyVik:

Em matemática, 0 é 0, e no seu caso 0 é um preço a partir do qual tudo começou.

Se o preço de abertura for 1,3926 como sugere o splxgf, então 0 será a 1,3926/123*100=1,1322 ou 1,3926/1,23=1,1322.

1% deste movimento de preços seria (1,3926-1,1322)/100=0,0026

Além disso, espero que você descubra por si mesmo.


Caros senhores, isto é um disparate. Fibo é construído em 2 pontos, leia o que eu escrevi anteriormente. Não se pode calcular nada a partir de um ponto 1.3926. Veja quando o EUR estava em 1,13 :)

O preço de referência é o nível 0 de Fibo (mínimo/máximo de 4H, dia, semana, mês, ano...) e é um preço completamente específico e não um 0 matemático. Zero e 100% Fibo são o mínimo e o máximo de preço para o período. Então também 23% como um ponto de entrada a partir do nível 0 é compreensível e o TP a 38% etc.

 
splxgf:


Neste caso, é uma história diferente e pode ser resolvida no nível da matemática elementar com porcentagens.

PercentStep=(OrderTakeProfit-OrderOpenPrice)/(138-23) - Isto seria 1% em papagaios. Francamente falando, às vezes você terá que trocar os operandos dependendo do tipo de pedido ou modulo.

Depois

StoplossLevel = OrderOpenPrice + PercentStep*(51-23) //LevelWLoss nos termos de Kim, mas isto deve ser calculado para cada pedido

MoveStoplossLevel = OrderOpenPrice + PercentStep*(76-23) //LevelProfit - ver acima.


Muito obrigado por sua resposta e pela fórmula. Vou tentar.
 

Não consigo obter o valor do quarto tampão. O que eu estou fazendo de errado?

#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:

Não consigo obter o valor do quarto tampão. O que eu estou fazendo de errado?


Eu tinha vários loops em meu exemplo. Se livrou dos desnecessários?
 

Olá.

Você pode me dizer por que na janela de configurações da EA eu não posso verificar a caixa "Permitir ligações DLL"?

Nas configurações dos terminais também é habilitado. Está tudo bem em outros EAs.

Eu mesmo estou tentando escrever esta EA. Ele usa o indicador iCustom e o iCustom precisa acessar a DLL.

Obrigado pela ajuda.

 
Vinin:

Eu tinha vários loops em meu exemplo. Você se livrou dos desnecessários?
Tentei de maneiras diferentes, mas se eu fizer isso:
#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);
  }

O terceiro e quarto amortecedores não contam. Eu não sei onde está o erro. Meu conhecimento nesta área não é suficiente.

Seria bom não colocar tudo em diferentes tampões, mas calcular a parte principal assim:

 ExtMapBuffer1[i]=(Close[i]-Close[i+Period_MA_1])/MathAbs(Close[i]-Close[i+Period_MA_1]);
mas neste caso não há absolutamente nada.
 
Forexman77:
Eu tentei de maneiras diferentes, mas se eu fizer isso:

O terceiro e quarto amortecedores não contam. Eu não sei onde está o erro. Meu conhecimento nesta área não é suficiente.

Seria bom não moldar tudo em diferentes tampões, e calcular a parte principal assim:

mas, neste caso, não há absolutamente nada.


De acordo com sua fórmula, o resultado será 1 ou -1. Isso é verdade ou você está esperando um resultado diferente?
 
Vinin:

De acordo com sua fórmula, o resultado será 1 ou -1. Isso é verdade ou você espera um resultado diferente?

Sim, o terceiro tampão será 1 ou -1. E o quarto tampão calcula a média móvel desses parâmetros.

No terceiro buffer, o valor que divide é multiplicado por 100, mas isto não é um problema.

 
Forexman77:

Sim, o terceiro tampão será 1 ou -1. E o quarto tampão calcula a média móvel desses parâmetros.

No terceiro buffer, o valor que divide é multiplicado por 100, mas isto não é um 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);
  }
//+------------------------------------------------------------------+