Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1003

 
 

Por favor, informe como implementar o seguinte:

Há linhas personalizadas no gráfico, que haja "n" número delas. Como obter o valor do preço quando o preço se aproxima de uma das linhas?

Obrigado de antemão!

 

Olá a todos ) favor ajudar - A meta é (se o preço estiver acima da "linha" (100 pips) então "compre" ) ) como expressá-lo ( o preço é mais alto em 100 pips de qualquer valor ) e também esta pergunta como saber o preço da média móvel no momento?

obrigado antecipadamente )

 
Tema97:

Olá a todos ) favor ajudar - A meta é (se o preço estiver acima da "linha" (100 pips) então "compre" ) ) como expressá-lo ( o preço é mais alto em 100 pips de qualquer valor ) e também esta pergunta como saber o preço da média móvel no momento?

obrigado antecipadamente )

Tema, leia a documentação, o iMa é descrito ali, assim como os objetos gráficos. Há uma função ObjectGetDouble(com os parâmetros correspondentes) para obter o preço de uma linha
 

Por favor, informe um recém-chegado como evitar reabrir uma ordem, após o fechamento, mantendo as condições comerciais de abertura.

Por exemplo: se o estocástico cruzar o nível 50 para cima, abra a Buy. Fechar quando o estocástico se inverte ou quando atinge o nível 80 ou no Take Profit. Mas as condições comerciais para abrir são preservadas! Isto é, restos estocásticos acima de 50 e a Buy é aberta novamente!

duplo S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);

duplo S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);

if(S_1>50)

{

Opn_B=verdadeiro;

}

if(S_1<S_2||S_1>80)

{

Cls_B=verdadeiro;

}

Inseri critérios comerciais no esquema simples do Expert Advisor, que é apresentado no tutorial MQL. Favor informar qual função utilizar para evitar este problema. Obrigado!

 
if(S_1 > 50 && S_2 < 50)

Esta é a condição para cruzar o nível 50 de baixo para cima.

 
AlexeyVik:

Esta é a condição para cruzar o nível 50 de baixo para cima.

Muito obrigado! Vou tentar agora.
 
Como "destacar" um indicador "anexado" (ou EA) de um gráfico sem fechar esse gráfico?
 
É possível colocar um indicador AccountEquity() que funcione em tempo real no gráfico? Onde posso obtê-lo?
 

Olá, você poderia, por favor, me aconselhar? Estou mudando os critérios comerciais no Expert Advisor apresentado no tutorial MQL4. Quando tento definir um stop loss na Buy, o programa dá erro 130: paradas erradas. Por favor, explique por quê?

// Valores numéricos para M15

StopLoss duplo externo =0; // SL para o pedido que está sendo aberto

Duplo TakeProfit externo =0; // TP para o pedido que está sendo aberto

externo int K = 5;

externo int D = 3;

abrandamento externo int = 3;

campo_preço interno externo = 0;


nível interno externo_1 = 80; // nível estocástico

int exterior Nível_2 = 20;

Período externo interno_MA_2 = 31; // MA Período 2

duplo Rastvor externo =28,0; // Distância entre MA

Lotes duplos externos =0,01; // Número fixo de lotes.

Prots duplo externo =0,07; // Porcentagem de fundos livres

bool Work=true; // Expert Advisor will work.

Symb; // Nome do instrumento financeiro

//--------------------------------------------------------------- 2 --

int start()

