[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 186

 
Dimka-novitsek:
Любопитно,что в моем варианте не так?

В вашем варианте во-первых он в течение 1 расчета засыпает 300 раз

Во-вторых устает создавать 600 раз сообщение на каждом тике

А в-третьих рисует эту красную линию на графике. При этом у красной линии максимум 0.86, а у зеленой минимум 1.34

вот результатов и не видно

 
ScioMe:

Зеленым и правда рисует, но только у свечи перед закрытием! А до этого ни разу.

думаю должен рисовать только если ты StopLoss и/или TakeProfit меняешь
 
pyatka__ASD:

Добрый день.прошу помощи.

Как найти закономерность смещения баров, высчитанных по данной формуле? ObjectGetShiftByValue

какую закономерность то
 

вот результатов и не видно

Спасибо!! я таки баран

 
eddy:
думаю должен рисовать только если ты StopLoss и/или TakeProfit меняешь

Я меняю, журнал подтверждает.
 
ну он и меняет их на баре открытия
 

Вопрос по некоторым нюансам вызова WinAPI'шных функций.

Есть Функция GetPrivateProfileStringA.

Импорт функции в 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

Описание одного из параметров:

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.

Вопрос - как передать "реальный NULL"?

Передавая "mql-овский NULL" (также строку "") получал не список "ключей в секции", а дефолтовое значение.

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, "".

Про "реальный NULL" упомянул, т.к. про подобную проблему (именно с этой функцией) читал на каком-то форуме про Бейсик. Форум был англоязычный (т.е. все, что смог понять - неправда), да и проблему решали средствами Бейсика.

 
eddy:
ну он и меняет их на баре открытия


Насколько понимаю, OrderModify() может менять стопы и на иных барах, чем бар открытия? У меня код (почти весь из книги С. Ковалева) построен так, чтобы стопы менялись не только во время открытия, но и  при наступлении кое-каких событий:

 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);                            // Возврат значения
  }
 

Подскажите пожалуйста как присвоить время линии индикатора val1[]. Или натолкните на то как это сделать и что использовать а то немогу догнать. Индикатор 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++;}

Например когда линия val1[c] пересекает 0.45 вверх значение времени присваивается переменной TimeBegin и потом когда пересекает вниз значение времени присваивается TimeEnd. И так по всему графику.

Файлы:
 
ScioMe:

Насколько понимаю, OrderModify() может менять стопы и на иных барах, чем бар открытия?

ну так а стрелки то на баре открытия. ты же им цвет задаёш только
Причина обращения: