[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 475
Não, não é bem assim, parece que quando uma ordem de compra é detectada, todas as ordens pendentes serão removidas... Todos os pedidos de compra. stsBUY devem ser feitos antes do início. Eu não verifiquei erros.
dkfl.zrjdktdbx: Tenho uma ideia, talvez esteja um pouco excitado... Não, não é bem assim, parece que quando uma ordem de compra é detectada, todas as ordens pendentes serão removidas... Todos os pedidos de compra. stsBUY devem ser feitos antes do início. Eu não verifiquei erros.
Precisaríamos de um código mais correto. Sem erros
Você deve pelo menos ler um pouco o livro didático, para não ter que perguntar o quanto é "duas vezes duas".
Eu não discuto que é um ponto importante, mas se eu o entendesse, eu não estaria perguntando, certo?
ou seja, no algoritmo, onde os prazos nos indicadores são especificados, nós o explicamos claramente.
Certo?
então me explique o seguinte ....
Expert Advisor - travessia de estocásticos, entrada em uma profissão.
Aqui está o algoritmo
int start() { RefreshRates(); // Atualização de dados Symb=Symbol();
x1=x; y1=y;
x=iStochastic( NULL,0,5,3,3,MODE_SMA,1,0,0); // linha principal do valor estocástico na barra 0 y=iStochastic( NULL,0,5,3,3,3,MODE_SMA,1,1,0); // linha principal do valor estocástico na barra 0 Alerta ("stochastic main",x); Alerta ("stochastic signal",y);
// intersecção dosinal e linha principal if (y < x && y1> x1) // Check up pass { f=1 // flag up } //
if (y > x && y1< x1) // verificar passagem para baixo { f=2; // flag down } // verificar passagem para baixo na intersecção da linha principal com a linha 20 if (f===1 && x1<20&& x1<20 && x>= 20) { if (Ticket > 0) // se houver um pedido, removê-lo OrderClose(Ticket,Lts,Bid,10); SL=Bid - StopLoss*Point; // Cálculo de SL aberto TP=Bid + TakeProfit*Point; // Cálculo de TP aberto. Alerta("Tentativa de abrir Comprar. À espera de resposta..."); OrderSelect(Ticket, SELECT_BY_TICKET); if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET)) {
se (Bilhete > 0) // Funcionou :) { Alerta ("Opened Buy order ",Ticket); retorno; f=0; // bandeira de reset }
} // check crossing of the main line from top to bottom of the line 80 if (f===2 &&& x1>80 && x<= 80) { if (Ticket > 0) OrderClose(Ticket,Lts,Ask, 10); // se houver um pedido, remover SL=Ask + StopLoss*Point; // Cálculo do SL TP=Ask - TakeProfit*Point; // Cálculo de TP aberto. Alerta("Tentativa de abrir Sell. Waiting for reply..."); OrderSelect(Ticket, SELECT_BY_TICKET); if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET)) { Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,3,SL,TP);//Open Buy } if (Ticket > 0) // Funcionou :) { Alerta ("Pedido de venda aberto ",Ticket); retorno; f=0; // bandeira zerada }
}
return(0); }
se corrermos, o Consultor Especialista abrirá e fechará as ordens dentro de meia hora, ou seja, abrir às 9.04, fechar às 9.05, abrir novamente às 9.06, fechar às 9.07 e assim por diante, na mesma direção.
sss2019: E se duas ordens BUYLIMIT e BUYSTOP estiverem abertas, eu preciso apagar BUYSTOP no acionamento BUYLIMIT e vice-versa. Você pode me dizer como esta condição pode ser cumprida?
Na verdade, a lógica deveria ser algo parecido com isto:
1. Se houver duas ordens pendentes e nenhuma posição, então lembre-se dos tiquetaques dessas ordens pendentes nas variáveis.
2. Se houver uma SellStop pendente e não houver nenhuma BuyStop pendente, se houver uma posição BuyStop, compare o bilhete da última posição BuyStop aberta com o bilhete BuyStop lembrado.
Se forem iguais, significa que ByStop foi convertido para o mercado Comprar --> se houver um SellStop pendente - apagá-lo. 3.
Se houver uma BuyStop pendente e nenhuma SellStop pendente, se houver uma posição SellStop, compare o bilhete da última posição Sell aberta com o bilhete SellStop lembrado.
Se eles forem iguais, então SellStop é convertido em SellStop de mercado --> se houver uma BuyStop pendente - exclua-a.
Mais ou menos o mesmo... Esta é apenas uma lógica aproximada. Ele precisa de funções.
Bem, desculpe, isso foi apenas um rápido... Na verdade, sim, erro meu, é o caminho errado. Eu deveria estar, eu deveria estar passando pela história, encontrando a última encomenda e... и... Não... Eu realmente não sei...
Obrigado!!!
Aqui está o link inicial - depois o resto, IMHO.
Por favor, explique
A parte analítica utiliza um período de tempo rigidamente definido. Ou prazos
A parte analítica utiliza um período de tempo rigidamente definido. Ou prazos
poderia, por favor, deixar o "peixe" para análise, se você tiver algum comentário, eu apreciaria
Tenho uma ideia, talvez esteja um pouco excitado... Não, não é bem assim, parece que quando uma ordem de compra é detectada, todas as ordens pendentes serão removidas... Todos os pedidos de compra. stsBUY devem ser feitos antes do início. Eu não verifiquei erros.
Precisaríamos de um código mais correto. Sem erros
E a lógica é ruim.
Se você tiver algum comentário a fazer, por favor, deixe o "peixe" para o parse, eu agradeceria.
Você deve pelo menos ler um pouco o livro didático, para não ter que perguntar quantos "duas vezes dois" são.
Você deve pelo menos ler um pouco o livro didático, para não ter que perguntar o quanto é "duas vezes duas".
Eu não discuto que é um ponto importante, mas se eu o entendesse, eu não estaria perguntando, certo?
ou seja, no algoritmo, onde os prazos nos indicadores são especificados, nós o explicamos claramente.
Certo?
então me explique o seguinte ....
Expert Advisor - travessia de estocásticos, entrada em uma profissão.
Aqui está o algoritmo
int start()
{
RefreshRates(); // Atualização de dados
Symb=Symbol();
x1=x;
y1=y;
x=iStochastic( NULL,0,5,3,3,MODE_SMA,1,0,0); // linha principal do valor estocástico na barra 0
y=iStochastic( NULL,0,5,3,3,3,MODE_SMA,1,1,0); // linha principal do valor estocástico na barra 0
Alerta ("stochastic main",x);
Alerta ("stochastic signal",y);
//
intersecção dosinal e linha principal
if (y < x && y1> x1) // Check up pass {
f=1 // flag up
}
//
if (y > x && y1< x1) // verificar passagem para baixo
{
f=2; // flag down
} //
verificar passagem para baixo na intersecção da linha principal com a linha 20 if (f===1 && x1<20&& x1<20 && x>= 20)
{ if (Ticket > 0) // se houver um pedido, removê-lo
OrderClose(Ticket,Lts,Bid,10);
SL=Bid - StopLoss*Point; // Cálculo de SL aberto
TP=Bid + TakeProfit*Point; // Cálculo de TP aberto.
Alerta("Tentativa de abrir Comprar. À espera de resposta...");
OrderSelect(Ticket, SELECT_BY_TICKET);
if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET))
{
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,3,SL,TP);//open Buy
}
se (Bilhete > 0) // Funcionou :)
{
Alerta ("Opened Buy order ",Ticket);
retorno;
f=0; // bandeira de reset
}
}
// check crossing of the main line from top to bottom of the line 80
if (f===2 &&& x1>80 && x<= 80)
{ if (Ticket > 0)
OrderClose(Ticket,Lts,Ask, 10); // se houver um pedido, remover
SL=Ask + StopLoss*Point; // Cálculo do SL
TP=Ask - TakeProfit*Point; // Cálculo de TP aberto.
Alerta("Tentativa de abrir Sell. Waiting for reply...");
OrderSelect(Ticket, SELECT_BY_TICKET);
if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET))
{
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,3,SL,TP);//Open Buy
}
if (Ticket > 0) // Funcionou :)
{
Alerta ("Pedido de venda aberto ",Ticket);
retorno;
f=0; // bandeira zerada
}
}
return(0);
}
se corrermos, o Consultor Especialista abrirá e fechará as ordens dentro de meia hora, ou seja, abrir às 9.04, fechar às 9.05, abrir novamente às 9.06, fechar às 9.07 e assim por diante, na mesma direção.
por que isso acontece?
Cumprimentos.
E se duas ordens BUYLIMIT e BUYSTOP estiverem abertas, eu preciso apagar BUYSTOP no acionamento BUYLIMIT e vice-versa. Você pode me dizer como esta condição pode ser cumprida?
Na verdade, a lógica deveria ser algo parecido com isto:
1. Se houver duas ordens pendentes e nenhuma posição, então lembre-se dos tiquetaques dessas ordens pendentes nas variáveis.
2. Se houver uma SellStop pendente e não houver nenhuma BuyStop pendente, se houver uma posição BuyStop, compare o bilhete da última posição BuyStop aberta com o bilhete BuyStop lembrado.
Se forem iguais, significa que ByStop foi convertido para o mercado Comprar --> se houver um SellStop pendente - apagá-lo. 3.
Se houver uma BuyStop pendente e nenhuma SellStop pendente, se houver uma posição SellStop, compare o bilhete da última posição Sell aberta com o bilhete SellStop lembrado.
Se eles forem iguais, então SellStop é convertido em SellStop de mercado --> se houver uma BuyStop pendente - exclua-a.
Mais ou menos o mesmo... Esta é apenas uma lógica aproximada. Ele precisa de funções.