[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 282

 
Zhunko:

Você tem que formar a partir de carrapatos. O conversor de período faz o mínimo a partir de minutos.


Kovalev's está correto. Destaquei em vermelho o que você não tem.

Entendi. Muito obrigado.
 
MauzerVII:

Rapazes, ajudem-me.

Eu não entendo porque a linha

Resultado: 2013.04.12 17 13 Print_v4 EURUSD,M15: SL == 1.3068

dá quatro casas decimais?

Estou ciente doDoubleToStr.



Se você está ciente disso, qual é a pergunta, não entendo.

 

Pergunta sobre o código do coletor de carrapatos no kodobase. Algum tipo de verificação estranha das condições atribuídas no cabeçalho das variáveis booleanas que não mudam mais no código. Eu não entendo como funciona.

//в шапке
           bool tick.time.local        =               false;
           bool tick.chart.update      =                true;
//в init()
   if(tick.chart.update == true)
     {
     if(MT4InternalMsg == 0)  
            {
            MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
            }   
     }  
//в start()
     if(tick.time.local == true)//где менялось, я вообще не понял
       {
       time = TimeLocal();
       }
       else{
       time = TimeCurrent();
       }
//--------------------------------
       if(tick.chart.update == true)
         {
                   hwnd = WindowHandle(sn, 1);
         if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == false)
           {
           hwnd = 0;
           return;
           }
           PostMessageA(hwnd, MT4InternalMsg, 2, 1);             
           }                 
         } 

O valor das variáveis booleanas atribuídas não muda em nenhum lugar nas condições (e mais adiante no código). Além disso, start() verifica o valor inverso da variável atribuída. Mas funciona. Como?

 

Ou é apenas um código não otimizado? GetLastError() é declarado no cabeçalho

#import "ntdll.dll"
 int RtlGetLastWin32Error();
 int RtlSetLastWin32Error (int dwErrCode);

E estas funções NaiveAPI não são utilizadas em nenhum outro lugar do código.

 

Caros programadores, digam-me como resolver um problema "simples".

Por exemplo, eu preciso apagar a segunda linha de um arquivo CSV. Não consegui encontrar nenhuma informação sobre como fazê-lo na documentação.

Exemplo:

12:30;1;1.34818;12:32;3;3;100;1.34939;18:45\r\n

14:00;1;1.32219;14:26;6;6;100;0.0000;00:00\r\n

19:00;0;1.35828;19:12;12;6;600;1.37939;19:59\r\n

 
tuner:


Eu ajudaria, mas não tenho tempo para pensar em mais nada, desculpe.

Quanto à questão sobre onde eles são mudados. Meu palpite é que são bandeiras de depuração, que o programador usou ao escrever o indicador e deixou no código para depuração, se alguém precisar delas.

 

O resultado final é simples. O balanço rápido atravessa o balanço lento. Em seguida, o preço volta para o rápido e, em seguida, o Consultor Especialista deve abrir um pedido.

No momento, escrevi a função para corrigir o recuo como se segue:

//+-------------------------------------------------------------------------------------+
//| Получение значений МА на указанном баре                                             |
//+-------------------------------------------------------------------------------------+
double GetMA(int index, int maPeriod)
{
   return (iMA(NULL, i_TF, maPeriod, 0, MODE_EMA, MODE_CLOSE, index));
}
//+-------------------------------------------------------------------------------------+
//| Имеет ли место отскок?                                                              |
//+-------------------------------------------------------------------------------------+
void IsRebound(int crossDir[], bool& returnSign[])
{
   for (int i = 0; i < 4; i++)
   {
      if (crossDir[i] == CROSS_NO)
         continue;

      returnSign[i] = false;
      double ema = GetMA(1, g_maPeriod[i]);

      if (crossDir[i] == CROSS_UP)
      {
         if (ND(MathAbs(ema - Ask)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_UP");
         }
      }
      if (crossDir[i] == CROSS_DN)
      {
         if (ND(MathAbs(ema - Bid)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_DN");
         }
      }
   }
}

Isto é correto? Ou deveria ser feito de outra forma?

A matrizcrossDir[] armazena valores sobre a existência de um crossover. Se houver, ela verifica a lacuna entre o preço de compra ou venda atual e o valor da máscara. Por alguma razão, a condição não é preenchida.

Aqui está o que eu preciso:

recuando

Depois de qualquer pulseira cruzar 365, e assim que o preço voltar para a pulseira correspondente que cruzou 365, compre. COMO POSSO LIBERAR ISTO?

 

Desenhe algum tipo de diagrama lógico do que você quer. Para você mesmo.

Um ano é composto de aproximadamente 250 bares diários.

 
Ninguém implementou isto. Eu não acho que seja muito complicado. Só não tenho muita experiência ainda, não entendo bem como formalizar este ponto ...
 
hoz:
Ninguém jamais o fez. Não acho que seja muito difícil. Só não tenho muita experiência ainda, não entendo bem como formalizar este ponto ...

Você poderia fazer isso em um fluxograma. Você poderia fazer algo mais, mas de uma forma muito completa e sem ambigüidade. Para que eu não seja capaz de chutar você pela inconsistência da idéia com sua descrição.

Eu não o farei.