Como codificar? - página 320

 

Olá a todos, eu gostaria de verificar se existe uma maneira de acompanhar o preço atual?

Por exemplo, quando o preço atravessa um ponto pré-estabelecido, ele desencadeará imediatamente uma negociação. Os que encontrei online se referem principalmente ao fechamento, alta, baixa, etc. do bar. Alguém pode me ajudar, por favor? Obrigado.

Cumprimentos

Terrance

 

Se eu entendi corretamente, você deve usar Askand Bid. Pedir uma nova ordem de compra e licitar por uma nova ordem de venda

tkuan77:
Olá a todos, eu gostaria de verificar se existe uma maneira de acompanhar o preço atual?

Por exemplo, quando o preço atravessa um ponto pré-estabelecido, ele desencadeará imediatamente uma negociação. Os que encontrei online se referem principalmente ao fechamento, alta, baixa, etc. da barra. Alguém pode me ajudar, por favor? Obrigado.

Cumprimentos

Terrance
 

Sim Mladen, é isso que estou usando agora. Talvez minha pergunta não esteja claramente explicada. O que estou tentando conseguir é dizer, por exemplo, que prefixei um ponto, exemplo anterior de vela D1 fechar mais e menos 20pips, e se o preço atual atingir o ponto prefixado de um (D1 + 20pips) ou (D1 - 20pips), isso desencadeará ou uma compra ou venda irregular, independentemente de a vela atual estar próxima ou agora.

Portanto, o que estou tentando conseguir agora é como fazer meu sistema acionar o comércio quando o preço atingir o ponto pré-definido (D1 + 20pips) ou (D1 - 20pips). Obrigado antecipadamente pelo conselho.

Cumprimentos

Terrance

mladen:
Se eu entendi corretamente, você deve usar Askand Bid. Pedir uma nova ordem de compra e licitar por uma nova ordem de venda
 

Agora eu realmente não tenho certeza se entendo, mas vou tentar. Tente algo assim (este não é um código real, mas apenas um exemplo de como verificar - na maioria dos casos, fechar e licitar é a mesma coisa).

if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

tkuan77:
Sim Mladen, é isso que estou usando agora. Talvez minha pergunta não esteja claramente explicada. O que estou tentando conseguir é dizer, por exemplo, que prefixei um ponto, exemplo anterior de vela D1 fechar mais e menos 20pips, e se o preço atual atingir o ponto prefixado de um (D1 + 20pips) ou (D1 - 20pips), isso desencadeará ou uma compra ou venda irregular, independentemente de a vela atual estar próxima ou agora.

Portanto, o que estou tentando conseguir agora é como fazer meu sistema acionar o comércio quando o preço atingir o chamado (D1 + 20pips) ou (D1 - 20pips). Obrigado antecipadamente pelo conselho.

Cumprimentos

Terrance
 

Olá, Mladen,

Sim, consegui resolver muitos dos erros que encontrei, porém 1 ainda me incomoda. Como eu aciono:

1) Comércio longo quando o FastMA1 cruza o SlowMA1 por 10pips para cima

2) Comércio curto quando FastMA1 atravessa SlowMA1 por 10pips para baixo

O que eu não sei é como adicionar no MA para reagir aos 10pips do código.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERÍODO_M30,10,0,MODE_SMA,PREÇO_CLOSE,0);

SlowMA1= iMA(NULL,PERÍODO_M30,20,0,MODE_SMA,PREÇO_CLOSE,1);

if(FastMA1 > SlowMA1)

{Long}

if(FastMA1 < SlowMA1)

{Curto}

/*--------------------------------------------------------------------------------*/

Obrigado e muito obrigado pela ajuda.

Cumprimentos

Terrance

mladen:
Agora eu realmente não tenho certeza se entendo, mas vou tentar. Tente algo assim (isto não é um código real, mas apenas um exemplo de como verificar - na maioria dos casos, fechar e licitar é a mesma coisa)
if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

 

Tente algo como isto :

pipMultiplier duplo=1; se (Dígitos===3 || Dígitos===5) pipMultiplier=10;

dif duplo = 10*Ponto*pipMultiplicer;

if(FastMA1 > SlowMA1+diff)

{Long}

if(FastMA1 < SlowMA1-diff)

{Curto}

tkuan77:
Olá, Mladen,

Sim, consegui resolver muitos dos erros que encontrei, porém 1 ainda me incomoda. Como eu aciono:

