[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 768
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
Só preciso chamar a função, só preciso de uma linha: "Se houver mais pedidos do que um .... e isso é tudo" - e você está me oferecendo uma função completa
Eis como eu guardo meus dados de pedido
É simples, ponha-o na biblioteca.
O tipo de uma ordem a ser contada e seu mestre é dado como entrada, ele retorna o número de ordens abertas ou definidas.
Você pode utilizá-lo da seguinte maneira
if ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
Não é complicado colocá-lo na biblioteca.
A entrada é o tipo de ordem a ser contada e seu mestre, ele retorna o número de ordens abertas ou definidas.
Isto pode ser usado da seguinte maneira
if ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
Eu tenho essa função e não preciso dela, só preciso
apenas uma linha "se houver mais pedidos do que um .... então" e é isso
meus dados para a mesma função que você mostrou estão armazenados aqui
e aqui está o que parece
Acho que consegui.
static int aaa = OrdersHistoryTotal()+ OrdersTotal()
se (sua condição && aaaa < OrderHistoryTotal()+ OrderTotal() )
{
operadores
aaa=OrdensHistóriaTotal()+ OrdensTotal()
}
Se assim for, é ainda melhor colocá-lo em uma função com os mágicos em mente. Você pode nos dizer em que está trabalhando? A lógica é um pouco estranha se eu acertar, quando mais um pedido é aberto, não é mais fácil abrir pedidos não maiores que OpenPosition?
Sua função retorna o número total de ordens abertas e ordens pendentes. Quantas ordens OP_BUY, se houver OP_BUYLIMIT OP_SELLLLIMIT OP_SELLL etc. não aparece.
Já descobri, agora o problema com a função if é que não consigo descobrir qual é o problema.
a questão é que o primeiro valor é executado.
Este não funciona se (HaveBuyLimitOrderEnd== verdadeiro)
{ModifyBuyStopOrder(PRAskS); // Selecione
} }
em palavras, se houver um pedido HaveBuyLimitOrderEnd, modifique-o com uma mudança de preço PRAskS
Não consigo descobrir o que está errado. Tomo o valor HaveBuyLimitOrderEnd de void Myorders() no código acima
o valor if(bt===1&&bl====7) é principal, portanto, se for verdade, use todos os seguintes
o mais provável é terBuyLimitOrderEnd== verdadeiro porque eu defini OrderLots()==3*Lot all work apenas modifica os pedidos com 0,3 lote
Observe o que está destacado em vermelho . O tipo de ordens comerciais é o mesmo e as variáveis no tubo são diferentes, é assim que deve ser.
Sim, deve ser, porque há diferentes funções de abertura e eu não faço um pedido de OrderType () e pedi a bandeira se ela está aberta, mas o problema não está nesta função porque os outros pedidos também não funcionam esta que eu lancei pela primeira vez, E NA MESMA FUNÇÃO ABERTA NORMALMENTE
ENTÃO O PROBLEMA É COM O PEDIDO NO OPERADOR
O problema parece estar em outro lugar. Mas você provavelmente deveria ver o código.
O problema parece estar em outro lugar. Mas eu acho que preciso ver o código.
Definitivamente não está em outro lugar, tudo o resto funciona, mas o problema é que o pedido (HaveBuyLimitOrderEnd=== verdadeiro) está errado, então estou me perguntando como dizer para modificar e excluir,
ou a própria consulta está errada
if(bs===1&&bl====3)
{OpenBuyLimitOrderEnd(Lot*15,PRAskL);
se (HaveBuyLimitOrderEnd== verdadeiro)
{ModifyBuyStopOrder(PRAskS);
} }
Sim, deve ser, porque existem diferentes funções de abertura e eu não faço um pedido de OrderType () e pedi a bandeira se ela está aberta, mas o problema provavelmente não está nesta função porque os outros pedidos também não funcionam esta que eu lancei pela primeira vez, E NA MESMA FUNÇÃO ABERTA NORMALMENTE
ENTÃO O PROBLEMA É COM A CONSULTA NO OPERADOR
Será que em funções marcadas em vermelho HaveBuyLimitOrderEnd está definido no tubo? Caso contrário, você precisa ligar para Myorders() antes de if. Caso contrário, você não sabe o que existe. E, só por precaução, as bandeiras (variáveis)
HaveBuyOrder = falso;
HaveSellOrder = falso;
HaveBuyStopOrder = falso;
HaveSellStopOrder = falso;
HaveBuyLimitOrder = falso;
HaveSellLimitOrder = falso;
HaveBuyLimitOrderEnd = falso;
HaveSellLimitOrderEnd = falso;
deve ser definido a nível global .
Pergunto-me se a bandeira HaveBuyLimitOrderEnd está colocada em vermelho no cano. Caso contrário, você precisa chamar Myorders() antes de if. Caso contrário, você não sabe o que existe. E só por precaução, bandeiras (variáveis)
HaveBuyOrder = falso;
HaveSellOrder = falso;
HaveBuyStopOrder = falso;
HaveSellStopOrder = falso;
HaveBuyLimitOrder = falso;
HaveSellLimitOrder = falso;
HaveBuyLimitOrderEnd = falso;
HaveSellLimitOrderEnd = falso;
deve ser definido globalmente.
está a um nível glabal
bool HaveBuyOrder; // bandeira se houver ordens de compra no mercado aberto
bool HaveSellOrder; // bandeira de ordens de mercado aberto para vender
bool HaveBuyStopOrder; // bandeira de ordens de compra em aberto pendentes
bool HaveSellStopOrder; // bandeira de ordens pendentes de venda
bool HaveBuyLimitOrder; // bandeira de ordens de compra em aberto pendentes
bool HaveSellLimitOrder; // bandeira de ordens pendentes Sell
bool HaveBuyLimitOrderEnd; // bandeira de presença de ordens de compra em aberto pendentes
bool HaveSellLimitOrderEnd; // bandeira pendente Ordens de venda abertas
está na função de abertura da ordem.
bilhete = OrderSend(Curr_symb,OP_BUYSTOP, Lot, PRAskS, Slippage, SL, TP, 0, Magic, 0, CLR_NONE);
se (bilhete > 0) {
HaveBuyStopOrder = verdadeiro;
se (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) Imprimir("função para colocar um pedido BuyStop : ", OrderOpenPrice())
}
else Print("Error # ", GetLastError(), " function for placing BuyStop order",MarketInfo(Curr_symb,MODE_ASK));
retorno(bilhete);
}
ENTÃO TUDO O RESTO FUNCIONA