[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 186

 
Dimka-novitsek:
Estou curioso, o que há de errado com minha versão?

Em sua versão, primeiro adormece 300 vezes em 1 cálculo

Em segundo lugar, ele se cansa de criar uma mensagem 600 vezes a cada tique.

E em terceiro lugar, desenha esta linha vermelha no gráfico. A linha vermelha tem um máximo de 0,86, e a linha verde tem um mínimo de 1,34

para que você não possa ver os resultados.

 
ScioMe:

Ele desenha verde, mas somente na vela antes de fechar! Antes disso, nunca o faz.

Acho que ele só deve ser sorteado se você mudar o StopLoss e/ou TakeProfit
 
pyatka__ASD:

Boa tarde, por favor, ajude.

Como posso encontrar um padrão de turnos de barra calculado usando esta fórmula? ObjectGetShiftByValue

qual é o padrão
 

Não vejo nenhum resultado.

Obrigado!!! Sou um cordeiro!

 
eddy:
Acho que só deve ser sorteado se você mudar o StopLoss e/ou TakeProfit

Eu faço, o registro o confirma.
 
bem, ele os troca no bar de abertura
 

Uma pergunta sobre algumas das nuances de chamar as funções WinAPI.

Há uma função GetPrivateProfileStringA.

Importação da função em mql.

#import "kernel32.dll"
  int GetPrivateProfileStringA
      ( string SectionName,    // Наименование секции
        string KeyName,        // Наименование параметра
        string Default,        // Значение по умолчанию
        string ReturnedString, // Возвращаемое значение параметра
        int    nSize,          // Размер буфера под значение параметра
        string FileName);      // Полное имя файла
  int WritePrivateProfileStringA
      ( string SectionName,    // Наименование секции
        string KeyName,        // Наименование параметра
        string sString,        // Записываемое значение параметра
        string FileName);      // Полное имя файла
#import

Descrição de um dos parâmetros:

lpKeyName [in] 

The name of the key whose associated string is to be retrieved. 
If this parameter is NULL, all key names in the section specified by the lpAppName parameter 
are copied to the buffer specified by the lpReturnedString parameter.

Pergunta - como passar "verdadeiro NULL"?

Passando "mql NULL" (também "") obteve-se o valor padrão ao invés da lista de "chaves na seção".

lpDefault [in] 
A default string. If the lpKeyName key cannot be found in the initialization file, 
GetPrivateProfileString copies the default string to the lpReturnedString buffer. 
If this parameter is NULL, the default is an empty string, "".

Eu mencionei "NULL real" porque li sobre um problema semelhante (exatamente com esta função) em algum fórum sobre Basic. O fórum era de língua inglesa (ou seja, tudo que eu podia entender não era verdade), e o problema foi resolvido por meio do Básico.

 
eddy:
bem, ele os muda no bar aberto


Tanto quanto eu entendo, OrderModify() pode mudar as paradas em barras que não sejam a barra aberta? Meu código (quase todo do livro de S. Kovalev) é construído para que pare de mudar não apenas durante a abertura, mas também após a ocorrência de alguns eventos:

 switch(Tip)                                  // По типу ордера
   {
      case 0 :                                // Ордер Buy
         if (NormalizeDouble(SL,Digits)<     // Если ниже желаем.
            NormalizeDouble(Bid-TS*Point,Digits))
               {
      // Ниже я только добавил функцию New_Stop
                  SL=Bid-New_Stop(TS)*Point; // то модифицируем его
                  string Text="Buy ";         // Текст для Buy 
                  Modify=true;                // Назначен к модифи.
               }
               break;
// Функция из этой же книги:
int New_Stop(int Parametr)                      // Проверка стоп-прик.
  {
   int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Миним. дистанция
   if (Parametr < Min_Dist)                     // Если меньше допуст.
     {
      Parametr=Min_Dist;                        // Установим допуст.
      Alert("Увеличена дистанция стоп-приказа.");
     }
   return(Parametr);                            // Возврат значения
  }
 

Por favor, me diga como atribuir o tempo para a linha indicadora

val1[]. Ou me diga como fazer e o que usar porque não consigo entender. Indicador Laguerre.
   i=CountBars-1;
   while(i>=0)
   {
      L0A = L0;
      L1A = L1;
      L2A = L2;
      L3A = L3;
      L0 = (1 - gamma)*Close[i] + gamma*L0A;
      L1 = - gamma *L0 + L0A + gamma *L1A;
      L2 = - gamma *L1 + L1A + gamma *L2A;
      L3 = - gamma *L2 + L2A + gamma *L3A;

      CU = 0;
      CD = 0;
      
      if (L0 >= L1) CU = L0 - L1; else CD = L1 - L0;
      if (L1 >= L2) CU = CU + L1 - L2; else CD = CD + L2 - L1;
      if (L2 >= L3) CU = CU + L2 - L3; else CD = CD + L3 - L2;

      if (CU + CD != 0) LRSI = CU / (CU + CD);
      val1[i] = LRSI;
          i--;
        }
         

   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   if(limit>CountBars)
      limit=CountBars;
  
   for(int c=1;c<limit;c++)
        
{if(val1[c]>0.45)
   LastLag++;}

Por exemplo, quando a linha val1[c] cruza 0,45 para cima o valor de tempo é definido na variável TimeBegin e quando cruza para baixo o valor de tempo é definido na variável TimeEnd. E assim por diante através de todo o gráfico.

Arquivos anexados:
 
ScioMe:

Tanto quanto sei, OrderModify() também pode mudar as paradas em outras barras que não a barra de abertura?

Bem, as setas estão na barra aberta. você só fixa a cor delas