A TROCA DE IDÉIAS - página 9

 
FION:
Especialistas podem trabalhar simultaneamente - cada um com seu próprio assistente, e o reconhecimento das condições de mercado e o restabelecimento devem estar em cada especialista. Se esta condição não for atendida, quando a situação do mercado muda, as perdas são inevitáveis, pois as metas e paradas devem ser diferentes em condições planas e de tendência. Além disso, devemos considerar as condições intermediárias - o baixo flat, ou "escorregamento" com baixa atividade. Basicamente, o conjunto de Expert Advisors lucrativos deve mostrar os melhores resultados devido ao bloqueio da perda de posições de Expert Advisor.

Quase todos têm sua própria realização. Mas muitos EAs não têm correção de erros. Eu certamente não. Eu apenas tento evitá-los. Se fizermos algo padrão, devemos permitir isso. Eu acrescentaria um símbolo() ao mágico, embora possa ser desnecessário. Teoricamente, um pedido com um bilhete não pode ser repetido, embora possa ser.
 

Sim, é claro. Foi exatamente isso que eu fiz no código. Nos parâmetros externos também definimos Magic _n, e cada versão com seu próprio mágico irá trabalhar de acordo com seu próprio algoritmo.

 

Na detecção de tendências. O ProtoType-IV Expert Advisor fornece um exemplo para um Expert Advisor com várias moedas que identifica uma tendência por quatro últimos extremos. Eu penetrei escrupulosamente nele e "sem convicção" atribuí este pedaço de código e agora ele pode ser inserido em qualquer Expert Advisor. Se necessário. Se você definir em parâmetros externos

extern int     PeriodWPR=8;
extern double  CriteriaWPR=25;
extern int     ATRPeriod=40;// период ATR для индикатора 
extern double  kATR=0.5;
//-------------------------------------
int  LastUpArray[13,7];
int  PreLastUpArray[13,7];
int  LastDownArray[13,7];
int  PreLastDownArray[13,7];

Aqui está o próprio "qualificador":

/-------------------------------------------------------------------+
//| определение тренда по четырем последним экстремумам              |
//+------------------------------------------------------------------+
int TrendByWPR()
  {
//----
   int res=0;
   int curPos,LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos,LastPeak,newPos;
   bool FindUp=true,FindDown=true,SearchCompleted=false;
   double CurWPR=iWPR(NULL,0,PeriodWPR,0);
//----
   //=======  определим - где мы находимся в данный момент
   if (CurWPR<=CriteriaWPR-100)
      {
      FindDown=false;
      LastPeak=0;
      }   
   if (CurWPR>=-CriteriaWPR)
      {
      FindUp=false;
      LastPeak=0;
      }   
   // ================   начианем поиск пичков-донышков
   while(!SearchCompleted && curPos<Bars)
      {
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && LastPeak<0)
         {
         FindUp=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && LastPeak<0)
         {
         FindDown=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && FindUp)
         {//искали верхушку и нашли
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)>CriteriaWPR-100 && curPos<Bars)
            {// теперь нужно найти донышко, чтобы между ними найти точный пичок
            curPos++;
            }
         if (LastUpPos==0) 
            {
            LastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);   
            LastPeak=LastUpPos;
            }
         else 
            {
            PreLastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);
            LastPeak=PreLastUpPos;
            }
         curPos=newPos;
         FindUp=false;
         FindDown=true;
         curPos++;
         continue;
         }//==============
 
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && FindDown)
         {
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)<-CriteriaWPR && curPos<Bars)
            {
            curPos++;
            }
         if (LastDownPos==0) 
            {
            LastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=LastDownPos;
            }   
         else 
            {
            PreLastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=PreLastDownPos;
            }
         curPos=newPos;
         FindDown=false;
         FindUp=true;
         curPos++;
         continue;
         }
      if (PreLastDownPos!=0 && PreLastUpPos!=0) SearchCompleted=true;
      curPos++;
      }
  /* if (Symbol()==StringSymbol && Period()==PeiodMinute)
      {
      Comment("LastUpPos=",LastUpPos,"  PreLastUpPos",PreLastUpPos,"  
 LastDownPos=",LastDownPos,"  PreLastDownPos=",PreLastDownPos,
" Время ",TimeToStr(CurTime()));
      SetUpArrows(LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos);*/
   LastUpArray[NULL,0] =LastUpPos;   
   PreLastUpArray[NULL,0]=PreLastUpPos;   
   LastDownArray[NULL,0]=LastDownPos;   
   PreLastDownArray[NULL,0]=PreLastDownPos;   
  if (High[LastUpPos]-High[PreLastUpPos]>=kATR*iATR(NULL,0,ATRPeriod,LastUpPos)
&&Low[LastDownPos]>Low[PreLastDownPos]) res=1;     
  if (Low[PreLastDownPos]-Low[LastDownPos]>=kATR*iATR(NULL,0,ATRPeriod,LastDownPos)
&&High[PreLastUpPos]>High[LastUpPos]) res=-1;    
   
   return(res);
  }

