Indicadores: Spread dos Símbolos

 

Spread dos Símbolos:

Este indicador mostra o gráfico da diferença (soma) dos preços dos símbolos de negociação.

Ele é apropriado para se ter uma estimativa visual da correlação entre os símbolos de negociação. Ele será muito útil para os traders interessados ​​em negociar pares (trading spread). As barras do indicador são sincronizados no mesmo tempo do gráfico em que o indicador foi anexado.

Spread dos Símbolos

Autor: Dmitry

 
Para não gerar esses casos especiais no Codebase, decore a base uma vez - ChartBuilder.
 
hrenfx:
Para não criar esses casos especiais no Codebase, decore a base uma vez - ChartBuilder.
Nesse indicador(ChartBuilder), há até 23 parâmetros de entrada e, para entendê-lo, é necessário estudar minuciosamente sua descrição, enquanto o meu indicador Spread_Of_Symbols não é mais simples, apenas 4 parâmetros de entrada, e eles são claros mesmo sem uma descrição. É claro que o ChartBuilder é provavelmente mais universal... mas o meu é mais simples do que nunca, qualquer iniciante pode escrever seus próprios índices usando seu esqueleto..... e, além disso, você forneceu um link para o indicador do quarto idioma, e o meu é do quinto idioma.
 

Esse é o problema: para as coisas mais simples, você não precisa aprender nada lá. No seu caso, tudo é extremamente elementar:

Formula1 = "AUDUSD - NZDUSD";
Basta reescrever um kit de ferramentas bem elaborado de MQL4 para MQL5. E você será capaz de implementar quase 99% dos indicadores inventados sobre o tópico de negociação de pares em um bom nível.
 
Agradecimentos ao autor.
Para fins educacionais, esse indicador é simplesmente necessário.

Você pode ver rapidamente o que deve ser adicionado e onde. Quando você melhora (expande a funcionalidade), entende melhor o que está acontecendo.
 

Estou tentando colocar um canal nele, mas ele não está funcionando corretamente.




//+------------------------------------------------------------------+
//|ProjectName |
//|Direitos autorais 2012, CompanyName |
//| http://www.companyname.net
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plotar Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plotar Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- plotar Label3
#property indicator_label3  "Label3"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrRed
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- plotar Label4
#property indicator_label4  "Label4"
#property indicator_type4   DRAW_LINE
#property indicator_color4  clrRed
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1

//--- parâmetros de entrada
input string         symbol1="EURUSD";
input string         symbol2="GBPUSD";
input double         mass_of_symbol1=1;
input double         mass_of_symbol2=1;
input int            ENPeriod    =  14;
input ENUM_MA_METHOD ENMethod    =  MODE_SMA;
input double         ENDeviation =  0.1;

//--- buffers de indicadores
double         UBuffer[];
double         LBuffer[];
double         CBuffer[];

#include <IncOnArray/IncEnvelopesOnArray.mqh>
CEnvelopesOnArray en;

int i,r1,r2,j;
double S,prs,k1,k2,d1,d2;
//--- buffers de indicadores
double        ind1[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado
//+------------------------------------------------------------------+
int OnInit()
  {
    en.Init(ENPeriod,ENMethod,ENDeviation);
    
    //--- mapeamento de buffers de indicadores
    SetIndexBuffer(0,ind1,INDICATOR_DATA);
    SetIndexBuffer(1,UBuffer,INDICATOR_DATA);
    SetIndexBuffer(2,LBuffer,INDICATOR_DATA);
    SetIndexBuffer(3,CBuffer,INDICATOR_DATA);
    
    PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(1,PLOT_LABEL,en.Name()+" Upper");

    PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(2,PLOT_LABEL,en.Name()+" Lower");

    PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(3,PLOT_LABEL,en.Name()+" MA");

    //---
   return(0);
  }
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizado
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ArraySetAsSeries(time,true);ArraySetAsSeries(open,true);ArraySetAsSeries(high,true);ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);ArraySetAsSeries(tick_volume,true);ArraySetAsSeries(volume,true);ArraySetAsSeries(spread,true);

   ArraySetAsSeries(ind1,true);
   MqlRates rates1[]; ArraySetAsSeries(rates1,true);
   MqlRates rates2[]; ArraySetAsSeries(rates2,true);

   if(prev_calculated<rates_total)
     {
      for(i=0;i<rates_total;i++)
        {
         CopyRates(symbol1,0,time[i],1,rates1);
         CopyRates(symbol2,0,time[i],1,rates2);
         ind1[i]=mass_of_symbol1*rates1[0].close-mass_of_symbol2*rates2[0].close;
        }
     }

   en.Solve(rates_total,prev_calculated,ind1,CBuffer,UBuffer,LBuffer);

//--- valor de retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Parece que preciso entender os códigos inteiros.

   //ArraySetAsSeries(ind1,true);

Removi a indexação e ele começou a ser exibido, mas não corretamente.

 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Indicadores: spread_on_chart

newdigital, 2014.01.12 08:59

