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
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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 )
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 )
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!
Esta é a condição para cruzar o nível 50 de baixo para cima.
Esta é a condição para cruzar o nível 50 de baixo para cima.
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.
}