Como codificar? - página 117

 
mystified:
Eu adicionei níveis ao HMA:

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#Indicador de propriedade_color1 Preto

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

#indicador de propriedade_mínimo 0

#indicador de propriedade_máximo 100

#indicador de propriedade_nível1 80

#indicador de propriedade_nível2 60

#indicador de propriedade_nível3 40

#indicador de propriedade_nível4 20

#indicador de propriedade_levelcolor DarkSlateGray

Mas o indicador não aparece corretamente em uma janela separada. Qualquer ajuda muito apreciada.

Porque o indicador é limitado à força:

Retire estas duas linhas:

#indicador de propriedade_mínimo 0

#indicador de propriedade_máximo 100

Os níveis só funcionam bem em indicadores delimitados, mas para fazer um indicador delimitado, o cálculo deve incluir os limites.

Exemplo: RSI = 100-(100/(1+U/D))

Sabemos por essa fórmula que o indicador se moverá entre 0-100 e porque poderíamos incluir 70-30 níveis sem medo de que eles desaparecessem.

Outro exemplo é MACD = EMA(CLOSE, 12)-EMA(CLOSE, 26)).

Definimos um nível em M5 e quando passamos para H1 o mais provável é que o nível tenha desaparecido.

Então, pegamos a mesma fórmula e fazemos algumas mudanças MACD = (EMA(FECHADO, 12)-EMA(FECHADO, 26))/EMA(FECHADO, 26). E agora temos um indicador de porcentagem. Não está limitado, mas temos menos probabilidades de perder nossos níveis.

 

Obrigado Linuxer.

 
Eu criei um EA muito simples e um sistema que uso no mínimo em 3 Prazos... Pode ser que o problema não pare de abrir e eu não quero ter 3 EA e 3 gráficos para um par.

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

Às vezes eu tenho 3 sinais em 3 TF diferentes. Eu quero aceitar todos os pedidos, mas quero apenas um pedido por TF e ainda posso aceitar outro pedido em outra TF se ela ainda estiver aberta, mas em um bar diferente.

exemplo:

1 sinal em 4h

1 sinal em 1h mas cai em barra por 4h

1 sinal em 30 minutos, mas apenas uma barra por 1h e 4h.

3 sinais serão abertos.

Não tenho problemas em usar o número mágico como meio de filtragem.

Alguém pode me ajudar? muito obrigado.

Até agora era o que eu pensava:

por 30 min.

se (número mágico == 123)

