Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 574
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
A ideia de abrir encomendas num sinal de compra ou de aderência, como fazer para que haja apenas uma transacção de compra/venda e uma transacção de encomenda pendente, eu tenho uma aberta em cada tic da transacção. Ajudar a resolver o problema.
Bem, aqui está outra forma de o fazer: são escritos fósforos para cada vela da gama. Na versão anterior, os fósforos foram escritos apenas para uma vela - ou seja, não foi escrito nenhum fósforo para aquele que correspondia a esta.
Artem, obrigado. Vou estudar o assunto.
Os valores altos podem ser arredondados, por exemplo, podemos arredondar o valor 1,23456 para 1,2346.
Estou a ver o que quero dizer. Também adiciono uma variável nas definições em que se pode prescrever o desvio dentro do qual os valores de alta são considerados iguais. É necessário porque para citações de 4 dígitos muitas vezes não existe tal problema, mas para citações de cinco dígitos para procurar correspondências exactas é infinitamente possível.
Artem, obrigado. Vou analisar a questão.
O arredondamento é claro. Coloco também uma variável nas definições, na qual poderei prescrever o valor do desvio, dentro do qual os Altos valores são considerados iguais. É necessário, porque para citações de 4 dígitos muitas vezes não existe tal problema, mas para citações de cinco dígitos à procura de correspondências exactas é interminável.
De nada. Fiz uma imprecisão na segunda versão. Uma vez que na primeira versão estávamos a procurar as partidas a partir da vela seguinte do índice do laço, a passagem do laço principal era pelo número de velas menos uma para comparar as duas velas mais exteriores. Agora, na segunda versão, para cada um dos castiçais procuramos fósforos em toda a gama, por isso, na linha
deve alterar o número de barras para
Verifique o número de ordens definidas e o número de posições em aberto antes de abrir uma nova posição ou colocar uma nova ordem pendente.
ou seja, é necessário acrescentar uma condição para verificar o número de ordens e posições nas condições para uma transacção?
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&h2>h1&h1<o2&o1<c1&&l2>l1&&o3>c3&&o4>c4){ //first condition
se (OrderTotal()==0) //segundo estado
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0); } ................................... e assim para cada comércio?
E que função conta o número de posições em aberto?
Penso ter resolvido o problema:
se (Hora()>=0&Hora()<23){
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
se (PositionsTotal()<=1)
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0); } //abre a compra
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
se (PositionsTotal()==1&OrderType()==0)
OrderSend(Symbol(), OP_SELLSTOP,Lot,l2,10,h2,0);} //Postponed SellStop encomenda
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
se (PositionsTotal()<=1)
OrderSend(Symbol(),OP_SELL,Lot,o,10,h1,0); } //abre Sell
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
se (PositionsTotal()==1&OrderType()==1)
OrderSend(Symbol(), OP_BUYSTOP,Lot,h2,10,l2,0);} //Pós-encomenda de BuyStop
}
//+------------------------------------------------------------------+
//Função que devolve o montante total de posições em aberto |
// |
//+------------------------------------------------------------------+
int PosiçõesTotal() {
int pos = 0;
para (int i=0; i<OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
se (OrderType() == OP_BUY || OrderType() == OP_SELL)
pos++;
}
devolução(pos);
}
//+------------------------------------------------------------------+
Bem, aqui está outra forma de o fazer: são escritos fósforos para cada vela da gama. Na versão anterior, os fósforos foram escritos apenas para uma vela - ou seja, não foi escrito nenhum fósforo para aquele que correspondia a esta.
Bom. Mas, a meu ver, se o alto da vela 2 coincide com o baixo da vela 7, então serão encontrados dois pares: 2 <=> 7, 7 <=>2. E que tal contabilizar os pares inversos, mas sem o laço extra?
Não se pode resolver o problema numa só passagem, sem utilizar laços aninhados:))))?
Gud. No entanto, segundo sei, se o alto da vela 2 coincidir com o alto da vela 7, serão encontrados dois pares: 2 <=> 7, 7 <=>2. E a contabilização de pares inversos, mas sem o laço extra?
Que tal resolver o problema de uma só vez, sem utilizar laços aninhados:))))?
:) Não tente fazer de mimfraco;) Claro, penso que se pode resolver o problema com um laço, mas eu era demasiado preguiçoso para pensar muito mais tempo e fiz o que pensei ao mesmo tempo.
Naturalmente, aqui todas as velas emparelhadas ou mais são registadas nos dados de fósforo de cada vela. É por isso que eles se cruzam. Estou apenas a sugerir variantes, sem saber para que servem.
E ainda é possível resolver a tarefa de optimização dos cálculos, mas não preciso dela.
E se precisar exactamente dos dados para cada vela e todos os fósforos, e se, de repente, de repente ... existe apenas ....
Por isso, não tenho tempo nem desejo. Perdi o meu tempo em vez de escrever os meus próprios códigos.
SZY, talvez devesse também ligar os métodos Kohonen conhecendo o parâmetro de entrada necessário.
Em geral - sem tempo e sem desejo. E assim perdi tempo em vez de escrever os meus próprios códigos.
Que pena, que pena.
De nada. Fiz uma imprecisão na segunda versão. Uma vez que a primeira versão procurou fósforos a partir da vela seguinte do índice do laço, o laço principal foi passado pelo número de velas menos uma para comparar as duas velas mais exteriores. Agora, na segunda versão, para cada um dos castiçais procuramos fósforos em toda a gama, por isso, na linha
deve alterar o número de barras para
Por favor, diga-nos o significado destas linhas:
input int Search_Period=10; // Número de candelabros a copiar
int searchPeriod=(Search_Period<1)?1:Search_Period; // o que significam os símbolos "?", ":"?
input int Delta=2; // Número de pontos de admissão
int delta=(Delta<0)?0:Delta; // o que é que os símbolos "?", ":" significam?
Por favor, digam-me o significado destas linhas:
input Search_Period=10; // Número de castiçais a copiar
int searchPeriod=(Search_Period<1)?1:Search_Period; // o que é que os caracteres "?", ":" significam?
input int Delta=2; // Número de pontos de admissão
int delta=(Delta<0)?0:Delta; // o que é que os símbolos "?", ":" significam?
A partir de referência:
Operador condicional ?
A forma geral de um operador ternário tem este aspecto:
expressão1? expressão2: expressão3
Como primeiro operando, "expressão1" pode ser qualquer expressão que resulte num valor de tipo bool. Se o resultado for verdadeiro, o operador especificado pelo segundo operando, "expressão2", é executado .
Se o primeiro operando forfalso, o terceiro operando, "expressionZ", é executado. O segundo e terceiro operandos, ou seja, "expressão2" e "expressãoZ", devem retornar valores do mesmo tipo e não devem ser de tipo nulo. O resultado da execução do operador condicional é o resultado da "expressão2" ou o resultado da "expressão3", dependendo do resultado da "expressão1".
//--- renormalizar a diferença entre os preços de abertura e fecho pelo intervalo diário
duplo verdadeiro_intervalo = (Alto==Baixo)?0:(Fechado-Aberto)/(Alto-Baixo);
Esta entrada é equivalente ao seguinte
duplo_amplitude;
if(High===Low)true_range=0;// se High e Low são iguais
else true_range=(Close-Open)/(HighLow);// se High is non-zero