[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 105
Antes do próximo fechamento, você faz uma verificação:
se (!TP1) {código para fechamento parcial da primeira parte, após fechamento bem sucedido escreva TP1=verdadeiro}
se (!TP2) {código para fechar parcialmente a segunda parte, após um fechamento bem sucedido escreva TP2=verdadeiro}
... e assim por diante para todas as partes...
Assim, as bandeiras sinalizarão que cada parte já foi fechada uma vez.
Obrigado! Reformulou o código... TP0===falso Coloquei-o no início do programa .
O problema permanece: 1ª parte fecha e imediatamente começa a fechar 2ª :-( ..., com erro 131 para segunda, compreensível - tamanho de lote diferente ) Mas outra nuance é que para 1ª parte ""Alerta ("Fechado ",Lote," Compra de Lote ",Bilhete);""" não escreve em log, ou seja, não chega à verificação Ans===verdadeiro. Por que ???? Abaixo está um pedaço de código...
Obrigado de antemão!
while(true) // Fechar o laço da horda. { if (TP0===falso && (Cls_B0===verdadeiro ||Cls_S0===verdadeiro))
{ LotC=MathRound(Lot/4/Step)*Step; Alert("Lot-",Lot, "Attempting to close-",LotC," Lot Buy ",Ticket,". À espera de resposta...");
RefreshRates(); // Refresh data Ans=OrderClose(Ticket,LotC,Bid,5); // TicketClose Buy 1/3 lots? if (Ans===verdadeiro) // Funcionou :) { TP0=verdadeiro; Alerta ("Fechado ",Lote," Compra de Lote ",Bilhete); quebra; // Sair do circuito fechado } se (Fun_Error(GetLastError())==1) // Tratamento de erros continuar; // Tentativa retornar; // Sair do início() }
Ajude, por favor. O indicador desenha valores sobre uma divergência latente em alta, e não desenha uma latente.... em baixa. Ele escreve, esse erro 4002 - índice de matriz - fora da faixa.
Parece que já consertei tudo... Levei uma noite inteira... E é uma vergonha - o código é o mais simples... Mas é desenhar touros com flechas, mas não ursos. POR FAVOR! Qual é o erro em 14?????????????????????
Alena,
Você precisa alocar memória para arrays vpadcci[], v[], hh[], ss[]. Eles são declarados dinâmicos, mas seu tamanho não é especificado em nenhum lugar. O tamanho de uma matriz dinâmica é especificado usando a função ArrayResize().
P.S. E por favor, use o botão SRC para inserir o código
Snaf: Pergunta para MT5. Como posso saber que o Strategy Tester completou seu trabalho? Exceto visualmente :)
A função deinit() é executada quando o trabalho é concluído. Consequentemente, se chegarmos lá, isso significa que o trabalho do especialista está terminado. Para determinar se o trabalho no testador está em andamento, use a função IsTesting().
Desculpe, eu notei que esta pergunta está relacionada ao MT5.
É o mesmo lá, somente OnDeinit() e MQL5InfoInteger(MQL5_TESTING).
Você precisa alocar memória para as arrays vpadcci[], v[], hh[], ss[]. Eles são declarados dinâmicos, mas seu tamanho não é especificado em nenhum lugar. O tamanho de uma matriz dinâmica é definido usando a função ArrayResize().
P.S. E por favor use o botão SRC para inserir o código
Muito obrigado pela resposta, eu vou dar uma olhada!
вопрос програмистам: как сделать число после запятой целым?:)
например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)
exnern double n=1,12
n-=MathFloor(n); // 0.12 = 0.1200000..01 или 0.11999999..99int n2=MathRound(n*1000); // 0.12 > 120 или 119while(true) // пока в конце 0 или 9if(n2%10<1) // n2==хз*10+0
n2/=10; else// убираем 0if(n2%10==9) // n2==хз*10+9
{n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)elseif(n2%10>0) break;
Foi assim que resolvi. Um menos - você não pode obter um número se terminar em 0 ou 9. Mas eu não preciso, eu apenas entro no período de cálculo (4,8,12,16,24,36,48 etc.)
Favor informar como registrar corretamente que a cor do indicador VininI LRMA.mq4 https://www.mql5.com/ru/code/8200 mudou.
Se você usar iCustom duplo ( símbolo de corda, int timeframe, nome da corda, ..., modo int, int shift). Eu não consigo entender. Eu escrevi iCustom(NULL,0, "VininI_LRMA_color",55,0,1) e não sei o que fazer com ele))
Os valores das linhas estão nos buffers indicadores 1 (verde) e 2 (vermelho). Quando uma linha verde é desenhada no gráfico, a variável acima na barra 1 tem o valor desta linha, e a variável dn=EMPTY_VALUE e vice versa. EMPTY_VALUE é um valor tampão vazio, seu valor numérico é 2147483647. Você pode então usar estes valores como desejar.
veja aqui: https: //docs.mql4.com/ru/basis/operations/math
Você também pode fazer isso.
não seria igual a um?
Eu verifiquei. Um.
Criar bandeiras, por exemplo,
Para TP1 é bool TP1, para TP2 é bool TP2, etc...
Inicialmente seus valores são falsos.
Antes do próximo fechamento, você faz uma verificação:
se (!TP1) {código para fechamento parcial da primeira parte, após fechamento bem sucedido escreva TP1=verdadeiro}
se (!TP2) {código para fechar parcialmente a segunda parte, após um fechamento bem sucedido escreva TP2=verdadeiro}
... e assim por diante para todas as partes...
Assim, as bandeiras sinalizarão que cada parte já foi fechada uma vez.
Obrigado! Reformulou o código... TP0===falso Coloquei-o no início do programa .
O problema permanece: 1ª parte fecha e imediatamente começa a fechar 2ª :-( ..., com erro 131 para segunda, compreensível - tamanho de lote diferente ) Mas outra nuance é que para 1ª parte ""Alerta ("Fechado ",Lote," Compra de Lote ",Bilhete);""" não escreve em log, ou seja, não chega à verificação Ans===verdadeiro. Por que ???? Abaixo está um pedaço de código...
Obrigado de antemão!
while(true) // Fechar o laço da horda.
{
if (TP0===falso && (Cls_B0===verdadeiro ||Cls_S0===verdadeiro))
{
LotC=MathRound(Lot/4/Step)*Step;
Alert("Lot-",Lot, "Attempting to close-",LotC," Lot Buy ",Ticket,". À espera de resposta...");
RefreshRates(); // Refresh data
Ans=OrderClose(Ticket,LotC,Bid,5); // TicketClose Buy 1/3 lots?
if (Ans===verdadeiro) // Funcionou :)
{
TP0=verdadeiro;
Alerta ("Fechado ",Lote," Compra de Lote ",Bilhete);
quebra; // Sair do circuito fechado
}
se (Fun_Error(GetLastError())==1) // Tratamento de erros
continuar; // Tentativa
retornar; // Sair do início()
}
Caros programadores!
Ajude, por favor. O indicador desenha valores sobre uma divergência latente em alta, e não desenha uma latente.... em baixa. Ele escreve, esse erro 4002 - índice de matriz - fora da faixa.
Parece que já consertei tudo... Levei uma noite inteira... E é uma vergonha - o código é o mais simples... Mas é desenhar touros com flechas, mas não ursos. POR FAVOR! Qual é o erro em 14?????????????????????
Alena,
Você precisa alocar memória para arrays vpadcci[], v[], hh[], ss[]. Eles são declarados dinâmicos, mas seu tamanho não é especificado em nenhum lugar. O tamanho de uma matriz dinâmica é especificado usando a função ArrayResize().
P.S. E por favor, use o botão SRC para inserir o código
Pergunta para MT5. Como posso saber que o Strategy Tester completou seu trabalho? Exceto visualmente :)
A função deinit() é executada quando o trabalho é concluído. Consequentemente, se chegarmos lá, isso significa que o trabalho do especialista está terminado. Para determinar se o trabalho no testador está em andamento, use a função IsTesting().
Desculpe, eu notei que esta pergunta está relacionada ao MT5.
É o mesmo lá, somente OnDeinit() e MQL5InfoInteger(MQL5_TESTING).
Alena,
Você precisa alocar memória para as arrays vpadcci[], v[], hh[], ss[]. Eles são declarados dinâmicos, mas seu tamanho não é especificado em nenhum lugar. O tamanho de uma matriz dinâmica é definido usando a função ArrayResize().
P.S. E por favor use o botão SRC para inserir o código
Muito obrigado pela resposta, eu vou dar uma olhada!
Favor informar como registrar corretamente que a cor do indicador VininI LRMA.mq4 https://www.mql5.com/ru/code/8200 mudou.
Se você usar iCustom duplo ( símbolo de corda, int timeframe, nome da corda, ..., modo int, int shift). Eu não consigo entender. Eu escrevi iCustom(NULL,0, "VininI_LRMA_color",55,0,1) e não sei o que fazer com ele))
Os valores das linhas estão nos buffers indicadores 1 (verde) e 2 (vermelho). Quando uma linha verde é desenhada no gráfico, a variável acima na barra 1 tem o valor desta linha, e a variável dn=EMPTY_VALUE e vice versa. EMPTY_VALUE é um valor tampão vazio, seu valor numérico é 2147483647.
Você pode então usar estes valores como desejar.
Podemos criar uma EA que feche todas as ordens quando o take-profit da última ordem aberta disparar?