Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 656

 
Vitaly Muzichenko:

Você em um ramo de teóricos palhaços, aí o amor de desenhar não está claro o quê, e não está claro o porquê

E há muitos tópicos semelhantes neste fórum - pelo menos discuta-os!

Eu não entendo Vitaly! - Você está falando sério? - Ou você está brincando?

Como é bem conhecido, a Teoria do Comércio como tal não existe na natureza.

Existem diferentes "Ondas Elliott", Números Fibonacci, Funções Weierstrass, etc...

Mas não tem nada a ver com a "teoria do comércio".

E de que "teoria comercial" podemos falar, se 99,9999% dos usuários do fórum, desenvolvedores e comerciantes não conseguem construir a tendência média móvel mais simples.

Então eles desenham "não sei o quê" e "não sei por quê" - como você disse.

------------------------------------------------------------------------------

E também não se pode "desenhar" corretamente a tendência mais simples. - Tenho certeza disso. Desculpe-me por ser grosseiro. Mas você não pode.

Mas você fala facilmente sobre CLOWNS, e fala sobre algo que não sabe e não pode fazer.

Este é o paradoxo que estamos testemunhando.

----------------------------------------------------------------------------------

Mas não é isso que mais me surpreende, é algo completamente diferente.

Vejo milhares de freelancers e todos os tipos de acadêmicos no mercado forex oferecendo seus serviços a todos.

Há PUBLICIDADE em todos os lugares. Pagar - e eles ajudarão, pagarão - e ensinarão ...

Tudo bem - Eu lhe pago, eu respondo.

Mas você me mostra suas qualificações.

CONSTRÓI-ME A TENDÊNCIA MAIS SIMPLES!!!

Ninguém jamais a construiu. Nem freelancers, nem acadêmicos, nem desenvolvedores - NÃO UM.

Eles têm medo de ficar envergonhados. Porque eles não sabem como. Embora, à primeira vista, nada seja difícil.

Este é o procedimento padrão. Nós o temos em MT4/MT5. Eles simplesmente a construíram e mostraram sua maestria.

Mas não existem tais casos. Todos eles desenham "não entendo o quê" e "não entendo o porquê". Todo mundo é um palhaço?

----------------------------------------------------------------------------------

E você diz FLUXOS TEÓRICOS!

Quem são os mais CLOWNS aqui - Eu nem sei!!!!

 
Artyom Trishkin:

1. Por quê?

2. O que foi? Como foi isso?

1. por que? - para os cálculos.

2. O que foi? - Então números diferentes,Bid-buyPrice= 1.000000000000000006551e-05 e não 0.00001. e porqueduplicar(Bid-buyPrice) deu 0.00001, aqueles que exigiam conversão parao dobro, se entendi corretamente, quando Bid-buyPrice e buyPrice já são do tipo duplo?

 
Andrey Sokolov:

1. Por quê? - Para cálculos.

2. O que foi? - Então números diferentes,Bid-buyPrice= 1.000000000000000006551e-05 e não 0.00001. e porqueduplicar(Bid-buyPrice) deu 0.00001, aqueles que exigiam conversão parao dobro, se entendi corretamente, quando Bid-buyPrice e buyPrice já são do tipo duplo?

Por que você converte explicitamente os tipos para o dobro se você opera com números duplos? Eu lhe mostrei uma conversão do tipo duplo para tipo string quando impresso.

Você tem certeza de que 1.0000000000000000000006551e-05 e 0.00001 são números diferentes? Formato de saída diferente - você não especificou o método de saída em Comentário(), então é um formato de saída científica. Por isso escrevi - ou fazer uma conversão explícita de tipo duplo para string, ou usar DoubleToString() com a precisão necessária.

Há de tudo na ajuda - e não está nem mesmo na acessibilidade passo a passo, a apenas um clique do mouse no menu de documentação.

Aqui está um da ajuda, eu marquei o que preciso:

Comentário

Produz um comentário definido pelo usuário no canto superior esquerdo do gráfico.

void  Comment(
   argument,     // первое значение
   ...           // последующие значения
   );

Parâmetros

...

[em] Quaisquer valores, separados por vírgulas. Um caractere de alimentação de linha "\n" ou "\r\n" pode ser usado para dividir a saída em várias linhas. O número máximo de parâmetros é 64. O comprimento total da mensagem (incluindo os caracteres de serviço não exibíveis) não pode ser superior a 2045 caracteres (os caracteres supérfluos serão truncados na saída).