{

int

K_level,

Total, // Número de pedidos na janela

Dica=-1, // Tipo de pedido selecionado (B=0,S=1)

Bilhete; // Número do pedido

duplo S_1,

S_2,

MA_1_t, // valor MA_1_t. MA_1 valor atual

MA_2_t, // Valor. MA_2 valor atual MA_2_t // Número de lotes selecionados em ordem

Lotes, //Lots Count in Order atualmente selecionados

Lts, //Número de lotes em uma ordem aberta

Min_Lot, // Número mínimo de lotes

Passo, // Passo de mudança de tamanho de lote

Livre, // Fundos livres atuais

One_Lot, // Valor de um lote

Preço, // Preço do pedido selecionado

SL, // Preço SL da ordem selecionada

TP; // TP da ordem selecionada

bool

Ans =falso, // Resposta do servidor após o fechamento

Cls_B=falso, // Critérios para fechar Compra

Cls_S=falso, // Critério de fechamento de Venda

Opn_B=falso, // Critério de abertura da compra

Opn__S=falso; // critério de abertura Vender

//--------------------------------------------------------------- 3 --

//Pré-processamento

if(Bars < Período_MA_2) // Não há barras suficientes

{

Alerta("Não há barras suficientes na janela. O Expert Advisor não está funcionando");

retorno; // Saída início()

}

if(Trabalho==falso) // Erro crítico.

{

Alerta("Erro crítico. O Expert Advisor não está funcionando");

retornar; // Sair do início()

}

//--------------------------------------------------------------- 4 --

// Contagem de pedidos

Symb=Símbolo(); // Nome do instrumento financeiro.

Total=0; // Número de pedidos

for(int i=1; i<=OrdersTotal(); i++) // Laço de pedido

{

if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // Se o seguinte

{ // Análise de pedidos:

se (OrderSymbol()!=Symb)continuar; // Não nosso instrumento financeiro

se (OrderType()>1) // Temos um pedido pendente

{

Alerta("Ordem pendente detectada. O Expert Advisor não está funcionando;)

retorno; // Saída()

}

Total++; // Contador de ordens de mercado

se (Total>1) // Não mais de um pedido

{

Alerta("Várias ordens de mercado. O Expert Advisor não está funcionando;)

retorno; // Saída()

}

Ticket=OrderTicket(); // Número do pedido selecionado.

Dica =OrderType(); // Tipo da ordem selecionada.

Preço =OrdemPreço Aberto(); // Preço da ordem selecionada.

SL =OrderStopLoss(); // SL da ordem selecionada.

TP =OrderTakeProfit(); // TP da ordem selecionada.

Lote =OrderLots(); // Número de lotes

}

}

//--------------------------------------------------------------- 5 --

// Critérios comerciais

S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);


S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);


if(S_1 > 50 && S_2 < 50)


{


Opn_B=verdadeiro;


}


if(S_1<S_2||(S_1 < 80 && S_2 > 80))


{


Cls_B=verdadeiro;


}

if(S_1 < 50 && S_2 > 50)


{


Opn_S=verdadeiro;


}


if(S_1>S_2||(S_1 > 20 && S_2 < 20))


{


Cls_S=verdadeiro;


}

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

// Encerrar pedidos

while(true) // Fechar o laço do pedido.

{

if (Tip==0 && Cls_B===verdadeiro) //Open Buy order.

{ //é um critério de fechamento

Alerta("Tentando fechar Comprar ",Ticket";)

RefreshRates(); // Atualização de dados

Ans=OrderClose(Ticket,Lot,Bid,2); // Fechar Compra

se (Ans===verdadeiro) // Funcionou :)

{

Alerta ("Pedido Fechado de Compra", Ticket;)

pausa; // Saída do circuito fechado

}

if (Fun_Error(GetLastError())==1) // Tratamento de erros

continuar; // tentar novamente

retornar; // Sair do início()

}

se (Tip===1 && Cls_S===verdadeiro) // Ordem de venda aberta.

{ // há um critério próximo

Alerta ("Tentativa de fechar Vender ",Bilhete";)

RefreshRates(); // Atualização de dados

Ans=OrderClose(Ticket,Lot,Ask,2); // Fechar Venda

se (Ans===verdadeiro) // Funcionou :)

{

Alerta ("Pedido de venda fechado", Ticket;)

pausa; // Saída do circuito fechado

}

if (Fun_Error(GetLastError())==1) // Tratamento de erros

continuar; // tentar novamente

retornar; // Sair do início()

}

pausa; // Sair enquanto

}

//--------------------------------------------------------------- 7 --

// Valores do pedido

RefreshRates(); // Atualização de dados

Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Número mínimo de lotes

Livre =AccountFreeMargin(); // Fundos livres

One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Valor de 1 lote

Passo =MarketInfo(Symb,MODE_LOTSTEP); // Tamanho da mudança de passo

se (Lotes > 0) // Se os lotes forem especificados

Lts =Lots; // nós trabalhamos com eles

outros // % de fundos livres

Lts=MathFloor(Livre*Prots/One_Lot/Step)*Step;// Para abrir

if(Lts < Min_Lot) Lts=Min_Lot; // Não menos que Min_Lot; // Para abertura

if(Lts*One_Lot > Free) // Muito mais caro que Free

{

Alerta(" Não há dinheiro suficiente ", Lts," lotes);

retorno; // Saída início()

}

//--------------------------------------------------------------- 8 --

/Obertura de pedidos

enquanto(true) //Order close loop.

{

se (Total==0 && Opn_B===verdadeiro) // Sem ordens em aberto

{ //abrir critério de compra.

RefreshRates(); // Atualizar dados

Alerta("Tentando abrir a Buy. Waiting for reply...");

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//open Buy

se (Bilhete > 0) // funcionou :)

{

Alerta ("Pedido de compra aberto", Ticket;)

devolução; //Ordem de saída

}

if (Fun_Error(GetLastError())==1) // Tratamento de erros

continuar; // tentar novamente

retornar; // Sair do início()

}

se (Total==0 && Opn_S===verdadeiro) // sem ordens em aberto

{ // critério de Venda Aberta.

RefreshRates(); // Atualizar dados

Alerta ("Tentativa de abrir Sell. Waiting for reply...");

Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.

se (Bilhete > 0) // Funcionou :)

{

Alerta ("Pedido de venda aberto", Ticket;)

devolução; //Ordem de saída

}

if (Fun_Error(GetLastError())==1) // Tratamento de erros

continuar; // tentar novamente

retornar; // Sair do início()

}

pausa; // Sair enquanto

}

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

retorno; //saída do início()

}


//-------------------------------------------------------------- 10 --

int Fun_Error(int Error) // Tratamento de erros fie

{

interruptor(Erro)

{ // Erros intransponíveis.

caso 4: Alerta("O servidor comercial está ocupado. Tente novamente...");

Sleep(3000); // Solução simples.

retorno(1); // Função de saída.

caso 135:Alerta ("Preço alterado. Tente novamente...");

RefreshRates(); // Atualização de dados.

retornar(1); // Sair da função.

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

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

Dormir(1); // Atraso no laço

retornar(1); // Sair da função

caso 137:Alerta ("Corretor está ocupado. Tente novamente...");

Sleep(3000); // Solução simples.

retornar(1); // Sair da função.

caso 146:Alerta("O subsistema comercial está ocupado. Tente novamente...");

Dormir(500); // Decisão simples

retornar(1); // Sair da função

// Erros críticos

caso 2: Alerta("Erro geral;)

retornar(0); // Sair da função.

caso 5: Alerta ("Versão mais antiga do terminal");

Trabalho=falso; // Não funciona mais

retornar(0); // Sair da função

caso 64: Alerta("Conta bloqueada.");

Trabalho=falso; // Não funciona mais

retornar(0); // Sair da função

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

retornar(0); // Sair da função

caso 134:Alerta("Não há dinheiro suficiente para executar a transação");

retornar(0); // Sair da função

default: Alert("Ocorreu um erro ",Error); // Outras opções

retornar(0); // Sair da função

}

}

//-------------------------------------------------------------- 11 --

int New_Stop(int Parametr) // Verificar stop-prick.

{

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Distância mínima

if (Parametr < Min_Dist) // Se menor que o permitido.

{

Parametr=Min_Dist; // Definir tolerância.

Alerta("distância de parada aumentada;)

}

retorno(Parametr); // Valor de retorno.

}

Razão: