Pergunte! - página 142

 

Algumas ajudas, por favor, com um EA

Estou tentando fechar uma ordem de venda e abrir uma nova ordem de compra. A compra abre mas a venda dá erro 4051

Eu estou usando

bilhete = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// posição fechada

e

bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

 

Como mudar o número mágico ?

Olá a todos,

Eu uso a diferença EA (cópia de uma EA de origem) para trocar pares de diferenças na janela do gráfico de diferenças e gostaria de mudar o número mágico, mas não sei como funciona o número mágico ? Poderia me dizer, por favor?

1. Como funciona o número mágico ?

2. Como mudar o número mágico ?

3. Posso pegar qualquer número para mudar o número mágico ou devo usar algum número em algumas regras ?

4. Você poderia me dar um exemplo para mudar o número mágico do meu EA: 16763 ?

Muito obrigado por sua ajuda!

 

O número mágico nada mais é do que um identificador único. Ele distingue cada instância da mesma EA enquanto também o distingue de qualquer outra EA que você possa ter em execução.

Se o número mágico for uma variável externa, basta mudá-lo para qualquer número que você desejar. Basta ter certeza de que não é o mesmo número que qualquer outra EA que você tenha em execução.

Se não for uma variável externa, procure no código a variável e mude-a para qualquer número que você queira.

Espero que isso ajude.

Lux

 
luxinterior:
O número mágico nada mais é do que um identificador único. Ele distingue cada instância da mesma EA enquanto também o distingue de qualquer outra EA que você possa ter em execução.

Se o número mágico for uma variável externa, basta mudá-lo para o número que você quiser. Basta ter certeza de que não é o mesmo número que qualquer outro EA que você tenha em execução.

Se não for uma variável externa, então procure no código a variável e mude-a para qualquer número que você queira.

Espero que isso ajude.

Lux

Olá Lux,

Você quer dizer que posso mudar o número mágico da minha EA:16763 para 16764 ; 16765 ect... ?

Obrigado por sua resposta rápida.

Luu

 
luu:
Olá Lux,

Você quer dizer que posso mudar o número mágico da minha EA:16763 para 16764 ; 16765 ect... ?

Obrigado por sua resposta rápida.

Luu

Exatamente! Desde que o número seja único, não importa o número que você escolher.

Você não precisa realmente mudá-lo, a menos que tenha uma razão específica para isso.

Lux

 
luxinterior:
Exatamente! Desde que o número seja único, não importa o número que você escolher.

Você não precisa realmente mudá-lo, a menos que tenha uma razão específica para isso.

Lux

Muito obrigado por sua ajuda Lux!

Luu

 

Problemas de ordem de fechamento da EA

Amigos ı tem um EA com indicador de resistência de suporte.EA deve completar os pedidos de lucro alvo.Mas falta algum dia.Como ı pode se livrar deste problema.Por favor me ajude

 

Por favor, ajude com um roteiro genérico simples.

Hi

Alguns1 podem me ajudar com um roteiro simples.

Aqui está o que eu preciso.

Script muito genérico que pode ser usado em qualquer símbolo que faça 3-4 pedidos de SELL_STOP e BUY_STOP.

Digamos que eu quero colocar um buy_stop 20 pontos acima do preço atual, segundo pedido 40 pontos acima do preço atual, 3d 80 pontos e assim por diante.

A mesma coisa para Sell_Stop

Eu estava tentando montar o roteiro com base em alguns exemplos, mas como não estou familiarizado com a linguagem C, estou tendo alguns problemas.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; // Predefinição SL (pt)

int Dist_TP =100; // Pré-definido TP (pt)

string Symb=Símbolo(); // Símbolo

RefreshRates();

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (Dist_TP < Min_Dist) // Se for inferior ao permitido

{

Dist_TP=Min_Dist; // Defina o permitido

Alerta(" Aumento da distância do TakeP = ",Dist_TP," pt");

}

//-------------------------------------------------------------------- 6 --

Alerta("O pedido foi enviado ao servidor. Aguardando resposta...");

for(i=100;i<400;i=i+100)

{

duplo TP=(ask+i*Point) + Dist_TP*Point; // Preço solicitado do TP

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP);

Sleep(500);

int Error=GetLastError(); // Falha

switch(Error) // Erros excessivos

{

caso 130:Alerta("O SL está errado. Tentando novamente...");

RefreshRates(); // Atualizar dados

se (Dist_SL < Min_Dist) // Se for inferior ao permitido

{

Dist_SL=Min_Dist; // Defina o permitido

Alerta(" Aumento da distância de SL = ",Dist_SL," pt");

}

i=i-i-50;

Alerta (i);

Alerta (Dist_SL);

cnt=cnt+1;

Alerta (cnt);

if (cnt===3)break;

continuar; // Na próxima iteração

caso 135:Alerta("O preço mudou. Tentando novamente...");

RefreshRates(); // Atualizar dados

continuar; // Na próxima iteração

caso 136:Alerta ("Sem preços. À espera de um novo tick...");

while(RefreshRates()==falso) // Até um novo tick

Dormir(1); // Atraso do ciclo

continuar; // Na próxima iteração

caso 146:Alerta("O subsistema de comércio está ocupado. Tentando novamente...");

Sleep(500); // Solução simples

RefreshRates(); // Atualizar dados

continuar; // Na próxima iteração

}

switch(Error) // Erros críticos

{

caso 2 : Alerta ("Erro comum");

pausa; // Saída 'interruptor'.

caso 5 : Alerta ("Versão desatualizada do terminal do cliente");

break; // Saída 'switch' (interruptor)

caso 64: Alerta ("A conta está bloqueada");

pausa; // Saída 'switch'; // Saída 'switch

caso 133:Alerta ("Comércio proibido");

pausa; // Sair "interruptor"; // Sair "interruptor".

padrão: Alerta("Erro ocorrido",Erro);// Outras alternativas

}

// quebrar;

}

//-------------------------------------------------------------------------- 9 --

Alerta ("O roteiro completou suas operações ---------------------------");

retorno; // Início de saída()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Funciona um pouco, mas muitas vezes estou tendo problemas com o fim da perda.

 

Eis minha idéia se pudermos trocar a cobra com a taxa de sr gaussiano dentro do

ssrc pode pagar dividendos o que você acha... em vez de ser

a ssrc seria a correlação de um lado da taxa de sr de lanceiros gaussianos

"osgsrspc" lol .(tentei codificá-lo, mas ele passou por cima da minha cabeça)

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

Arquivos anexados:
 

Nova pergunta: 5ª Decimal e Gestão de Dinheiro

Em outro fórum que freqüento que é para clientes de uma EA em particular, um cliente reclamava do fato de que o desenvolvedor da EA ainda não havia consertado a questão da 5ª casa decimal / fracionária de preços para sua EA.

O desenvolvedor alegou há vários meses que esta questão exigia um roteiro especial para ser resolvida. Agora, 4 meses depois, eu basicamente disse que era ridículo que ainda não tinha sido corrigido - e alegou que só precisava de algumas linhas de código para redefinir o "Ponto" semelhante ao método descrito aqui.

Portanto, aqui vem a pergunta. O desenvolvedor ainda insiste que este problema é super complicado e requer uma programação de script especial para corrigi-lo. Aqui está a explicação do desenvolvedor:

Oi, John. Você está certo. Cada vez mais corretores estão indo para pips fracionários. No entanto, a questão dos pips fracionários não é um bug em [nome removido]. É um problema com a forma como a plataforma MT4 define a diferença no número de casas decimais. Estamos reprogramando a EA e os indicadores para que eles reconheçam a diferença. Isto deve estar contido na definição da variável "Ponto" dentro da plataforma MT4 e as EA utilizam esta definição para determinar as casas decimais. Entretanto, muitas plataformas MT4 não passam mais do que 4 casas decimais na EA, portanto, é necessário incluir um script especial. Nosso desafio é usar a variável "Ponto" em toda a EA e em todos os indicadores. Assim, não é tão simples como adicionar algumas linhas de código para redefinir o "Ponto". Espero ter um programa de pip fracionado funcionando até o final da próxima semana.

Portanto, minha pergunta é a seguinte: Algum de vocês, programadores experientes, encontrou esta complicada exigência de script ou problemas com o valor de "Ponto" da plataforma MT4?

Mesmo que você assuma que "Ponto" é limitado a 4 decimais, então isso significaria que você só precisa se preocupar com pares com Ponto = 0,001 ----, o que ainda leva apenas uma linha ou duas de código.

Ou, você poderia usar "Dígitos" ao invés de "Ponto" - que ainda usa apenas algumas linhas de código.

Ou você poderia usar apenas uma variável booleana como "UseFractionalPips = true;" para redefinir "Ponto".

Eu realmente sinto que o desenvolvedor está tornando o problema mais complicado do que ele é (ou talvez outros motivos). Eu simplesmente nunca li ou ouvi falar desta questão com "Ponto" limitado a apenas 4 decimais - e mesmo que fosse possível usar "Dígitos" ou outros métodos para redefinir o ponto sem algum script especial.

Só estou programando no MT4 há 18 meses, então pensei em adiar para alguns programadores mais experientes o quão complicado o "conserto" é para lidar com o preço de tubulações fracionárias no MT4.

Alguma idéia?

Obrigado antecipadamente por sua ajuda,

-B

Razão: