[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

 
abolk:
veja aqui: https: //docs.mql4.com/ru/basis/operations/math
Já analisei tudo. Como resolver meu problema?
 
Zhunko:
Você também pode fazer isso.

não seria igual a um?

Eu verifiquei. Um.

 
artmedia70:
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()
}

 
Sinichka:

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

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

 
alsu:

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!
 
eddy:

вопрос програмистам: как сделать число после запятой целым?:)

например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)

exnern double n=1,12
n-=MathFloor(n);          // 0.12 = 0.1200000..01 или 0.11999999..99
int n2=MathRound(n*1000); // 0.12 > 120 или 119
while(true)               // пока в конце 0 или 9
 if(n2%10<1)              // n2==хз*10+0
    n2/=10; else          // убираем 0
 if(n2%10==9)             // n2==хз*10+9
   {n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)
 else if(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.

double up=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,1,1); 
double dn=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,2,1); 
 
Poseidon:
Podemos criar uma EA que feche todas as ordens quando o take-profit da última ordem aberta disparar?
Sou apenas um principiante e não sei como fazer isso. Você pode fazer isso por mim, se não se importa?