1) Comércio longo quando o FastMA1 cruza o SlowMA1 por 10pips para cima

2) Comércio curto quando FastMA1 atravessa SlowMA1 por 10pips para baixo

O que eu não sei é como adicionar no MA para reagir aos 10pips do código.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERÍODO_M30,10,0,MODE_SMA,PREÇO_CLOSE,0);

SlowMA1= iMA(NULL,PERÍODO_M30,20,0,MODE_SMA,PREÇO_CLOSE,1);

if(FastMA1 > SlowMA1)

{Long}

if(FastMA1 < SlowMA1)

{Curto}

/*--------------------------------------------------------------------------------*/

Obrigado e muito obrigado pela ajuda.

Cumprimentos

Terrance
 

Malden eu tento codificar o indicador como sua resposta em relação ao dia anterior da vela h1. Mas não consegui fazer isso.

Eu tenho um exemplo.

Eu tenho um indicador com apenas um buffer em janelas separadas. Ele traça uma linha como rsi, atr etc etc.

Agora eu preciso adicionar uma linha (horizontal) nas mesmas janelas separadas que é calculada a partir da média do valor do indicador dos últimos 24 dias (é apenas por 1 hora por esta razão eu disse 24). Como eu posso fazer isso? É possível traçar esta linha para cada dia no passado?

Eu sei que devo adicionar outro buffer.

Como posso dar a este buffer o que preciso?

Obrigado.

 

...

... dasio

O que você está descrevendo parece uma combinação de um indicador regular (o rsi, atr, ...) e uma média de vários períodos de tempo desse mesmo indicador. Você já tentou dessa forma?

dasio:
Malden eu tento codificar o indicador como sua resposta em relação ao dia anterior da vela h1. Mas não consegui fazer isso.

Eu tenho um exemplo.

Eu tenho um indicador com apenas um buffer em janelas separadas. Ele traça uma linha como rsi, atr, etc etc.

Agora eu preciso adicionar uma linha (horizontal) nas mesmas janelas separadas que é calculada a partir da média do valor do indicador dos últimos 24 dias (é apenas por 1 hora, por esta razão eu disse 24). Como eu posso fazer isso? É possível traçar esta linha para cada dia no passado?

Eu sei que devo adicionar outro buffer.

Como posso dar a este buffer o que preciso?

Obrigado
 
mladen:
dasio O que você está descrevendo parece uma combinação de um indicador regular (o rsi, atr, ...) e uma média multi-prazo desse mesmo indicador. Você já tentou dessa forma?

Olá, obrigado pela sua resposta,

Talvez eu não tenha explicado bem.

Eu crio um indicador que traça uma linha em uma janela de tabela separada com meu próprio cálculo baseado em barras anteriores.

Agora preciso adicionar uma linha no indicador onde o valor desta linha é igual à evaragem do valor dos últimos 24 calculados no último dia e preciso traçar esta linha no dia anterior. Eu anexei uma imagem. Entretanto, esta linha deve ser calculada no final do dia porque deve ser calculada para o valor la 24 do indicador para o mesmo dia em que eu a calculei.

No momento, este indicador deve ser usado apenas em 1 hora de tempo para que não seja um indicador MTF.

Obrigado.

ps. A linha branca é calculada para o mesmo valor 24 do período de 1 dia em que são impressos.

Arquivos anexados:
example_1.gif  7 kb
 

...

... dasio

Tente algo como isto :

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

if (countedBars<0) return(-1);

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

for(i=limit; i>=0; i--)

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

dasio:
Olá, obrigado pela sua resposta,

Talvez eu não tenha explicado bem.

Eu crio um indicador que traça uma linha em uma janela de tabela separada com meu próprio cálculo baseado em barras anteriores.

Agora preciso adicionar uma linha no indicador onde o valor desta linha é igual à evaragem do valor dos últimos 24 calculados no último dia e preciso traçar esta linha no dia anterior. Eu anexei uma imagem. Entretanto, esta linha deve ser calculada no final do dia porque deve ser calculada para o valor la 24 do indicador para o mesmo dia em que eu a calculei.

No momento, este indicador deve ser usado apenas em 1 hora de tempo para que não seja um indicador MTF.

Obrigado.

ps. A linha branca é calculada para o mesmo valor 24 do período de 1 dia em que são impressos.

Arquivos anexados:
test.gif  34 kb
Razão: