Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 107

 

FEAR:

хороший ответ

И главное - верный...
 
VladislavVG:


bool SLowTen = (Open[1]==Low[1]); // отсутствие нижней тени бычьей свечи

Поищите по форуму как правильно сравнивать вещественные числа.

Художника обидеть может каждый, написали бы как правильно. Критику я очень люблю - конструктивную. Про безобразный код и сам знаю.

Вот как раз и еще один вопрос в тему - как прописать в условии, что размер свечи более 60 пунктов (на пятизнаке).

 
alexey1979621:

Художника обидеть может каждый, написали бы как правильно. Критику я очень люблю - конструктивную. Про безобразный код и сам знаю.

Вот как раз и еще один вопрос в тему - как прописать в условии, что размер свечи более 60 пунктов (на пятизнаке).


Сравнение double:

if (NormalizeDouble(p1-p2,Digits)<0.5*Point) {
   // Значит равны
   }

как прописать в условии, что размер свечи более 60 пунктов (на пятизнаке).

if (размер_свечи>60*Point) {}
 
artmedia70:

Сравнение double:

как прописать в условии, что размер свечи более 60 пунктов (на пятизнаке).


Прошу прощения за свою тупость, но р1 и р2 это High и Low свечи соответственно? А что обозначает 0.5?

Применительно к моему существующему коду

   double STelo = MathAbs(Close[1]-Open[1])/Point; // тело бычьей свечи
   double SHighTen = (High[1]-Close[1])/Point; // верхняя тень бычьей свечи
   bool SLowTen = (Open[1]==Low[1]);    // отсутствие нижней тени бычьей свечи
  
   
   double Razmer_1 = (High[1]-Low[1])/Point; // размер свечи

        
   if(Volume[0]>1) return;

   if (Open[1]<Close[1] && SHighTen > 5*STelo && SLowTen == true && Razmer_1 > 60*Point)


Я правильно должен прописать: 
   double STelo = MathAbs(Close[1]-Open[1])/Point; // тело бычьей свечи
   double SHighTen = (High[1]-Close[1])/Point; // верхняя тень бычьей свечи
   bool SLowTen;

   if (NormalizeDouble(Open[1]-Low[1],Digits)<0.5*Point)  // отсутствие нижней тени бычьей свечи
  
   
   double Razmer_1 = (High[1]-Low[1])/Point; 

        
   if(Volume[0]>1) return;

   if (Open[1]<Close[1] && SHighTen > 5*STelo && SLowTen == true && Razmer_1 > 60*Point) // продажа
 
alexey1979621:

Художника обидеть может каждый, написали бы как правильно. Критику я очень люблю - конструктивную. Про безобразный код и сам знаю.

Вот как раз и еще один вопрос в тему - как прописать в условии, что размер свечи более 60 пунктов (на пятизнаке).



Это базовые знания, которые Вам необходимо понять, а не подсмотреть. Вопрос настолько разжеван на форуме, что только очень ленивый не сможет найти ответ и разобраться. И это, кстати, значительно полезнее для Вас же.

А по поводу безобразности кода - это не ко мне. Как по мне - так вполне нормальный прием: ввести для увеличения читаемости кода дополнительные переменные.

 
artmedia70:

Сравнение double:



В данном случае

if (NormalizeDouble(p1-p2,Digits)<0.5*Point) {
   

NormalizeDouble() - это лишнее ;).

 
VladislavVG:


В данном случае

NormalizeDouble() - это лишнее ;).

А потом объяснять ему для чего тут без нормализации, а с ценами в торговых приказах с нормализацией? Потому и вписал сюда нормализацию, чтобы потом не округлял глаза, когда цены будет ненормализованные отправлять в торговом приказе.
 
artmedia70:
А потом объяснять ему для чего тут без нормализации, а с ценами в торговых приказах с нормализацией? Потому и вписал сюда нормализацию, чтобы потом не округлял глаза, когда цены будет ненормализованные отправлять в торговом приказе.


)))))))))))))))))) да, это довод.
 
VladislavVG:

)))))))))))))))))) да, это довод.
Думаю, со временем сам поймёт где нужно, а где не обязательно. Зато сразу в голове будет держать, что нормализация нужна. А вот когда можно без неё обойтись - это уже на следующем этапе познания... ;) Из таких соображений...
 
Народ помогите пожалуйста. Уже 5-ый день не могу разобраться. У меня в советнике сделано так, чтобы при срабатывании нужных критериев модифицировать стоп лосс ордера. А стоп лосс - который нужно ставить, тейк профит последнего закрытого ордера. Но когда начинается модификация, робот ставит всегда стоп лосс 1.0000. Не пойму в чем дело. Уже голову сломал. Есть у кого нить варианты - как ставить тейк предыдущего ордера, на стоп лосс текущего?
Причина обращения: