[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 343

 
hoz:

Há uma pilha de ordens pendentes em ambos os lados. Se qualquer uma das ordens pendentes for acionada, então, do outro lado, a ordem pendente mais externa é apagada. Na captura de tela, mostrei o que acontece se uma ordem de compra é acionada e a ordem mais curta é excluída.

Eu o fiz se uma posição foi acionada. Mas e se não for um, mas 3 acionados de uma só vez? Isto é, eu deveria de alguma forma estimar o número de ordens pendentes acionadas e fechar as ordens pendentes do sinal oposto.

Qual é a melhor maneira de fazer isso? Talvez, alguém já tenha implementado este ponto? Não decidi colocar esta pergunta em um ramo separado. Talvez seja muito simples para aqueles que entendem melhor este ponto.

Se precisássemos excluir apenas a posição mais baixa, poderíamos encontrar uma posição aberta pelo preço mais baixo e excluí-la no laço, mas se houver várias posições, o que devemos fazer? Ficaria feliz em ouvir a opinião daqueles que já têm experiência com grades de pedidos.

Victor, quando o inferior for excluído, o próximo, que se tornou o mais baixo, também será excluído pela mesma condição. Rápido para você, mas para o programa o principal não é estar no mesmo carrapato, mas tudo bem! Experimente!
 

Aqui está uma pergunta - alguém fez algum teste de velocidade em diferentes processadores no testador MT-5?

Se for o caso, por favor, me dê um link. Ou pelo menos me diga qual dos principais processadores AMD e INTEL é melhor em termos de velocidade?

Naturalmente, estamos falando de desktops, não de laptops ou supercomps. :-)

 
DruZhban:

Aqui está uma pergunta - alguém fez algum teste de velocidade em diferentes processadores no testador MT-5?

Se for o caso, por favor, me dê um link. Ou pelo menos me diga qual dos principais processadores AMD e INTEL é melhor em termos de velocidade?

Naturalmente, estamos falando de desktops, não de laptops ou supercomps. :-)


tudo no cinco está aqui :https://www.mql5.com/ru/forum
 
borilunad:
Victor, quando o mais baixo for eliminado, o próximo que se tornou o mais baixo será eliminado pela mesma condição. A rapidez é para você; a coisa mais importante para o programa não é estar no mesmo ritmo, mas tudo bem! Experimente!


Boris, isso é compreensível. Estava pensando sobre isto. Acho que temos que fazer um loop de 0 a uma variável que armazena o valor das ordens acionadas e a cada passagem do loop para executar a função de encontrar a ordem necessária e depois fechá-la. Não tenho certeza de como consertar que este procedimento seja executado no momento atual.

A propósito, seria melhor procurar as ordens mais extremas usando a função de busca padrão e depois passar os valores do tempo aberto e preço da ordem para a função de fechamento das ordens, certo?

 
hoz:

Há uma pilha de ordens pendentes em ambos os lados. Se qualquer uma das ordens pendentes for acionada, então, do outro lado, a ordem pendente mais externa é apagada. Na captura de tela, mostrei o que acontece se uma ordem de compra é acionada e a ordem mais curta é excluída.

Eu o fiz se uma posição foi acionada. Mas e se não for um, mas 3 acionados de uma só vez? Isto é, eu deveria de alguma forma estimar o número de ordens pendentes acionadas e fechar as ordens pendentes do sinal oposto.

Qual é a melhor maneira de fazer isso? Talvez, alguém já tenha implementado este ponto? Não decidi colocar esta pergunta em um ramo separado. Talvez seja muito simples para aqueles que entendem melhor este ponto.

Se precisássemos excluir apenas a posição mais baixa, poderíamos encontrar uma posição aberta pelo preço mais baixo e excluí-la no laço, mas se houver várias posições, o que devemos fazer? Bem, eu ficaria feliz em ouvir a opinião daqueles que têm experiência em lidar com redes de ordem


Se não estou enganado, estou tentando dar um bom passo com a ajuda de alguns pares de ordens pendentes.

algoritmo de eliminação :

1) cavar na lista de posições abertas e escrever (lembrar) seus espaços.

2) procurar na lista de conjuntos de ordens pendentes e verificar se há um deslizador correspondente na lista de poses, se corresponder - apagar a ordem pendente.

E não mais dor.

Por exemplo, se você é um programador antigo, ou não sabe nada sobre codificação, ou está muito na moda para fazer tudo de uma maneira diferente? ??? а ?

 
Aqui estão os indicadores de fonte, favor ajudar com os valores de saída (por exemplo através do comentário) (em números) iguais ao preço de cada indicador em tempo real (conheço o icustom, mas não consigo entender quais parâmetros devem ser especificados para serem emitidos valores exatos, depois a saída 0, depois o número mais de 2milhões)
Arquivos anexados:
zigzag.zip  4 kb
 
DruZhban:

Aqui está uma pergunta - alguém testou a velocidade do testador MT-5 em diferentes processadores?

Se for o caso, por favor, me dê um link. Ou pelo menos me diga qual dos principais processadores AMD e INTEL é melhor em termos de velocidade?

Naturalmente, estamos falando de desktops, não de laptops ou supercomps. :-)



Em um 5 use as nuvens para testar e esqueça seu processador, mesmo que seja multi-core e rápido. Realmente acelera muitas vezes. Mas você terá que pagar um centavo. Na verdade, em algum momento houve aqui uma discussão
 

Bom dia a todos!

Minha pergunta parece ser simples, mas eu escavei todos os artigos, mas não consegui encontrar uma resposta - como funciona o operador de retorno(-1)? Para onde ele passa o controle? Neste código, por exemplo:

int start()
{
    //---- Запоминаем значения индикатора для дальнейшего анализа
    //---- Обратите внимание - используем 1-й и 2-й бары. Это даёт задержку в 1 бар 
    //---- (т.е. сигнал появится позже), но защищает от многочисленных открытий и закрытий
    //---- позиций в течении бара
    double MACD_1 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1 );
    double MACD_2 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 2 );
 
    int _GetLastError = 0, _OrdersTotal = OrdersTotal();
    //---- перебираем все открытые позиции
    for ( int z = _OrdersTotal - 1; z >= 0; z -- )
    {
        //---- если при выборе позиции возникла ошибка, переходим к следующей
        if ( !OrderSelect( z, SELECT_BY_POS ) )
        {
            _GetLastError = GetLastError();
            Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
            continue;
        }
 
        //---- если позиция открыта не по текущему инструменту, пропускаем её
        if ( OrderSymbol() != Symbol() ) continue;
 
        //---- если MagicNumber не равен _MagicNumber, пропускаем эту позицию
        if ( OrderMagicNumber() != _MagicNumber ) continue;
 
        //---- если открыта БАЙ-позиция,
        if ( OrderType() == OP_BUY )
        {
            //---- если МАКД пересёк 0-ю линию вниз,
            if ( NormalizeDouble( MACD_1, Digits + 1 ) <  0.0 && 
                  NormalizeDouble( MACD_2, Digits + 1 ) >= 0.0    )
            {
                //---- закрываем позицию
                if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
                {
                    _GetLastError = GetLastError();
                    Alert( "Ошибка OrderClose № ", _GetLastError );
                    return(-1);
                }
            }
            //---- если сигнал не изменился, выходим - пока рано открывать новую позицию 

senão return(0);

Com zero entre parênteses e sem parênteses tudo parece claro. Mas e quanto a (-1)?

Obrigado pela sua resposta. :)

 
hoz:


Boris, isso faz sentido. Estava pensando sobre isto. Acho que devemos fazer um loop de 0 a uma variável armazenando o valor das ordens acionadas e executar a função que busca a ordem necessária e depois a fecha a cada iteração do loop. Mas não estou bem certo de como consertar que este procedimento seja executado atualmente.

E, a propósito, é melhor procurar as ordens mais extremas usando a função de busca padrão, e então o valor do tempo aberto e o preço são passados para a função de fechamento das ordens, certo?

Victor, quero dizer quando a ordem pendente é apagada, já está na história e quando outra posição é aberta, outra ordem pendente também é apagada pela mesma condição porque verificamos as posições que temos! E como funciona, olhe através dos troncos! Então você vai ver se está certo ou errado!
 
Olá a todos. Este é um assunto sério e urgente e já procurei em toda a Internet, como dizem... Decidi usar o MT4 por um longo tempo, já o uso há 3 dias. Tentei usá-la por um tempo e me pareceu que era a primeira vez e não entendia o que estava acontecendo. Pensei, não é nada sério, mas de repente vou ao MT e vejo 4 gráficos H4 com um novo sistema e vejo o preço errado, comparo-o com o StartFX 2, abro o cronograma H1 e D1 e espero... Estou esperando há uma hora e ela será atualizada ano a ano, mas não fará isso. "Bem, reinstale-o e pronto" - você diz, e eu lhe digo "Que se lixe". "Então baixe um indicador de alguma atualização de software de quem sabe qual site" - você pergunta e eu lhe digo "Que se lixe duas vezes". Eu realmente quero continuar ganhando dinheiro e estrangular a ajuda do computador com 1 e depois veremos :-)
Razão: