A TROCA DE IDÉIAS - página 35

 
OnGoing:
Seja o que for, não há o suficiente para tirar quaisquer conclusões.
você pode aumentar os negócios muitas vezes - a escada de equidade será mln e freqüente, mas o FS diminuirá.
 
alex12:
você pode aumentar os negócios muitas vezes - a escada de equidade será pequena e freqüente, mas a FS irá diminuir.
Que assim seja, o resultado será ainda mais confiável.
 

Ontem encontrei um resultado interessante por acaso.

A idéia é rastrear rapidamente como uma moeda se comporta em relação à outra.

Fazemos o download deste Expert Advisor, ele também está na base de código deste fórum: ReverseSystemBEST

Ele testa um instrumento usando dados históricos de um arquivo - testamos USD/Franc do ano 2000 e no final do

doteste abra a tabela e veja a figura a seguir:

Além disso, nós o guardamos como modelo. Abra o gráfico diário do eurobucks e abra o modelo salvo

Nesta tabela. Em seguida, clique 2 vezes com o mouse sobre os ícones e o botão direito selecione excluir todos os ícones.

Como resultado, você verá uma foto como a que se segue.

Ou seja, você pode ver que o dólar/franco e o eurobucks são absolutamente instrumentos monetários espelho.





 
alex12:

Ontem encontrei um resultado interessante por acaso.

A idéia é rastrear rapidamente como uma moeda se comporta em relação à outra.

Fazemos o download deste Expert Advisor, ele também está na base de código deste fórum: ReverseSystemBEST

Ele testa um instrumento usando dados históricos de um arquivo - testamos USD/Franc do ano 2000 e no final do

doteste abra a tabela e veja a figura a seguir:

Além disso, nós o guardamos como modelo. Abra o gráfico diário do eurobucks e abra o modelo salvo

Nesta tabela. Em seguida, clique 2 vezes com o mouse sobre os ícones e o botão direito selecione excluir todos os ícones.

Como resultado, você verá uma foto como a que se segue.

Ou seja, você pode ver que o dólar/franco e o eurobucks são absolutamente instrumentos monetários espelho.






Oh, quantas descobertas maravilhosas para nós ......
 
A idéia é criar um indicador.

Originalmente eu tive essa idéia com carrapatos, mas afinal não há história de carrapatos no testador
então eu a transferi para bares.
A idéia é uma combinação de barras. As configurações podem ser:

Acima - Comprar:

Alta = 0, Valor
Rolamentos = 0, Valor
Cor
Espessura da linha

Abaixo - Vender:

Rolamentos = 0, Valor
Touros = 0, Valor
Cor
Espessura da linha

Por exemplo uma barra 1 para cima e 2 para baixo, 1 para cima e 3 para baixo, depois 1/4, 1/5, !/6, 1/7 etc. para Vender.
Para Bai - 1 barra para baixo e 2 barras para cima, 1 para baixo e 3 para cima, depois 1/4, 1/5, etc.

Por exemplo, vamos tomar uma combinação de 3 barras para cima e 7 barras para baixo ( 3/7 para encurtar ) para a Venda. Pegamos o valor
do preço mais alto da 3ª barra e o preço mais baixo da 7ª barra = calcular o preço médio e traçar uma linha
sobre o preço médio desta combinação de barras. Também gostaria que esta combinação fosse delineada com um círculo
usando o mesmo indicador.
A seguir você pode escrever um EA usando este indicador e verificar o resultado.

Se alguém escrever um indicador e/ou consultor, afixe-o aqui, se não se importar.

--------------------------------------------------------------------------------------------------------------+

A propósito - isso pode ser feito com pontos - basta negociar diretamente online.
Não pelo tempo, como na EA do WOC, mas exatamente por combinações de pontos, e se descobrirá
que o Expert Advisor não negociará pela história, mas pela situação atual. Mas é assim,
é provavelmente muito superficial e implausível - embora eu mesmo não tenha certeza
.
 

leonid553:

Há um indicador de Envelopes, e as táticas clássicas de trabalhar com ele são conhecidas. Mas devido a sua estrutura é muito "sensível", ou com um grande período de tempo fica atrás dos sinais. Entretanto, se suavizarmos este indicador, a situação irá mudar imediatamente! Selecionamos o desvio das bordas para que as bordas cubram apenas as pontas das velas e entramos por estas travessias seguindo estritamente a tendência. - defini-la (a tendência) programmaticamente pelo ângulo de inclinação (por exemplo) destas bordas.