{

se (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//meu código do pedido}

}

não tenho o MT4, mas sei que algo não está correto na lógica ou no código. Por isso, por favor, me ajudem.

também acho que temos um problema semelhante com o matrixebiz

Alguém pode me ajudar, por favor?

 
mystified:
Obrigado Linuxer.

Este é apenas o exemplo (porque agora você tem o Oscilador HMA ) do post anterior, ainda é MACD mas calculado de uma maneira diferente.

 
 

Como começar a negociar na vela de abertura em D1 ??

Alguém conhece o código para pedir à EA que comece a abrir o comércio quando a nova barra começar no período de tempo D1 ??

aqui está a lógica:

em D1 TF, quando a nova vela (significa um novo dia) é iniciada então a EA abrirá 2 posições, COMPRAR e VENDER com TP=10 pips para cada posição.

Quando a vela se fecha, então a EA fecha todas as posições e começa a abrir novamente a posição para a nova vela.

regra muito simples, mas ainda não consigo encontrar o código para esta regra simples....

Sou muito novo na codificação MQL4 e já pesquisei e li muitas fontes e fóruns para saber mais sobre a codificação MQL4, mas não consigo encontrar o que preciso.

Obrigado antes...

 

aqui está meu código.... por favor me ajude a consertá-lo

Eu tentei codificar o que pedi antes, aqui está a amostra do código EA:

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LastLots=Lots;

Lucro=0;

LucroPip=0;

PairOrder=0;

OrdensOpened = 0;

Encomendas Anteriores = OrdensAbertas;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(taxas, Symbol(), PERÍODO_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

// sem comércio nas férias;

retorno(0);

}

senão

{

se (newbar()==Periodo())

{

para (int cnt = OrderTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int newbar()

{

duplo g;

int m,s,k;

m=Tempo[0]+Periodo()*60-TempoCorrente();

g=m/60,0;

s=m%60;

m=(m-m%60)/60;

retorno(m);

}

OpenBuy nulo()

{

ldLot duplo, ldStop, ldTake;

lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digitos);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

OpenSell() vazio

{

ldLot duplo, ldStop, ldTake;

lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELLL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1);

}

duplo GetSizeLot()

{

retorno(Lotes);

}

duplo GetTakeProfitBuy()

{

retornar(Ask+TakeProfit*Point);

}

duplo GetTakeProfitSell()

{

retorno(Bid-TakeProfit*Point);

}

Ontem à noite eu fiz o upload para meu vps, mas esta manhã eu verifico, mas minha EA de amostra não abre nenhum comércio, alguém aqui pode me ajudar a consertar minha EA de amostra aqui ??

btw, eu também a anexei aqui

 

Alertas que duram mais tempo

oi sou novato tentando entender de dentro para fora disto e qualquer ajuda será apreciada!!

meu indicador atual tem o seguinte código para gerar alertas, mas este alerta dura apenas um bip, há alguma maneira de eu conseguir apitar por 30 ou 60 segundos ou pelo menos um pouco mais de 1 bip

se (setalert == 1 && shift == 0) {

Alerta(Símbolo(), " ", ponto, " ", padrão);

setalert = 0;

}

Obrigado

 

Re Codificação para Metatrader (Oscilador de Volume Klinger)

O Oscilador Klinger (KO) foi desenvolvido por Stephen J. Klinger. Aprendendo com pesquisas anteriores sobre volume feitas por técnicos tão conhecidos como Joseph Granville, Larry Williams e Marc Chaikin, o Sr. Klinger se propôs a desenvolver um indicador baseado em volume para ajudar nas análises de curto e longo prazo.

O KO foi desenvolvido com dois objetivos aparentemente opostos em mente: ser sensível o suficiente para sinalizar topos e fundos de curto prazo, mas preciso o suficiente para refletir o fluxo de dinheiro de longo prazo que entra e sai de uma segurança.

O KO se baseia nos seguintes princípios:

* A faixa de preço (ou seja, alto - baixo) é uma medida do movimento e o volume é a força por trás do movimento. A soma de Alto + Baixo + Fechado define uma tendência. A acumulação ocorre quando a soma de hoje é maior do que a do dia anterior. Por outro lado, a distribuição ocorre quando a soma de hoje é menor do que a do dia anterior. Quando as somas são iguais, a tendência existente é mantida.

* O volume produz mudanças contínuas intra-diárias no preço, refletindo a pressão de compra e venda. O KO quantifica a diferença entre o número de ações acumuladas e distribuídas a cada dia como "força de volume". Uma força de volume forte e crescente deve acompanhar uma tendência de alta e depois se contrair gradualmente ao longo do tempo durante os últimos estágios da tendência de alta e os estágios iniciais da seguinte tendência de baixa. Isto deve ser seguido por uma força de volume crescente que reflete algum acúmulo antes que se desenvolva um fundo.

* Ao converter a força de volume em um oscilador que representa a diferença entre uma média móvel exponencial de 34 e 55 períodos com um gatilho de 13 períodos, a força de volume que entra e sai de uma segurança pode ser facilmente rastreada. A comparação desta força com a ação do preço pode ajudar a identificar divergências nas partes superior e inferior.

Interpretação

O Sr. Klinger recomenda as seguintes diretrizes para o uso do KO:

1. Os sinais mais confiáveis ocorrem na direção da tendência predominante. Diretrizes rígidas de parada (ou seja, falha na penetração da linha zero ou uma violação da linha de gatilho) devem permanecer em vigor.

2. O sinal mais importante ocorre quando o KO diverge com a ação de preço subjacente, especialmente em novos altos ou novos baixos em território sobre-comprado/sobre-vendido. Por exemplo, quando um estoque faz uma nova alta ou baixa para um ciclo e o KO não confirma isto, a tendência pode estar perdendo força e se aproximando de sua conclusão.

3. Se o preço estiver em uma tendência de alta (ou seja, acima de uma média móvel exponencial de 89 dias), compre quando o KO cai para níveis invulgarmente baixos abaixo de zero, aparece para cima e cruza sua linha de gatilho. Se o preço estiver em uma tendência de baixa (ou seja, abaixo de uma média móvel exponencial de 89 dias), vender quando o KO subir para níveis invulgarmente altos acima de zero, virar para baixo, e cruzar sua linha de gatilho.

Embora o KO funcione bem para o timing das negociações na direção da tendência, ele é menos eficaz contra a tendência. Isto pode criar problemas para o operador que tenta "escalpar" uma negociação contra a tendência predominante. Entretanto, quando o KO é usado em conjunto com outros indicadores técnicos, melhores resultados podem ser alcançados. O %R de William é recomendado para confirmar uma condição de preço sobre-comprado/sobre-vendido e o MACD de Gerald Appel é recomendado para confirmar a direção de curto prazo do preço.

Dica

Stephen Klinger sugere a seguinte fórmula para visualizar o fluxo cumulativo de dinheiro que entra e sai de uma segurança:

cum(kvo())

Traçar uma média móvel de 13 períodos da fórmula como uma linha de gatilho para entrar em negociações de compra e venda.

fonte codenya untuk estação de comércio

Tipo: Função, Nome: VForce

Vars: TSum(0), Trend(0), DM(0), CM(0);

TSum = Alto + Baixo + Fechado;

SE TSum > TSum[1] Então

Tendência = 1

Senão

Tendência = -1;

SE Tendência = Tendência[1] Então

CM = CM + Faixa

Senão

CM = Faixa + Faixa[1];

SE CM 0 Então

VForce = Volume * AbsValue(2 * (DM/CM) -1) * Tendência * 100;

Tipo: Função, Nome: KVO

Entradas:

FastX(Numérico),

SlowX(Numérico); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Tipo: Indicador, Nome: Oscilador de Volume Klinger

Entradas:

FastX(34),

SlowX(55),

TrigLen(13),

Liso(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);IF Smooth <= 1 Then Begin

Plot1(KVO(FastX, SlowX), "KVO");

Plot2(Trigger, "KVO Trigger");

End Else Else BeginPlot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");

Plot2(Summation(Trigger, Smooth), "KVO Trigger");

Fim;

Plot3(0, "Zero");

IF Lote1 Cruzes Acima do Lote2 OU Lote1 Cruzes Abaixo do Lote2 OU

Lote2 Cruzes Acima do Lote3 OU Lote2 Cruzes Abaixo do Lote3 Então

Alerta = Verdadeiro;

alguém gostaria de me ajudar a converter esta codificação em Mql4?

thks

 
Razão: