[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 583

 
alsu:
Тикет остается какой был


????

А как тогда проверить закрылся ордер или нет?

 
Cruc:

Спасибо большое за рекомендацию, я уже почти догадался так сделать, только не помню если ордер сработал, то ticket принимает значение -10?
тикет не меняется. Просто OrderCloseTime у него становится больше нуля
 
ilunga:
тикет не меняется. Просто OrderCloseTime у него становится больше нуля


А если сработает стоп или профит он же стает меньше нуля, если я не ошибаюсь -1 ?

Как правильно поставить условие ? Подскажите пожалуйста.

 
Cruc:


А если сработает стоп или профит он же стает меньше нуля, если я не ошибаюсь -1 ?

Как правильно поставить условие ? Подскажите пожалуйста.

Он не станет другим, а останется прежним. Закрытые позиции переходят в список истории сделок с теми же самыми тикетами.

Перебирайте этот самый список истории сделок и ищите там ордер.

 
artmedia70:

Зачем так-то? Выводите в одном Comment`е все флаги сразу.

Вот тут:




роста по ADX не было, то есть условие

// проверка роста ADX > 20, или просто рост ADX ---- проверка силы движения.
if (x<20 && x0>20) {f3 = 1; }

не выполнено, а сделка открыта

 
Ivn:


роста по ADX не было, то есть условие

// проверка роста ADX > 20, или просто рост ADX ---- проверка силы движения.
if (x<20 && x0>20) {f3 = 1; }

не выполнено, а сделка открыта

Судя по комментарию на скрине - вы контролируете нулевой бар для принятия решений.

Это ни есть гут... На нулевом баре индикаторы во время формирования бара могут много раз ходить туда-сюда, тем самым создавая ложные сигналы (дребезг).

Чтобы этого избежать, проверяйте первый, уже сформированный бар.

 
Помогите пожалуйста. Визулаьно на граффике часто замечаю что цена словно бъется об какой то уровень в нем как правило хай или лоу свечей практически равны между собой. Но как представить это математически не знаю. Если не трудно натыкайте ссылок с данной тематикой или с рахработками какими, а то 3 дня копаю форум и базу но подобного найти не получается.
 

Приветствую!

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

Но как то не выходит каменный цветочек. Выводятся неверные значения.

int start()
  {
   int counted_bars=IndicatorCounted();
   if (counted_bars<0) return(-1);        //---- check for possible errors
   if (counted_bars>0) counted_bars--;    //---- last counted bar will be recounted
   int limit=Bars-counted_bars;
   
   double kerzen_typ;                  //тип свечи
   string kerzen_name;                 //наименование свечи
   double kerzen_body;                 //размер тела свечи
   double kerzen_shadow_up;            //размер верхней тени
   double kerzen_shadow_down;          //размер нижней тени
   double kerzen_shadow2body_up;       //отношение верхней тени к размеру тела
   double kerzen_shadow2body_down;     //отношение нижней тени к размеру тела

//---- main loop
   for(int bar=0; bar<limit; bar++)
      {
//определение контрольной свечки - белая, черная или додж и сбор информации
   if (Close[bar]>Open[bar])
      {
         kerzen_typ=1;
         kerzen_name="бычья или белая свеча";
         kerzen_shadow_up=High[bar]-Close[bar];
         kerzen_shadow_down=Open[bar]-Low[bar];
         kerzen_body=Close[bar]-Open[bar];
      }
   if (Open[bar]>Close[bar])
      {
         kerzen_typ=-1;
         kerzen_name="медвежья или черная свеча";
         kerzen_shadow_up=High[bar]-Open[bar];
         kerzen_shadow_down=Close[bar]-Low[bar];
         kerzen_body=(Open[bar]-Close[bar]);
      }
   if (Open[bar]==Close[bar])
      {
         kerzen_typ=0;
         kerzen_name="додж";}  
         kerzen_shadow_up=High[bar]-Open[bar];
         kerzen_shadow_down=Close[bar]-Low[bar];
      }
//определение соотношения тени к телу свечки      
if (kerzen_body==0)
      {
         kerzen_shadow2body_up=kerzen_shadow_up;
         kerzen_shadow2body_down=kerzen_shadow_down;
         }
if (kerzen_body!=0)
      {
         kerzen_shadow2body_up=kerzen_shadow_up/kerzen_body;
         kerzen_shadow2body_down=kerzen_shadow_down/kerzen_body;
      }     
 
//---- done
   Comment  (
               "Контрольный бар типа ",kerzen_name,"\n",
               "Верхняя тень - ",kerzen_shadow_up*10000," в ",kerzen_shadow2body_up, " раз больше","\n",
               "Тело - ",kerzen_body*10000,"\n", 
               "Нижняя тень - ",kerzen_shadow_down*10000," в ",kerzen_shadow2body_down, " раз больше"
            );
   return(0);
  }
 
gabba:

Приветствую!

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

Но как то не выходит каменный цветочек. Выводятся неверные значения.


А зачем цикл если берется только 1 бар? просто вместо "bar" 1 использовать. Только проверять на новые бары чтобы на каждом тике все не пересчитывать.
 
Cruc:


А если сработает стоп или профит он же стает меньше нуля, если я не ошибаюсь -1 ?

Как правильно поставить условие ? Подскажите пожалуйста.

еще раз. ticket не изменяется.

самый простой вариант (схематично)

if (ticket > 0)
{
   OrderSelect(ticket, SELECT_BY_TICKET);
   if (OrderCloseTime() > 0)
   {
      // ордер закрылся
   }
   else
   {
      // ордер пока еще открыт
   }
}
else
{
   //первый запуск советника 
}