Valor retornado

Sem valor de retorno

Nota

Arrays não podem ser passados para Comentário(). As matrizes devem ser impressas como itens.

Os dados do tipo duplo são impressos com 16 dígitos decimais após o ponto decimal, e podem ser impressos no formato tradicional ou científico - dependendo de como a entrada é mais compacta. Os dados do tipo de flutuador são emitidos com 5 dígitos decimais após o ponto. Para produzir números reais em uma precisão diferente ou em um formato explicitamente especificado, use DoubleToString().

Os dados do tipo bool são emitidos como "verdadeiros" ou "falsos". As datas são impressas como YYYY.MM.DD HH:MI:SS. Para emitir a data em outro formato, use a função TimeToString(). Os dados do tipo de cor são emitidos ou como uma string R,G,B ou como um nome de cor, se essa cor estiver presente no conjunto de cores.

Aotrabalhar no modo de otimização do testador de estratégia, a função Comentar() não é executada.

 
Artyom Trishkin: Você tem certeza que 1.0000000000000000000006551e-05 e 0.00001 são números diferentes? Formato de saída diferente - você não especificou o método de saída em Comentário(), então é o formato de saída científica que está sendo substituído por você pelo terminal. Por isso escrevi - ou fazer uma conversão explícita de tipo duplo para string, ou usar DoubleToString() com a precisão desejada.

A questão surgiu porque a condição onde a variável*Point foi comparada e o resultado desta subtração não funcionou, onde outra variável com o valor duplo foi subtraída do Bid com o valor duplo e o resultado da subtração teve que ser convertido para o dobro novamente.

Por que não é o tipo duplo no processo de subtração?

Eu li a ajuda mas não vi nenhuma resposta, então estou perguntando aqui.

 
Andrey Sokolov:

A questão surgiu porque a condição onde a variável*Point foi comparada e o resultado desta subtração não funcionou, onde outra variável com um valor duplo foi subtraída do Bid com um valor duplo e o resultado da subtração teve que ser convertido para o dobro novamente.

Por que não é o tipo duplo no processo de subtração?

Eu li a ajuda mas não vi nenhuma resposta, então estou perguntando aqui.

Quando você subtrai o dobro do dobro, o resultado será o dobro. É uma coisa certa.

Mas só você sabe com o que você está comparando.

 
Artyom Trishkin:

Quando você subtrai o dobro do dobro, o resultado é o dobro. Isso é certo.

Mas só você sabe com o que está se comparando lá.

duplo externo First_PartialTrailingStart=15;

se(Dígitos() ==3 || Dígitos()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - funciona

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - não funciona

 
Andrey Sokolov:

duplo externo First_PartialTrailingStart=15;

se (Dígitos() ==3 || Dígitos()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - funciona

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - não funciona

Tudo funciona. Roteiro:

//+------------------------------------------------------------------+
//|                                                  TestCompare.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property script_show_inputs
#define   Bid       SymbolInfoDouble(Symbol(),SYMBOL_BID)
//--- input parameters
input uint     InpFirstPartialTrailingStart  =  15;   // Старт трала через (пунктов)
input uint     InpMultiplier                 =  10;   // Множитель пунктов
input int      InpPriceShift                 =  20;   // Отступ цены Buy от Bid
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double part_trailing_start=double(InpFirstPartialTrailingStart<1 ? 1 : InpFirstPartialTrailingStart);
double multiplier=double(InpMultiplier<1 ? 1 : InpMultiplier);
double value=part_trailing_start*multiplier*Point();
double shift=InpPriceShift*Point();
double buy_price=Bid-shift;
//---
   double res=NormalizeDouble(Bid-buy_price,Digits());
   bool   cmp=NormalizeDouble(res-value,Digits())>=0;
   Alert
     (
      "Старт трала через ",(string)value," пп."
      ", Цена Bid=",(string)Bid,
      ", цена Buy=",(string)buy_price,
      ", Bid-цена Buy=",DoubleToString(res,Digits()),
      ", Bid-buy_price>=value: ",string(cmp)
     );
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Tudo funciona. O roteiro:

Obrigado, vou dar uma olhada nisso.

 
É possível obter o preço de fechamento de uma vela em seu último tick?
 
Andrey Sokolov:
É possível obter o preço de fechamento de uma vela em seu último tick?
Este é o preço da Licitação. Outra pergunta: como você sabe que este é o último tique?