Uma versão funciona na compra. A outra versão funciona para venda. Ao mesmo tempo, surpreendentemente sentimos a falta de perder negócios na inversão de tendências! - Sem ironia! E além disso, durante um apartamento - sem acordos! (porque a tendência é definida pelo ângulo de inclinação!)

Aqui está uma tabela de indicadores suavizados - os pontos de entrada são mostrados com setas.

Mais um truque. Você pode usá-lo como um filtro ou como uma versão separada. Estocástico. Não deve ser usado de acordo com as regras clássicas, mas um pouco fora do padrão! Leve um longo período e entre não de fora para dentro das zonas sobre-compradas/sobre-vendidas, mas vice versa! - Mostrei as entradas com setas na janela do estocástico.

Já fiz consultores especializados primitivos usando os dois métodos descritos. Os resultados são satisfatórios até agora...

A pedido do moderador Granit77 , o posto original foi apagado e a discussão do Expert Advisor sobre estocásticos filtrados foi movida para cá https://www.mql5.com/ru/forum/112887/page15#518639

 
alex12:
A idéia é criar um indicador.

Esta idéia foi originalmente inventada por mim com carrapatos, mas acontece que não há história de carrapatos no testador.
Por isso, mudei-o para barras.
A essência é uma combinação de barras. As configurações podem ser as seguintes:

Para cima - Comprar:

Alta = 0, Valor.
Rolamentos = 0, Significado
Cor
Espessura da linha

Abaixo - Vender:

Rolamentos = 0, Valor
Alta = 0, Valor
Cor
Espessura da linha

Por exemplo, 1 barra para cima e 2 barras para baixo, 1 barra para cima e 3 barras para baixo, depois 1/4, 1/5, !/6, 1/7 etc. para Vender.
Para Bai - 1 barra para baixo e 2 barras para cima, 1 para baixo e 3 para cima, depois 1/4, 1/5, etc.

Por exemplo, vamos tomar uma combinação de 3 barras para cima e 7 barras para baixo ( 3/7 para encurtar ) para a Venda. Nós tomamos o valor
o preço mais alto da 3ª barra e o preço mais baixo da 7ª barra = calcular o preço médio e traçar uma linha
Eu também gostaria que esta combinação de barras fosse desenhada como um círculo
usando o mesmo indicador.
Então você pode escrever um EA usando este indicador e verificar o resultado.

Se alguém escrever um indicador e/ou consultor, afixe-o aqui, se não se importar.

--------------------------------------------------------------------------------------------------------------+

A propósito - isso pode ser feito com pontos - somente o comércio on-line é necessário.
Não pelo tempo, como no WOC-advisor, mas precisamente por combinações de pontos.
que o Consultor Especialista não negociará com base na história, mas na situação atual. Mas é assim,
embora eu não tenha certeza.
Embora eu mesmo não saiba exatamente.

Eu fiz um indicador personalizado, como descrito acima. Bastante interessante - porque = Preciso ( Inconfundivelmente identifica certos Padrões Fractais ).


Aqui está o próprio código:

//+------------------------------------------------------------------+
//|                             Copyright © 2010, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//|                                           Skype: Artmedia70      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 LightBlue
//---- input parameters
extern int        BarsBefore=2;        // Баров до...
extern int        BarsAfter=2;         // Баров после
extern int        Width=2;             // Размер значка
extern int        BarsToProcess=100;   // Количество баров для поиска
//---- buffers
double FractUpBuffer1[];
double FractDnBuffer2[];
string sy, Prefix, NameIND;
int    tf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(0,FractUpBuffer1);
   SetIndexArrow(0,119);
   SetIndexLabel(0,"Fractal Up");
   SetIndexEmptyValue(0,0.0);
   
   SetIndexStyle(1,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(1,FractDnBuffer2);
   SetIndexArrow(1,119);
   SetIndexLabel(1,"Fractal Dn");
   SetIndexEmptyValue(1,0.0);
//----
   NameIND="Pattern_v1_01";
   IndicatorShortName(NameIND+"_"+GetNameTF(Period()));
   Prefix=NameIND+"_"+GetNameTF(Period());    // Префикс для имён объектов
   sy=Symbol();
   tf=Period();
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
// -------- Блок удаления всех объектов, построенных на графике --------
   string Name_Del[1]; 
   int Quant_Del=0;                    
   int Quant_Objects=ObjectsTotal();   
   int LenPref=StringLen(Prefix);
   ArrayResize(Name_Del,Quant_Objects);
   for(int k=0; k<Quant_Objects; k++) {
      string Obj_Name=ObjectName(k);   
      string Head=StringSubstr(Obj_Name,0,LenPref);
      if (Head==Prefix) {                              
         Quant_Del+=1;        
         Name_Del[Quant_Del-1]=Obj_Name;
         }
     }
   for(int i=0; i<Quant_Del; i++)    
      ObjectDelete(Name_Del[i]); 
// ----- Конец блока удаления всех объектов, построенных на графике -----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int   counted_bars=IndicatorCounted();
   int   i, k, j, limit;
//----
   if(counted_bars>0)      counted_bars--;
   limit=Bars-counted_bars;
   if(limit>BarsToProcess) limit=BarsToProcess;
   
//   if (limit>0) 
      FindUpFractals(BarsBefore, BarsAfter);
      FindDnFractals(BarsBefore, BarsAfter);
   
//----
   return(0);
}
//==============================================================================
// --------------------------------- Функции ----------------------------------+
//==============================================================================
int FindDnFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractDnBuffer2[i]=0;
      if (Open[i]<Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]>Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]>Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]<Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]<Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (Low[i]<Low[i+1]) { fractal=Low[i]; nb=i; tm=Time[i];}
         else { fractal=Low[i+1]; nb=i+1; tm=Time[i+1]; }
         FractDnBuffer2[nb]=fractal;
         nm=Prefix+"_Down_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMin(Low[i], Low[i+1]);
         SetArrow(218, LightBlue, nm, tm, fractal-delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
int FindUpFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractUpBuffer1[i]=0;
      if (Open[i]>Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]<Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]<Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]>Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]>Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (High[i]>High[i+1]) { fractal=High[i]; nb=i; tm=Time[i];}
         else { fractal=High[i+1]; nb=i+1; tm=Time[i+1]; }
         FractUpBuffer1[nb]=fractal;
         nm=Prefix+"_Up_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMax(High[i], High[i+1]);
         SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
   switch (TimeFrame) {
      case PERIOD_M1:  return("M1");
      case PERIOD_M5:  return("M5");
      case PERIOD_M15: return("M15");
      case PERIOD_M30: return("M30");
      case PERIOD_H1:  return("H1");
      case PERIOD_H4:  return("H4");
      case PERIOD_D1:  return("Daily");
      case PERIOD_W1:  return("Weekly");
      case PERIOD_MN1: return("Monthly");
      default:         return("UnknownPeriod");
      }
}
//+----------------------------------------------------------------------------+
int SetDistance(int TimeFrame) {
   switch (TimeFrame) {
      case PERIOD_M1:  return(1);
      case PERIOD_M5:  return(1);
      case PERIOD_M15: return(2);
      case PERIOD_M30: return(3);
      case PERIOD_H1:  return(4);
      case PERIOD_H4:  return(4);
      case PERIOD_D1:  return(4);
      case PERIOD_W1:  return(4);
      case PERIOD_MN1: return(4);
      default:         return(0);
      }
}
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm, datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+----------------------------------------------------------------------------+
Arquivos anexados:
 
alex12:

Aqui está um peru feito sob medida, como descrito acima. Muito interessante - porque = Preciso ( Detecta corretamente os Padrões Fractais).


Aqui está o próprio código:

Obrigado pelo código. Por alguma razão, ele só aparece na Hora, não nas outras metades.
 

То есть видно что доллар/франк и евробакс – абсолютно зеркальные валютные инструменты.

Talvez devêssemos ser um pouco mais cuidadosos com a palavra "absolutamente".

Paraaqueles no tanque Comentário à foto: A média foi feita para X= 10, 20, 100 e 250 castiçais. O cronograma à esquerda é M30, à direita - D1. Qualquer coisa perto de zero significa ausência de qualquer "espelhamento" para as últimas X velas [na média].

Como está, os instrumentos se movem de forma semelhante, às vezes na mesma direção, o que é confirmado por correlações periódicas. Mas não está sequer cointegrado, o que é comprovado pelo gráfico não estacionário do EURCHF (embora não possa confirmá-lo sem ambigüidade - não o testei, acho que não faz sentido).

 
alex12:

Aqui está um peru personalizado com base na descrição acima. Muito interessante - porque = Preciso ( Detecta corretamente os Padrões Fractais).

Aqui está o próprio código:


Obrigado! Idéia interessante!

Ele aparece em todas as TFs. Mas algo está errado com o fractal amarelo. É desenhado em todas as TFs a diferentes distâncias e não é o mesmo que no azul.

Por favor, verifique!

SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);//?????
Razão: