[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 614

 
Urain:

O MathRand deve ser inicializado com MathSrand() antes de ser utilizado,

e recomendo passar o TimeLocal() como parâmetro da MathSrand().

A inicialização é necessária uma vez, então para 32768 consultas MathRand() não é detectada,

Depois disso, você pode inicializar novamente se quiser uma nova seqüência, caso contrário, a mesma coisa acontece.

É claro que você pode inicializar cada passo, mas você precisa monitorar os parâmetros de inicialização para mudar,

caso contrário, é a mesma seqüência.


Isso é o que eu faço. O que é o bloqueio de tempo?

Eu tenho o mesmo conjunto sobre a mesma história.

 
ALGUÉM ME DÁ UMA DICA... TERCEIRA VEZ Eu tenho escrito e ninguém responde...AccountEquity() ONE BAR ABOVE (em um bar passado) COMO ESCREVER?
 
vlad123:


Isso é o que eu faço. O que é o bloqueio de tempo?

Eu tenho o mesmo conjunto sobre a mesma história.


Exemplos do livro didático:

data/hora TimeLocal()

A função retorna o tempo do computador local conforme o número de segundos decorridos desde 00:00 de 1 de janeiro de 1970.
Nota: quando testado, a hora local é simulada e corresponde à última hora simulada conhecida do servidor.

Exemplo:

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0;i<10;i++ )Print("произвольная величина ", MathRand());

 
sllawa3:
ALGUÉM PODERIA, POR FAVOR, ACONSELHAR. ...AccountEquity() ONE BAR ABOVE (em um bar passado) COMO ESCREVER?

Resposta: de jeito nenhum.
AccountEquity() retorna a quantidade de patrimônio líquido, e não depende do número de barras.
Você não pode conhecer seus valores anteriores simplesmente fazendo retroceder a história das barras.
Seu valor depende do número de operações abertas/fechadas, lucrativas/falhadas.
Para registrar o "histórico do patrimônio líquido", criar um array estático e registrar o valor AccountEquity() nele, por exemplo, em cada abertura de bar.
Assim, precisaríamos percorrer a matriz para obter o histórico das mudanças de equidade.

 
sllawa3:
ALGUÉM ME DÁ UMA DICA... AccountEquity() ONE BAR ABOVE (em um bar passado) COMO ESCREVER?

Parece que precisamos armazená-lo em cada novo bar em uma variável, por exemplo, desta forma:

1. armazenar o valor patrimonial inicial na função init() em uma variável, digamos EquAkk=AccountEquity();

2. verificar a aparência de uma nova barra (não no init , é claro), se sim, então
{
LastEqu=EquAkk; // armazenar o valor patrimonial passado (exigido por nós) na variável
EquAkk=AccountEquity(); // registrar o novo valor patrimonial (para o próximo valor "passado")
}

Assim, a variável LastEqu armazenará o valor patrimonial para a barra passada, e seu valor será sobrescrito novamente quando a próxima barra for aberta...

... Escrevi-o sozinho, não o verifiquei, e já adormeci, por isso não me dêem muitos pontapés...
Acho que já expressei a idéia ....

 
ToLik_SRGV:

Resposta: de jeito nenhum.
AccountEquity() retorna a quantidade de patrimônio líquido, e não depende do número de barras.
Você não pode conhecer seus valores anteriores simplesmente fazendo reverter a história das barras.
Seu valor depende do número de operações abertas/fechadas, lucrativas/falhadas.
Para registrar o "histórico do patrimônio líquido", criar um array estático e registrar o valor AccountEquity() nele, por exemplo, em cada abertura de bar.
Dessa forma, seria possível obter o histórico das mudanças patrimoniais através da rolagem da matriz.



ASSIM, VOCÊ AINDA PODE
 
sllawa3:
ASSIM, VOCÊ AINDA PODE


Bem, eu escrevi a mesma coisa, mas sugeri o uso de uma matriz em vez de uma variável.

Para registrar o "histórico do patrimônio líquido", é necessário, por exemplo, criar uma matriz estática e registrar o valor do AccountEquity() nela, por exemplo, na abertura de cada bar.
Assim, o histórico de mudanças no patrimônio líquido deve ser obtido por meio da rolagem da matriz.

 
Pessoal, não consigo descobrir como colocar as setas no gráfico, uma na barra mais alta nos últimos 80 dias e outra na barra mais baixa nos mesmos 80 dias. Eu criei este código, mas ele está atirando flechas em grupos. Preciso de uma seta no mínimo e no máximo de cada barra para os últimos 80 dias, depois para os próximos 80 dias, etc. Você pode me dar uma dica?
//====================================================================================
   int      NBars,MostHiBar, MostLoBar;
   double   MostHiPrice,MostLoPrice;
   datetime TMostHiBar,TMostLoBar;
   
//-----------------------------------------------------------------
   NBars       = 80;
   MostHiBar   = iHighest(NULL,PERIOD_D1,MODE_HIGH,NBars,0);      // Номер "максимального" бара
   MostLoBar   = iLowest (NULL,PERIOD_D1,MODE_LOW, NBars,0);      // Номер "минимального" бара
   MostHiPrice = iHigh   (NULL,PERIOD_D1,MostHiBar);              // Цена  "максимального" бара
   MostLoPrice = iLow    (NULL,PERIOD_D1,MostLoBar);              // Цена  "минимального" бара
   
   TMostHiBar  = iTime   (NULL,PERIOD_D1,MostHiBar);              // Время открытия "максимального" бара
   TMostLoBar  = iTime   (NULL,PERIOD_D1,MostLoBar);              // Время открытия "минимального" бара

   Comment (
            "\n", 
            "Наибольшая цена за ", NBars, " дней = ", MostHiPrice, "\n",
            "Наименьшая цена за ", NBars, " дней = ", MostLoPrice, "\n",
            "Время наибольш. бара = ", Time[MostHiBar], "\n",
            "Время наименьш. бара = ", Time[MostLoBar]   // сюда пробовал и TMostLoBar вставлять - пофигу...           
           );
           
   SetArrow(241, MediumSpringGreen, "", Time[MostHiBar], High[MostHiBar], 0);
   SetArrow(242, OrangeRed, "", Time[MostLoBar], Low[MostLoBar], 0);
//====================================================================================
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) 
{
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//====================================================================================
 
Você poderia me dizer, é possível abrir uma posição na MT por meio de uma parada? Por exemplo, coloque uma parada atrás do suporte/copr. e se ela romper, a parada abre uma posição.
 
Craft:
Você poderia me dizer, é possível abrir uma posição na MT por meio de uma parada? Por exemplo, coloque uma parada atrás do suporte/sopr. e se ela penetrar, a parada abre uma posição.

Claro. Só que não se chama uma parada, mas uma ordem pendente. Abra seu terminal. Pressione F1 nela. Na janela que aparece aberta Conteúdo - Comércio - Tipo de Pedido.