O gráfico no canto mostra a função=0, ou =1, ou=-1

 
Eu acho mais conveniente definir a tendência com a ajuda da regressão linear, o roteiro da regressão linear do conjunto padrão MT-4 é muito bom, eu gostaria de fazer um indicador baseado nele, pode ser que alguém saiba onde obter o código fonte... Todas as implementações conhecidas funcionam mal na dinâmica das mudanças de preços.Preciso de um canal de comprimento ajustado de 1 a N bar com recálculo quando uma nova barra aparece e a possibilidade de emitir sua largura em pips e sua inclinação em pips para o comprimento.E o mesmo canal de desvio padrão com um determinado desvio seria bom de se fazer. Poderíamos começar a cavar do zero, mas se alguém tem uma fonte da MT seria muito mais fácil.
 

Mas não me limitei a postar o código para a detecção de tendências. Surgiu outra idéia...(Explicarei mais tarde)

Talvez este indicador funcione para os iniciantes:

No gráfico iPeriod=20, MASoot=20

Eu não entrei em seu trabalho. Mas no modo visual é fácil ver como funciona...

Arquivos anexados:
 
Obrigado Leonid, mas não funciona corretamente para reversões, eu tentei há muito tempo. Aqui está um bom indicador, mas funciona por How-low, a idéia é a mesma, mas baseada em regressão linear.
Arquivos anexados:
 
FION:
Na minha opinião, é mais conveniente definir a tendência usando a regressão linear, o roteiro da regressão linear do conjunto padrão MT-4 é muito bom, eu gostaria de fazer um indicador baseado nele, pode ser que alguém saiba onde obter o código fonte? Todas as implementações conhecidas não funcionam bem com a tendência de preços. Preciso de um canal de comprimento ajustado de 1 a N bar com recálculo quando uma nova barra aparece e a possibilidade de emitir sua largura em pips e sua inclinação em pips para o comprimento. Seria bom ter o mesmo canal de desvio padrão com o desvio dado. Poderíamos começar do zero, mas se alguém tem uma fonte da MT, seria muito mais fácil.


Eu já a coloquei em algum lugar antes. Eu posso postar a nova versão. Um erro foi corrigido.

E aqui está o indicador.

O número de barras é exibido na tela. 3 sigmas são exibidos. Se o preço estiver dentro de um SCO, o recálculo não é realizado, pois tudo está dentro dos limites permitidos. Quando o preço for ultrapassado, será recalculado.

Arquivos anexados:
 

Vinin , seu canal é muito decente e se ajusta corretamente. Obrigado. Vou compartilhar uma idéia sobre o filtro para o apartamento. Todos nós nos lembramos do Rev. Reshetov e seus perceptrons. Em princípio, um perceptron é um filtro linear. Eu quero tentar filtrar o fllet com um perceptron. Quero inserir largura e inclinação de 2 canais de regressão linear de diferentes comprimentos, largura Bolinger e taxa de mudança de preço. Eu penso no que usar como critério de otimização. Talvez um ressalto dos limites do Bollinger para o interior - com o objetivo de 75% da largura.

 
FION:

Vinin , seu canal é muito decente e se ajusta corretamente. Obrigado, vou compartilhar uma idéia sobre o filtro para o apartamento. Todos nós nos lembramos do Rev. Reshetov e seus perceptrons. Em princípio, um perceptron é um filtro linear. Quero tentar filtrar voando por perceptron. Quero introduzir largura e inclinação de 2 canais de regressão linear de diferentes comprimentos, largura Bolinger e velocidade de mudança de preço. Eu penso no que usar como critério de otimização. Talvez um ressalto dos limites do Bollinger para o interior - com o objetivo de 75% da largura.


O perceptron da Reshetov não serve. Devemos fazer uma camada de Kohonen de pelo menos 4-5 não-Roynes. Mas haverá apenas um problema - todos os valores devem ser da mesma ordem.
 
Eu quero criar um novo tópico, a análise neural de castiçais. Vou afixar todo o meu trabalho, não posso fazê-lo sozinho. Serei capaz de fazer tudo sozinho.