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
kombat 17.07.2009 22:13
Some, compre 3 lotes e contraponha este volume venda 3 lotes
.......................
Como opção, sim. Embora, se já houver ordens de venda abertas, a EA pode fechar não as que você precisa. Deve ser resolvido.
kombat 17.07.2009 22:13.
Mas para responder à sua pergunta: é possível fechar todas as posições?
sim é, um por um, é um roteiro rápido, aap! e é isso aí...
.........................
É isso que estou usando agora. Um conjunto de scripts - você usa este, depois aquele... Mas eu tentei codificar minha estratégia em Expert Advisor e encontrei uma série de dificuldades.
Eu tenho algo que não funciona aqui, significa que não fecha nenhum erro.
Na função ClosePositions(), sua biblioteca b-Positions.mqh, KimIV usa uma chamada para sua outra função ClosePositionsBySelect() que proíbe o uso de ee no testador :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Para testes de história use sua biblioteca b-ForTest.mqh
Na função ClosePositions(), sua biblioteca b-Positions.mqh, KimIV usa uma chamada para sua outra função ClosePositionsBySelect() que proíbe o uso de ee no testador :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Para testes de história, use sua biblioteca b-ForTest.mqh
Você entendeu mal meu código... Traduzindo para russo... Se NÃO for permitido o modo de teste AND (EA NÃO é permitido negociar OU o Expert Advisor é interrompido), então aborte o loop. Para simplificar, esta linha garante a saída do loop, quando você pressiona o botão "Expert Advisors" na barra de ferramentas.
Boa noite,
Infelizmente, há também uma discrepância com a matriz... Quando a contagem dos pedidos é feita com uma condição se os lotes forem maiores que 0 (Lts>0), os lotes são fechados um a um (quando o lucro foi alcançado), mas o lucro total deve ser levado em conta:
E em condições de contagem de pedidos, se os lotes forem mais de 1 (Lts>1), os lotes não são fechados:
Favor informar quem pode ver o erro.
Ou talvez, Igor, eu tenha um mal-entendido em usar sua função?
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Função de chamada
Igor, por favor me diga como inserir sua função PriceOpenLastPos no indicador.
Ao compilar o editor dá erro no primeiro colchete e nas variáveis subseqüentes.
double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy===") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
} }
return(r);
}
}
(' - definição de função inesperada D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - variável não definida D:\MT4\experts\Astrea.mq4 (632, 7)
etc.
Eu implemento a lógica de formação de sinais de negociação em um indicador e envio o sinal gerado para o Expert Advisor através de uma variável global para abrir/fechar ordens.
Eu preciso do preço aberto de uma ordem para tomar algumas decisões, por isso estou tentando fazer isso. Meu indicador é dinâmico e só pode ser depurado em modo de demonstração ou em modo de visualização em um testador.
A imagem é que não é o lucro total que é levado em conta, mas o lucro dos pedidos individuais.
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Chamada de função
Parâmetro incorreto passando para a função. Deveria ser assim:
Parâmetro incorreto passando para a função. Deveria ser assim:
Acrescentar uma ligação ao símbolo na chamada de função não ajuda. Por que conta o lucro para cada posição separadamente (foto acima)?