[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 611

 

Ajude-me a escrever um indicador simples que desenha linhas de altos e baixos na janela principal para o período necessário (que é definido com uma variável externa).

 

Por favor, diga-me onde encontrar um planejador de 15 dias de semana.

Por favor, me dê um link ou um arquivo ou nome.

E como sempre, obrigado por seu tempo.

 
41ckm39fi:

Boa noite.

Poderia me dizer qual é o erro, o indicador não dá uma mensagem sobre a travessia de dois MA.


Você pensou bem antes de escrever este indicador?

Por favor, explique a lógica, pelo menos para você mesmo.

#property indicator_chart_window

extern int        Period_MA_fast         = 5,
                  Period_MA_med          = 8,
                  Period_MA_slow         = 16,
                  period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  Speed_MA_fast[],
                  Speed_MA_med[],
                  Speed_MA_slow[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,DeMarker_buffer0);
   SetIndexBuffer(1,Speed_MA_fast);
   SetIndexBuffer(2,Speed_MA_med);
   SetIndexBuffer(3,Speed_MA_slow);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   //----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
   
   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
   //----
   for(i=limit; i>=0; i--) {
      DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
      Speed_MA_med[i]=iMA(NULL,0,Period_MA_med,0,MODE_LWMA,PRICE_CLOSE,i);
      Speed_MA_slow[i]=iMA(NULL,0,Period_MA_slow,0,MODE_LWMA,PRICE_CLOSE,i);
   }
   
   for(i=limit; i>=0; i--)
      Speed_MA_fast[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
   
   static int PrevTime = 0;

   if(PrevTime >= Time[0] ) return(0);
   PrevTime = Time[0];

   if(Speed_MA_fast[SIGNAL_BAR] - 0.3 > 0)
      if (0.3 - Speed_MA_fast[SIGNAL_BAR+1] >= 0)
         Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );

   if(0.7 - Speed_MA_fast[SIGNAL_BAR] > 0)
      if (Speed_MA_fast[SIGNAL_BAR+1] - 0.7 >= 0)
         Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");

   if(Speed_MA_med[SIGNAL_BAR] - Speed_MA_slow[SIGNAL_BAR] > 0)
      if (Speed_MA_med[SIGNAL_BAR+1] - Speed_MA_slow[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );   

   if(Speed_MA_slow[SIGNAL_BAR] - Speed_MA_med[SIGNAL_BAR] > 0)
      if (Speed_MA_slow[SIGNAL_BAR+1] - Speed_MA_med[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SELL!!!" );     
  
  
   return(0);
}
//+------------------------------------------------------------------+
Pode funcionar, ainda não o testou
 

Obrigado a todos vocês! Há mais uma pergunta.........

tenho um EA com condições de entrada e saída baseadas em certos sinais(não importa o que)

ou seja, três telas - um indicador, por exemplo, Force ou Stohostick

condições de saída também só por ela -

tudo está bem, mas um Stop Loss adicional é necessário para proteger as posições

ou seja, =10p.

................. posso usar este EA sem perdas adicionais, pelo menos

pode ser possível utilizar esse Expert Advisor sem perdas adicionais pelo menos em lotes pequenos=0,01 porque o sinal de saída será de qualquer forma

P.S. Eu estava pensando em e-mail ou ICQ-abriu e o MT enviou uma mensagem para você.

e você está pensando onde seria sua melhor parada.

....... não diga não a ninguém que lhe pergunte.

 
KlugerX35:

Obrigado a todos vocês! Há mais uma pergunta.........

tenho um EA com condições de entrada e saída baseadas em certos sinais(não importa o que)

ou seja, três telas - um indicador, por exemplo, Force ou Stohostick

condições de saída também só por ela -

tudo está bem, mas um Stop Loss adicional é necessário para proteger as posições

ou seja, =10p.

................. posso usar este EA sem perdas adicionais, pelo menos

pode ser possível utilizar esse Expert Advisor sem perdas adicionais pelo menos em lotes pequenos=0,01 porque o sinal de saída será de qualquer forma

P.S. Eu estava pensando em e-mail ou ICQ-abriu e o MT enviou uma mensagem para você

e você está pensando onde seria sua melhor parada.

....... não diga não a ninguém que lhe pergunte.


Se o Expert Advisor tem uma saída "técnica", ele não precisa de uma parada, se você quiser colocar uma parada só por precaução, para o seguro, então coloque uma maior.

10p é uma perda real.

Por qual período é tão pequeno, por um minuto? É claro que é um fio de palha, e cortará até mesmo negócios potencialmente lucrativos.

É possível utilizar um consultor especializado sem perda adicional de tempo, pelo menos

usar apenas um lote pequeno=0,01

Se funcionar de forma estável, lidar com erros normalmente, e você estiver satisfeito com os resultados comerciais, então você pode.
 

Esta é uma pergunta - alguém pode explicar, por favor.

Por que diz que o fechamento por contra-ordem economiza um spread? Depois de todo o primeiro negócio, por exemplo, a compra é comprada na Ask e vendida ao preço Bid naquele momento (não há lucro no tamanho total da posição), e o segundo negócio - a venda é aberta na Bid e, correspondentemente, a duração da posição é calculada com base no preço de fechamento da Ask.

O manual dá alguns exemplos pouco claros https://book.mql4.com/ru/trading/orderclose onde a diferença não está no spread, mas no tamanho do segundo negócio - num fechamento 2 por 15 de um negócio, e o oposto - apenas 15, ou seja, todas as perdas do negócio desaparecem, mas não o spread.

Então, qual é o senão aqui?

 
FatyM:

Por favor, diga-me onde encontrar um planejador de 15 dias de semana.

Por favor, me dê um link ou um arquivo ou nome.

E como sempre, obrigado por seu tempo.

Arquivos anexados:
 
Vinin:


Você pensou bem antes de escrever este indicador?

Escreva a lógica, pelo menos para você mesmo.

Talvez funcione, ainda não verifiquei

Eu reescrevi a lógica de comparação de muwings ainda sem mensagens, não consigo descobrir qual é o erro.
#property indicator_chart_window
#property  indicator_level1 0.3
#property  indicator_level2 0.7
//---- 
extern int        Period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  MA0[],
                  MA1[],
                  MA11[],
                  MA2[],                        
                  MA22[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(0,DeMarker_buffer0);
SetIndexBuffer(1,MA0);
SetIndexBuffer(2,MA1);
SetIndexBuffer(3,MA2);
SetIndexBuffer(4,MA11);
SetIndexBuffer(5,MA22);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
SetIndexStyle(4,DRAW_NONE);
SetIndexStyle(5,DRAW_NONE);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
//----
if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA0[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
//----   
  static int PrevTime = 0;
//---- 
  if(PrevTime >= Time[0]) return(0);
//---- 
  PrevTime = Time[0];
//----
                if(MA0[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA0[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
if(PrevTime <= Time[0]) 

return(0);
//---- 
  PrevTime = Time[0];
//----          
                if(0.7 - MA0[SIGNAL_BAR] > 0 && MA0[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                                
                                
MA1[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA2[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);

MA11[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA22[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);                                                       
                
//----   
if((MA1[i]>MA2[i]) && (MA11[i+1]<MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL1!!!" );    

if((MA1[i]<MA2[i]) && (MA11[i+1]>MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL2!!!" );   

   return(0);
  }
 

Como faço para que o MathRand funcione corretamente, eu recebo o mesmo conjunto de números aleatórios toda vez que o executo. O que significa que eles não são aleatórios.

 

Como faço para que o MathRand funcione corretamente, eu recebo o mesmo conjunto de números aleatórios toda vez que o executo. O que significa que eles não são aleatórios.

Razão: