Como codificar? - página 232

 

Idéia

OK meninos e meninas

Tenho brincado com a idéia de apenas criar um CUF (Commonly used functions) - de tudo o que li, você não pode chamar scripts de dentro de um EA.

Não obstante - pensando em uma alternativa porque não gosto de ser forçado a redesenhar a roda toda vez que o projeto é feito, pois tenho certeza de que isso faria as coisas funcionarem melhor desta forma.

Os scripts, como todos sabem, carregam e depois descarregam para nunca mais carregar, exceto se você pressionar suas teclas de atalho.

Este é um grande problema que vejo com todas as EA's é que elas parecem ficar presas esperando por alguma condição de tempo ou alguma condição crua de "sono" para passar antes de continuar. Isto torna improvável que o cancelamento e a venda em uma fração de segundo aconteça o que é um grande fracasso em condições extremamente voláteis do que você poderia fazer uma fortuna em poucos segundos.

A solução? Fazer um indicador CUFF que funcione em variáveis globais?? Alguém já tentou isto. O indicador cicla a cada tique de forma que seja perfeito.

 

Como codificar um alerta que enviará alertas sonoros ou por e-mail quando múltiplos indicadores e condições de barra forem atendidos?

 

oi,

sendo um novato eu gostaria de perguntar se a função metastock embutida : ref() e stochmomentum() são implementadas por algumas funções no metatrader

thnx

 

Darian veja meu exemplo acima de globals. encontre um script que envie um e-mail /whistles /does o que você quer e codifique-o nele. lembre-se que você terá que considerar que todos eles não vão explodir exatamente ao mesmo tempo, então você terá que colocar alguns segundos /minutos de atraso antes de redefinir as variáveis de volta a 0.

 

com a Global

posso adicionar um GlobalVarible a um Indicador como este ?

se ( tendência[2]0 && Volume[0]>1 && !UpTrendAlert)

{

GlobalVariableSet("tendência "+Símbolo(),1);

//Print("UP" + GlobalVariableGet("trend "+Symbol()));

Mensagem = " Comprar "+Symbol()+" M "+Periodo()+": Sinal para COMPRAR";

se ( AlertMode>0 ) Alerta (Mensagem);

UpTrendAlert=verdadeiro; DownTrendAlert=falso;

então chamar isso de GlobalVariable em um EA com

int init() {

GlobalVariableDel("tendência "+Símbolo());

tendência = GlobalVariableGet("tendência "+Símbolo());

Comprar = (tendência == 1);

Venda = (tendência == 2);

toda ajuda apreciada

 

Você poderia, no entanto, negociar mais de 1 moeda que não funcione.

 

Problemas com os Arrays, precisam de ajuda!

Hi,

Estou tentando fazer uma função que determina se algum pedido em aberto está perdendo mais dinheiro do que um ponto de corte (digamos, US$-1000).

A função deve então armazenar o OrderTicket() e o OrderProfit() em duas matrizes separadas, e sair com retorno (1) para significar que o ponto de corte foi atingido.

Antes de armazenar os valores nessas matrizes, deve-se verificar a array OrderTicket() para ver se esta ordem já está arquivada.

Se o número OrderTicket já estiver armazenado no array, ele deve determinar se a ordem perdeu um valor ADICIONAL de $1000, e se sim: substituir o valor no array OrderProfit() por um novo valor, e sair com retorno(1) para significar que um NOVO ponto de corte foi alcançado. Se a ordem não perdeu um valor adicional de $1000 (chamado Cutoff), então deve retornar(0) para significar que nenhuma ordem perdeu um valor adicional de $1000.

Acho que praticamente o tenho funcionando (não tenho certeza???), mas por alguma razão a matriz é preenchida com muitos valores '0' juntamente com os valores legítimos. A saída do array é a seguinte:

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076

ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068

ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

[/code]

The following is my actual code:

[code]

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

}

int arraycount1 =1;

int arraycount2 =1;

bool found = false;

int k;

for (int i = 0; i<OrdersTotal();i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

if (OrderProfit()< Cutoff)

{

for (k=0; k<ArraySize(ResumeArrayTickets); k++)

{

if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0)

{

found = true;

if (ResumeArrayPrices[k] + Cutoff < OrderProfit())

{

return (0);

}

else

{

Print ("ELSE");

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1);

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

if (found == false)

{

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)'

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

return (0);

}

}

 

Refrescando uma vez um EA

Olá, há alguma forma de atualizar uma EA para que ela reaja como da primeira vez que é inicializada? (Como um reinício) É preciso fazer isso uma vez que uma barra. Por exemplo, uma vez a cada 30 minutos.

RefreshRates() e WindowRedraw() não o fazem corretamente.

Também gostaria de reter algumas variáveis e não perder os dados.

Existe uma maneira de fazer isso?

Eu também gostaria de poder fazer isto para um indicador também.

Muito obrigado.

 

Ajuda para programação

Olá a todos,

Estou trabalhando na modificação de um medidor de força da moeda para mostrar a força da moeda com base no tempo a partir do gráfico. No momento, o código utilizado é:

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

Eu entendo MODE_HIGH e MODE_LOW obtêm os dias atuais altos e baixos. Como eu poderia obter o máximo e o mínimo dos gráficos no período de tempo atual?

Obrigado!

P.S. Eu não sou um programador, então use palavras pequenas, por favor:)

 

Veja no manual de ajuda as funções iHigh e iLow.

Boa sorte.

Lux