Pergunte! - página 173

 

Como resolver a falta de infra-estrutura de dados de tipo misto

codersguru:
Olá, pessoal,

Tenho muitas mensagens particulares me pedindo ajuda com algumas peças de código.

Aqui você pode postar suas perguntas relacionadas à MQL4, e eu farei o meu melhor para respondê-las.

Olá,

Eu gostaria de usar seu convite para colocar o seguinte problema.

Qual seria a melhor solução para armazenar e ordenar uma lista de símbolos com base em suas mudanças de preço, já que não se pode usar uma infra-estrutura de dados de tipo misto como: EURUSD->1,29, USDGBP->0,22 ?

Não há enumeração e não há estruturas de dados de tipo misto que possam conter uma string e um valor duplo relacionado em mql4. As soluções que eu posso pensar é usar um arquivo, mas isso exigiria uma atividade quase constante de leitura e escrita em disco. Ou usar três arrays; 1 para a lista de símbolos, 1 para o armazenamento e rastreamento dos valores dos locais de índice e 1 para os valores reais.

Parece que é preciso codificar um problema muito básico (simples). A única coisa que eu gostaria é comparar todos os pares de euros uns com os outros para ter uma força relativa. Como você resolveria isto, que infra-estrutura de dados você recomendaria?

Obrigado por quaisquer respostas ou instruções a este novato!

Bibberpool

 

Busca de força relativa e indicadores de correlação

liverpool:
Olá,

Qual seria a melhor solução para armazenar e ordenar uma lista de símbolos com base em suas mudanças de preço, já que não se pode usar uma infra-estrutura de dados de tipo misto como: EURUSD->1,29, USDGBP->0,22 ?

...

Parece que se tem que codificar um problema muito básico (simples). A única coisa que eu gostaria é comparar todos os pares de euros uns com os outros para ter uma força relativa. Como você resolveria isto, que infra-estrutura de dados você recomendaria?

Obrigado por qualquer resposta ou orientação a este novato! Bibberpool

Oi Bibberpool,

Pesquise neste site do TSD Forex para obter indicadores de Força Relativa e Indicadores de Correlação...

Estes tipos de indicadores são projetados para analisar diferentes pares e preços e seus pontos fortes relativos.

Você pode encontrar bons exemplos para o que você quer fazer.

Espero que isto ajude,

Robert

 

Obrigado por sua resposta

cosmiclifeform:
Olá Bibberpool,

Pesquise neste site do TSD Forex para obter indicadores de Força Relativa e Indicadores de Correlação...

Estes tipos de indicadores são projetados para analisar diferentes pares e preços e seus pontos fortes relativos.

Você pode encontrar bons exemplos para o que você quer fazer.

Espero que isto ajude,

Robert

Olá, obrigado por sua resposta e certamente vou pesquisar os fios sugeridos. No entanto, há muito código em volta.

Enquanto isso, fiz um pequeno protótipo em C. Apenas fiz um tipo de inserção básica, já que os dados consistem apenas de pequenos conjuntos e atualizei essa rotina para atualizar uma matriz de caracteres de acordo.

Vou (copiar/colar) transportá-lo para meu primeiro programa mql4 no final desta semana. Aqui está o código talvez seja útil para outros ou alguém quer comentar sobre ele para criar algo melhor.

#include

int main(void) {

int max = 5;

int array[5] = { 3, 5, 2, 1, 4 };

char *symbl[5] = { "EURUSD", "EURGBP", "EURJPY", "EURCHF", "EURCAD" };

int idx = 0;

int swp = 0;

int tmp = 0;

char *tmpsymb = NULL;

printf("--- before\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

for(idx = 1 ; idx <= max - 1; idx++) {

swp = idx;

while(swp > 0 && array[swp] < array[swp - 1]) {

tmp = array[swp];

tmpsymb = symbl[swp];

array[swp] = array[swp - 1];

symbl[swp] = symbl[swp - 1];

array[swp - 1] = tmp;

symbl[swp - 1] = tmpsymb;

swp--;

}

}

printf("--- after\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

return 0;

}

o programa deve ser impresso:

--- antes de

3 - EURUSD

5 - EURGBP

2 - EURJPY

1 - EURCHF

4 - EURCAD

--- depois de

1 - EURCHF

2 - EURJPY

3 - EURUSD

4 - EURCAD

5 - EURGBP

 

À procura de índios do autor Kravchuk

Olá Comunidade,

Procuro indies do autor Kravchuk, que projeta indies para venda. Eu estava disposto a comprar, mas não podemos recompilar na forma de pagamento (não no valor!?). Alguém tem seus índios ft.dejavu, ft .rainbow,barstatline,diver, linerenko? Agradecia sua ajuda. Obrigado.

 
bershk:
Olá Comunidade, estou procurando indies do autor Kravchuk, que projeta indies para venda. Eu estava disposto a compraru mas não podemos recompilar na forma de pagamento (não no valor!?). Alguém tem seus indies ft.dejavu, ft .rainbow,barstatline,diver,linerenko? Agradecia sua ajuda. Obrigado.

Olá bershk,

Se seu pedido ainda não estiver obsoleto, podemos ajudar aqui - trabalhamos com alguns destes indicadores.

Observe que você deve comprar licença do autor e nós não fornecemos nenhum material descompilado ou obtido ilegalmente.

Se você estiver interessado em comprar - aqui estão os preços atuais do autor:

Dejavu - $20; Rainbow - $15; Barstatline - $10; Diver - $20; LineRenko - $15.

Se você precisar de ajuda para comprá-los, escreva-nos para info@raitsoft.com, nós ajudaremos a comprar a licença sem nenhuma comissão.

 

amigos do hallo ...................

tenho começado a aprender a programar em mql4, e para começar iam analayzing idicators e ea .

eu tenho o indicador "daily_close _line" e olhei para o código e acabei com estas linhas de código que não tenho idéia do que estão fazendo e como funcionam.

Que o mesmo, por favor, dêem uma olhada no código e me digam o que está acontecendo.

agradeço antecipadamente um saque.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
 

ERAN123

Ele faz o seguinte: encontra o preço diário aberto (levando em conta o TimeZoneOfData como turno de fuso horário) e traça essa linha através desse dia. Aqui está uma imagem na qual é fácil ver como ele desenha o mesmo preço aberto diário ao longo do dia:

ERAN123:
tenho começado a aprender a programar em mql4, e para começar iam analayzing idicators e ea .

Eu vi o indicador "daily_close _line" e olhei para o código e acabei com estas linhas de código que eu não tenho idéia do que eles estão fazendo e como eles funcionam.

Que o mesmo, por favor, dê uma olhada no código e me diga o que está acontecendo.

agradeço antecipadamente um saque.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
Arquivos anexados:
daly_open.gif  30 kb
 
mladen:
ERAN123

Ele faz o seguinte: encontra o preço diário aberto (levando em conta o TimeZoneOfData como turno de fuso horário) e traça essa linha através desse dia. Aqui está uma imagem na qual é fácil ver como ele desenha o mesmo preço aberto diariamente ao longo do dia:

Desculpe-me por esta linha:

barsper30= 1,0*PERIOD_M30/Período();

e esta também.

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

para que as linhas "20" e "-1" e como as 2 linhas funcionam juntas?

obrigado por um saque.

 

Originalmente escreveu outra coisa.

Esqueça essas linhas : elas estão, por alguma razão, tentando limitar o início onde os valores começam a ser calculados (e isso deve ser a algumas horas da barra mais antiga no gráfico). O que o codificador queria alcançar com isso talvez só ele saiba

ERAN123:
sory i ment thise line :

barsper30= 1,0*PERIOD_M30/Período();

e esta também.

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

para que as linhas "20" e "-1" e como as 2 linhas funcionam juntas?

obrigado por um saque.
 

graças a um saque meu amigo ..... você me ajudou