[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 285
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
Talvez a função https://www.mql5.com/ru/forum/107476/page21 possa ajudar.
Função isCloseLastPosByTake().
Esta função retorna uma bandeira para fechar a última posição na tomada.
Flag up - True - TakeProfit foi acionado.
Bandeira arriada - Falsa - posição foi fechada devido a outro motivo.
A função em si deve ser colocada logo no final do código. Eu também acrescento à condição de vender:
Bom dia, noite ou manhã para todos VOCÊS.
Eu fiz tudo como o escrevi. Coloquei a função no final do código e a acrescentei às minhas condições de venda.
Pensei nisso e o acrescentei para comprar. Os pedidos serão fechados não somente pela BUY, mas também pela SHELL.
Eu inseri a função isCloseLasPosByTake() no final.
Aqui está uma torta, ou como estava dizendo pfc Gotsman pintura a óleo. ajude o boneco a sair.... não sabe nada.......
o próprio código (ou seja, apenas o início)
Eu escrevi especificamente no meu posto. Que esta função éCloseLastPosByTake() - deve ser colocada no final do código, ANTES da FUNÇÃO DE INÍCIO!
E onde você o colocou?
E tenha cuidado com os parênteses encaracolados nas condições de compra e venda. É claro que estão faltando lá (verifique - que o número de parênteses abertos é igual ao número de parênteses fechados). Aqui foi corrigida a venda :
Bom dia!!!
Eu preciso de ajuda! Peço desculpas por não ter sido modesto.
Mas aqui está meu problema, tenho um EA que é baseado em um Martin, ele coloca a primeira encomenda VENDA ou COMPRA, o que eu quiser, mas eu quero poder escolher COMPRAR ou VENDER em propriedades EA. Isto é, eu coloco, por exemplo, COMPRAR em suas propriedades e abre um pedido de COMPRA apenas, ou o contrário.
Receio ainda não ter aprendido a programar na MQL4 .
Estou anexando o próprio conselheiro.
Agradecemos antecipadamente àqueles que responderão!
Eu escrevi especificamente no meu posto. Que esta função éCloseLastPosByTake() - deve ser colocada no final do código, ANTES da FUNÇÃO DE INÍCIO!
E onde você o colocou?
E preste mais atenção com parênteses curvos nas condições de compra e venda. É claro que estão faltando lá (verifique - que o número de parênteses abertos é igual ao número de parênteses fechados). Aqui está a solução para a venda :
Coloquei-o depois do início fi, por isso entendo.....
Enganei-me então, obrigado pelo cutucão :-))
Se eu acertei, deve ser colocado após } no final do bloco de função de desinicialização de especialistas ??????? ou após o retorno(0); no final mesmo do start-???????
Obrigado antecipadamente por sua paciência!!!!!!!!!
Coloquei-a após a função de início, portanto entendo.....
Enganei-me, obrigado pelo cutucão :-))
Se entendi corretamente, deve ser colocado após } no final do bloco de função de desinicialização de especialistas ??????? ou após o retorno(0); no final mesmo do início-???????
Obrigado antecipadamente por sua paciência!!!!!!!!!
Deve ser colocado do lado de fora. Não dentro de qualquer função, - mas como uma função independente separada.
Assim:
Não tenho certeza de que sob estas condições, o Assessor Especialista irá trabalhar. Porque a primeira posição não poderá ser aberta.
A função éCloseLastPosByTake() deve ser removida de uma condição de Compra ou Venda.
Então o assessor trabalhará.
Bom dia!!!
Mas aqui está meu problema, tenho um EA que é baseado em um Martin, ele coloca a primeira encomenda VENDA ou COMPRA, o que eu quiser, mas eu quero poder escolher COMPRAR ou VENDER em propriedades EA. Isto é, eu coloco por exemplo COMPRAR em suas propriedades e abre um pedido de COMPRA apenas, ou vice versa.
Estou anexando a própria EA.
Agradecemos antecipadamente a todos que responderem!
É improvável que alguém responda. A EA é descompilada (hackeada) e tais arquivos não são bem-vindos aqui...
Isto é, o navegador padrão
ShellExecute, o comando "aberto", por assim dizer.
Decidi estudar a MQL 4, uma vez que tudo o que encontrei não corresponde às minhas aspirações. No momento estou estudando a fim de entender como os profissionais trabalham e melhorá-lo para minha idéia. Há uma função personalizada (simples e pequena, uma página), o código é anexado. Devido ao meu amadorismo, não consigo entender por dois dias - o que esta função retorna como resultado, e qual condição aninhada é a Otra?
Alguém gostaria de plantar uma centelha de conhecimento no meu entorpecimento?
O que eu recebo é isto:
O objetivo da função é determinar se já existe um pedido feito para este par e, se existe, determinar seu tipo.
A função que chamou esta função aguarda a presença de uma das ordens selecionadas no procedimento interruptor, A função deve retornar "1", na presença de duas ordens - "2", e na ausência de ordens "-1".
O ciclo é iniciado se l_pos_16= 0. Vamos assumir que temos quatro pedidos pendentes no total para alguns pares, incluindo dois no par onde a EA está trabalhando e eles não são os primeiros.
Entretanto, na primeira iteração do laço, a função if(OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) Verifique a posição com o número "0" na lista de ordens, mas não existe tal posição (porque entendo que a numeração começa a partir da posição 1) e depois passará para a próxima. senão com saída completa de fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12) com retorno do valor Retorno(-1).
Para meu entendimento, o sentido da função como um todo se perde, uma vez que o resultado deve ser o mesmo, quer haja ou não qualquer ordem para o par .
Entretanto, quando a EA funciona, esta função define e dá a você o que a chamada função espera dela, que então funciona de acordo com o resultado obtido .
Eu também não entendo o que senão Retorno(-1) trabalhará em
se (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
Ou mesmo em if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
O código da função :
int fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12)
a_count_0= 0;
a_count_4 = 0;
a_count_8 = 0;
a_count_12 = 0;
gi_252 = 0;
para (int l_pos_16 = 0; l_pos_16 < OrderTotal(); l_pos_16++) {
se (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
switch (OrderType()) caso OP_BUY:
a_count_0+++;
gi_252 = 1;
g_ticket_268 = OrderTicket();
gs_272 = OrderComment();
g_ord_open_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
pausa;
caso OP_SELL:
a_count_4++;
gi_252 = -1;
g_ticket_268 = OrderTicket();
gs_272 = OrderComment();
g_ord_open_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
pausa;
caso OP_BUYSTOP:
a_count_8++;
pausa;
caso OP_SELLSTOP:
a_count_12++;
}
}
} caso contrário, retornar (-1);
}
retorno (a_count_0 + a_count_4 + a_count_8 + a_count_12);
/* execução normal do f-i retornará um na variável em um dos caso e "0" em todos os outros, o que indica que há um de
dos tipos de pedido, e o número deste pedido está disponível para a função de chamada,
comentar, abrir preço, parar perdas e ter lucro */
}