O que um spread diz aos traders?

  • Os spreads são baseados no preço de compra e venda de um par de moedas.
  • Os custos são baseados nos spreads e no tamanho do lote.
  • Os spreads são variáveis e devem ser consultados em seu software de negociação.

Spreads e Forex

Todo mercado tem um spread, assim como o Forex. Um spread é simplesmente definido como a diferença de preço entre o local onde um trader pode comprar ou vender um ativo subjacente. Os traders que estão familiarizados com ações chamarão isso de spread Bid: Ask spread.

Abaixo, podemos ver um exemplo do cálculo do spread para o EURUSD. Primeiro, encontraremos o preço de compra em 1,35640 e, em seguida, subtrairemos o preço de venda de 1,32626. O que nos resta após esse processo é uma leitura de 0,00014. Os traders devem se lembrar de que o valor do pip é então identificado no EURUSD como o quarto dígito após o decimal, fazendo com que o spread final seja calculado como 1,4 pips.

Agora que sabemos como calcular o spread em pips, vamos dar uma olhada no custo real incorrido pelos traders.



Custos e cálculos de spreads

Como o spread é apenas um número, agora precisamos saber como relacionar o spread em dólares e centavos. A boa notícia é que, se você puder encontrar o spread, esse valor é muito simples do ponto de vista matemático, uma vez que você tenha identificado o custo do pip e o número de lotes que está negociando.

Usando as cotações acima, sabemos que atualmente podemos comprar o EURUSD a 1,3564 e fechar a transação a um preço de venda de 1,35474, o que significa que, assim que nossa negociação for aberta, o trader incorrerá em 1,4 pips de spread. Para encontrar o custo total, agora precisaremos multiplicar esse valor pelo custo do pip, considerando a quantidade total de lotes negociados. Ao negociar um lote de 10k EURUSD com um custo de $1 pip, você incorreria em um custo total de $1,40 nessa transação.

Lembre-se de que o custo do pip é exponencial. Isso significa que você precisará multiplicar esse valor com base no número de lotes que estiver negociando. À medida que o tamanho de suas posições aumentar, o custo incorrido com o spread também aumentará.


Alterações no spread

É importante lembrar que os spreads são variáveis, o que significa que eles não permanecerão sempre os mesmos e mudarão esporadicamente. Essas alterações são baseadas na liquidez, que pode diferir com base nas condições do mercado e nos dados econômicos futuros. Para consultar as taxas de spread atuais, consulte sempre sua plataforma de negociação.

 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Scripts: Notícias VLine

newdigital, 2014.01.30 09:25

Spreads de Forex e as notícias (com base no artigo do dailyfx)

  • Os spreads são baseados no preço de compra e venda de um par de moedas.
  • Os spreads são variáveis e podem mudar durante as notícias.
  • Observe a normalização dos spreads logo após os eventos econômicos.

Os mercados financeiros têm a capacidade de ser drasticamente afetados por notícias econômicas. Os eventos noticiosos ocorrem durante toda a semana de negociação, conforme indicado pelo calendário econômico, e podem aumentar a volatilidade do mercado, bem como os spreads observados em seus pares de moedas favoritos.

É imperativo que os novos traders se familiarizem com o que pode acontecer durante esses eventos. Portanto, para prepará-lo melhor para as próximas notícias, vamos analisar o que acontece com os spreads de Forex durante os mercados voláteis.


Spreads e as notícias

As notícias são um momento notório de incerteza no mercado. Esses lançamentos no calendário econômico acontecem esporadicamente e, dependendo se as expectativas são atendidas ou não, podem fazer com que os preços flutuem rapidamente. Assim como os traders de varejo, os grandes provedores de liquidez não sabem o resultado dos eventos de notícias antes de sua divulgação! Por isso, eles procuram compensar parte de seu risco ampliando os spreads.

Acima está um exemplo de spreads durante a divulgação do número de empregos NFP de janeiro. Observe como os spreads dos principais pares de Forex aumentaram. Embora esse tenha sido um evento temporário, até que o mercado se normalize, os traders terão de suportar custos de negociação mais altos.


Lidando com o Spread

É importante lembrar que os spreads são variáveis, o que significa que nem sempre permanecerão os mesmos e mudarão à medida que os provedores de liquidez alterarem seus preços. Acima, podemos ver a rapidez com que os spreads se normalizam após as notícias. Em 5 minutos, os spreads do EURUSD passaram de 6,4 pips para 1,4 pips. Então, como ficam os traders que desejam executar ordens em torno das notícias?

Os traders devem sempre considerar o risco de negociar em mercados voláteis. Uma das opções para negociar eventos noticiosos é executar imediatamente ordens a mercado na esperança de que a volatilidade do mercado cubra o aumento do custo do spread. Ou então, os traders podem esperar que os mercados se normalizem e aproveitar a liquidez adicional quando a atividade do mercado diminuir.


 

Desculpe!

Variáveis sem sentido declaradas e que não estão funcionando!

 

Em vez de usar a diferença, podemos usar a proporção? (symbol1/symbol2)


Obrigado!