Eu posso dizer de tudo que o NomNews entra no loop já em um estado maior que 999. Então você precisa descobrir por que isso acontece e reiniciar essa variável em algum lugar.
Excesso((2*psd*usd)*((2*psd*usd)-C))/(C-1)) na fórmula.
Para exponenciar: ^0,5 não é *0,5
Se não houver um único comércio sobre o símbolo e majik, ou não houver um único lucro ou perda, ou houver apenas um par (C=1), obteremos a divisão por 0.
Antes da fórmula em si, você deve verificar se psd e usd são > 0, e C !=1
Os pares rentáveis são calculados com lucro > 1, perda < 1, com lucro=1 não são analisados, ou seja, 1 também tem que ser incluído em algum lugar neste ou naquele grupo.
Em sua função, seria melhor primeiro selecionar números de transação correspondentes ao símbolo e ao número mágico e depois verificar se o número deles mudou, se sim - recalcular zn, se não - retornar zn (zn neste caso não zerar e verificar != 0 não será necessário ao imprimir)
A coruja deixa de funcionar, porque se baseia nas variáveis ww e nn, e quando sua função funciona, elas mudam e quebram o algoritmo da coruja.
Nada teria sido compilado se tivesse havido um erro de projeto de código.
Só posso dizer obrigado. Este é o único lugar no runet onde eles me ajudaram.
Agora a impressora gera o seguinte "Stop_Ma_v_5.1 EURUSD,M15: == contagem Z igual a = -nan(ind)" . Você poderia informar o que isso significa e o código deve retornar o número?
Código :
//+------------------------------------------------------------------+//| Подсчёт z-вероятности. @axe44 Алексей Корольков |//+------------------------------------------------------------------+double Z()
{
zn=0; // z-число
psd=0; // кол. положительных сделок
usd=0; // количество отрицательных сделок
www=0; // боол переменная
nnn=0; // боол переменная
kolichestvo=0; // подсчёт закрытых ордеров открытых роботом
C=0; // C = количество чередований между отрицательными и положительными сделками
index=OrdersHistoryTotal();
if(OrdersHistoryTotal()>302) index=301; // берём не более 301 сделки//if(index<30) return(0); // берём не менее 30
count=OrdersHistoryTotal(); // считаем от скольки
prom=count-index; // выделяем только последние сделкиif (prom<0) prom=0; // исключаем ошибкиfor( i=prom;i<=count;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{// далее магия
pribul=OrderProfit();
if (ww==0&&pribul>1){C++;www=1;nnn=0;}// подсчитываем смену тенденцииif (nn==0&&pribul<1){C++;www=0;nnn=1;}// подсчитываем смену тенденции if (pribul>1){psd++;}//прибыльные сделкиif (pribul<1){usd++;}// убыточные сделки
kolichestvo++;
}
}
}
/*
Величина Z = (A * (C — 0.5) — B)/ ((B*(B — C))/(C -1))^(1/2), где:
A = количество анализируемых сделок;
B = 2*количество прибыльных сделок * количество убыточных сделок;
C = количество чередований в выборке (чередованием считается каждая пара сделок,
когда прибыльная сделка сменяет убыточную либо наоборот).
*/if(kolichestvo>30&&psd>0&&usd>0&&C!=1)
zn=(index*(C-0.5)-2*psd*usd) / pow(((2*psd*usd*(2*psd*usd-C))/(C-1)),0.5);
return(zn);
}
Pessoal do Mql5, vocês podem me ajudar a fazer um pedido para fechar uma posição em uma conta de hedge? Situação: aberta posição BUY, precisamos fechá-la com Sell Limit. Pergunta: Como faço para escrever corretamente um pedido, para fechar exatamente a posição escolhida e não para abrir um novo bloqueio de VENDA COMPRAR? Por favor, escreva um pedaço de código com comentários! Agradecemos antecipadamente!
Fechamento por uma ordem aberta de outra ordem aberta para o mesmo símbolo, mas em direção oposta.
boolOrderCloseBy( intticket,// número de ordem para fechar emoposto,// número da ordem oposta corseta_color// cor );
Parâmetros
bilhete
[em] Número de pedido único do pedido a ser fechado.
em frente
[Um número de seqüência único da ordem oposta.
arrow_color
[A cor da seta de fechamento na tabela. Se este parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Valor retornado
Retorna verdadeiro se a função foi bem sucedida ou falso se houve um erro. Para obter as informações de erro, ligue para GetLastError().
Só posso dizer obrigado. Este é o único lugar no runet, onde eles ajudaram.
Agora a impressora gera o seguinte "Stop_Ma_v_5.1 EURUSD,M15: == Z-Account Equals = -nan(ind)". Você poderia informar o que isso significa e o código deve retornar o número?
Código :
Obrigado
Nan - NaN - Não é um número - Não é um número. Tente normalizar os números no cálculo Z
Não. Quaisquer perguntas sobre mql4 bem como mal5 são tratadas aqui neste tópico, porque o principal objetivo era ajudar não apenas com algoritmos e códigos, mas também facilitar a migração de mql4 para mql5.
A mensagem ainda aparece no 12º minuto.
Inserir impressão, no início da função onde a matriz é preenchida
e mostrar o número de valores na segunda dimensão
Eu posso dizer de tudo que o NomNews entra no loop já em um estado maior que 999. Então você precisa descobrir por que isso acontece e reiniciar essa variável em algum lugar.
Para verificar isso, escreva-o no início do laço:
Sim, no 11º minuto a impressão é de 1000.
Inserir impressão, no início da função onde a matriz é preenchida
e mostrar o número de valores na segunda dimensão
Eu o inseri no iníciodo laço While e fiquei comalcance infinito= 1000. Eu o inseri no lugar errado?
Qual é este número (ou função?): data/hora TimeNewsFunck(int nomf)
{
string s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),"",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4));
return((datetime)(StringToTime(time) + GMTplus*3600))
}
E de onde vem o valor do int nomf ? Não consegui encontrá-lo.
Inseri-o no iníciode Whileloop e fiquei comalcance infinito= 1000. Coloquei-o no lugar errado?
Qual é este número (ou função?): data/hora TimeNewsFunck(int nomf)
{
string s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),"",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4));
return((datetime)(StringToTime(time) + GMTplus*3600))
}
E de onde vem o valor do int nomf ? Eu não o encontrei.
E depois há a função que eu tentei, mas não consegui descobrir. Pode ser a fonte do problema?
E depois há uma função que ainda não consegui descobrir, por mais que eu tenha tentado. Talvez seja aí que reside o problema?
Somente o próprio autor descobrirá isso. É melhor você enviar o código da OnTick()
Sim, no 11º minuto deu impressão de 1000.
Tente substituir
com esta linha.
Excesso((2*psd*usd)*((2*psd*usd)-C))/(C-1)) na fórmula.
Para exponenciar: ^0,5 não é *0,5
Se não houver um único comércio sobre o símbolo e majik, ou não houver um único lucro ou perda, ou houver apenas um par (C=1), obteremos a divisão por 0.
Antes da fórmula em si, você deve verificar se psd e usd são > 0, e C !=1
Os pares rentáveis são calculados com lucro > 1, perda < 1, com lucro=1 não são analisados, ou seja, 1 também tem que ser incluído em algum lugar neste ou naquele grupo.
Em sua função, seria melhor primeiro selecionar números de transação correspondentes ao símbolo e ao número mágico e depois verificar se o número deles mudou, se sim - recalcular zn, se não - retornar zn (zn neste caso não zerar e verificar != 0 não será necessário ao imprimir)
A coruja deixa de funcionar, porque se baseia nas variáveis ww e nn, e quando sua função funciona, elas mudam e quebram o algoritmo da coruja.
Nada teria sido compilado se tivesse havido um erro de projeto de código.Só posso dizer obrigado. Este é o único lugar no runet onde eles me ajudaram.
Agora a impressora gera o seguinte "Stop_Ma_v_5.1 EURUSD,M15: == contagem Z igual a = -nan(ind)" . Você poderia informar o que isso significa e o código deve retornar o número?
Código :
Pessoal do Mql5, vocês podem me ajudar a fazer um pedido para fechar uma posição em uma conta de hedge? Situação: aberta posição BUY, precisamos fechá-la com Sell Limit. Pergunta: Como faço para escrever corretamente um pedido, para fechar exatamente a posição escolhida e não para abrir um novo bloqueio de VENDA COMPRAR? Por favor, escreva um pedaço de código com comentários! Agradecemos antecipadamente!
Fechamento por uma ordem aberta de outra ordem aberta para o mesmo símbolo, mas em direção oposta.
boolOrderCloseBy(
intticket,// número de ordem para fechar
emoposto,// número da ordem oposta
corseta_color// cor
);
Parâmetros
bilhete
[em] Número de pedido único do pedido a ser fechado.
em frente
[Um número de seqüência único da ordem oposta.
arrow_color
[A cor da seta de fechamento na tabela. Se este parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Valor retornado
Retorna verdadeiro se a função foi bem sucedida ou falso se houve um erro. Para obter as informações de erro, ligue para GetLastError().
Exemplo:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id;)
retorno(0);
}
P.S. Esta rosca só analisa MQL4
Só posso dizer obrigado. Este é o único lugar no runet, onde eles ajudaram.
Agora a impressora gera o seguinte "Stop_Ma_v_5.1 EURUSD,M15: == Z-Account Equals = -nan(ind)". Você poderia informar o que isso significa e o código deve retornar o número?
Código :
O fechamento de uma ordem aberta por outra ordem aberta para o mesmo instrumento, mas na direção oposta.
boolOrderCloseBy(
intticket,// número de ordem para fechar
emoposto,// número da ordem oposta
corseta_color// cor
);
Parâmetros
bilhete
[Um número seqüencial único do pedido sendo fechado.
em frente
[Um número de seqüência único da ordem oposta.
arrow_color
[A cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Valor retornado
Retorna verdadeiro se a função foi bem sucedida ou falso se houve um erro. Para obter as informações de erro, ligue para GetLastError().
Exemplo:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id;)
retorno(0);
}
P.S. Esta rosca só analisa MQL4
Não. Quaisquer perguntas sobre mql4 bem como mal5 são tratadas aqui neste tópico, porque o principal objetivo era ajudar não apenas com algoritmos e códigos, mas também facilitar a migração de mql4 para mql5.