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

 
artmedia70:
Покажите весь код


фишка в том что если МА-сравнение убрать - работает!

если снова подключить - НЕ работает ВООБЩЕ!  

int Stoch_1,Stoch_2,Ma_1,Ma_2;


int start()
  {
Ma_1=iMA(NULL,PERIOD_M5,5,0,MODE_LWMA,PRICE_CLOSE,1) ;
Ma_2=iMA(NULL,PERIOD_M5,15,0,MODE_LWMA,PRICE_CLOSE,1) ; 

Stoch_1=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_MAIN,1); 
Stoch_2=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
Print (Ma_1,"___",Ma_2);  // печатает 134 (GBPJPY)

if ( Hour()>10 && Hour()<20) 
 {
  if ( Ma_1 > Ma_2)       // если убрать строку- работает. Оставить - не работает       
      {
                      

//               if (Stoch_1>Stoch_2)


 { SetVLine(Blue, "", 0, 0, 1);} 
 
}}
     
     
  if ( Hour()>10 && Hour()<20) 
   {
  if ( Ma_1<Ma_2)       // если убрать строку- работает. Оставить - не работает    
     {
                               
 
 // if (Stoch_1<Stoch_2)                      
 

              {SetVLine(Red, "", 0, 0, 1);} 
  
  
}  }

} return(0); //}
//---------------------------
//+----------------------------------------------------------------------------+
void SetVLine(color cl, string nm="", datetime t1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_VLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
  }
 
artmedia70:

MA_1 и MA_2 должны иметь тип double.

А у вас какой?


"Но я всегда была червонной дамой" (с) "12 Стульев"

 

а я всегда их совал в int 

 
rigonich:
Да, тут выше вам подсказали правильно, если переменные типа int они и будут выдавать для евры 1, так как приведение числа   1.3075 к типу int какраз и дает 1, а вы , видимо распечатываете не значения средних, а свои переменные.


gbkznm....позор-то какой!! точно! int это же ЦЕЛЫЕ числа, а double - плавающая запятая....

стыдно!  

 
lottamer:

а я всегда их совал в int 

Знаний - ПОЛНЫЕ штаны! :)))
 

КАЖЕТСЯ ВСЕ ЗАРАБОТАЛО!!!

СПАСИБО ОГРОМНЕЙШЕЕ!!!

думал конец.... :)))))) 

 
TarasBY:
Знаний - ПОЛНЫЕ штаны! :)))


каюсь...... 
 
lottamer:


"Но я всегда была червонной дамой" (с) "12 Стульев"

 

а я всегда их совал в int 


Переменные типа int -- это целые числа, и когда вы присваиваете им значение числа с дробной частью, это число сначала округляется до ближайшего целого числа, а потом значение этого числа присваивается переменной типа int.
 
 если переменную double поместить в int -мне понятно что будет. А если обратную операцию сделать? int в double хуже ведь не станет? 
 

Научите, христа ради, как работать с комментами:

1. если комментарий уже составлен,  или составляется, как можно его не выставлять, а перейти к составлению другого комментария, если к примеру, на вопрос уже ответили?

2. если вставляется код, как после вставеи перейти к вставке обычного текста? Enter продолжает ввод текста в виде кода.

3. при копипасте, некоторые вещи он вставляет по умолчанию, например при копировании из справки, скопированное вставляется как ссылка.Как вставить скопированное в виде обычного текста? 

 
lottamer:
 если переменную double поместить в int -мне понятно что будет. А если обратную операцию сделать? int в double хуже ведь не станет? 
Переменную можно поместить только в определенное место в памяти компьютера, имеющее свой адрес и размер.То, о чем вы говорите, называется присвоить переменной типа  дабл значение числа типа инт .Это можно,  значение этой переменной будет представлено в виде числа типа double с дробной частью равной 0