[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 haverá mais do que uma ordem de compra de cada vez?
 
dkfl.zrjdktdbx:
Obrigado!!!

Aqui está o link inicial - depois o resto, IMHO.
 
Ivn:

Por favor, explique

A parte analítica utiliza um período de tempo rigidamente definido. Ou prazos
 
Tenho uma ideia, talvez esteja um pouco excitado...
 int BUY;
 for( i=OrdersTotal();i>0;i--){OrderSelect(i-1,SELECT_BY_POS );if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==????){
if(OrderType( )==OP_BUY){BUY++;}}} 
   if ( BUY> stsBUY) {//Alert ("NashlY BUY " );
   for ( i=OrdersTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS );
if( OrderMagicNumber( )==???? &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_BUYSTOP) {    
 OrderDelete(OrderTicket( ) ); 
  stsBUY=BUY;  Alert ("OrderDelete-OP_BUYSTOP",  GetLastError( ) );      }

if( OrderMagicNumber( )==???? &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_BUYLIMIT) {    
 OrderDelete(OrderTicket( ) ); 
  stsBUY=BUY;  Alert ("OrderDelete-OP_BUYSTOP",  GetLastError( ) );      }


}}
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.
 
Vinin:

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
 
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

E a lógica é ruim.

 
Ivn:

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.

 
FelixFX:

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.

 
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...