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

 

Друзья, помогите пожалуйста!!! Не могу никак написать код, что бы сделка открывалась бай если цена проходит с низу вверх определённого уровня, селл наоборот. именно что бы четко определялось откуда цена пришла снизу или сверху. сложно это???

 
petrostlt:

Друзья, помогите пожалуйста!!! Не могу никак написать код, что бы сделка открывалась бай если цена проходит с низу вверх определённого уровня, селл наоборот. именно что бы четко определялось откуда цена пришла снизу или сверху. сложно это???

Возможно множество вариантов.

Например:

 double price1 = iClose(NULL,0,1);           // Цена закрытия последнего сформированного бара
 double price2 = iClose(NULL,0,2);           // Цена закрытия второго (предпоследнего) бара 
 double Level = 1.7658;                      // Какой-то уровень
 
 if(price1>Level && price2<Level)OrderSend(Symbol(),OP_BUY,......); // Если цена на предпоследнем баре была ниже уровня, 
                                                                    // а на последнем выше, то покупаем...
 if(price1<Level && price2>Level)OrderSend(Symbol(),OP_SELL,......);
 
DhP:

Возможно множество вариантов.

Например:

double price1 = iClose(NULL,0,1);           // Цена закрытия последнего сформированного бара
 double price2 = iClose(NULL,0,2);           // Цена закрытия второго (предпоследнего) бара 
 double Level = 1.7658;                      // Какой-то уровень
 
 if(price1>Level && price2<Level)OrderSend(Symbol(),OP_BUY,......); // Если цена на предпоследнем баре была ниже уровня, 
                                                                    // а на последнем выше, то покупаем...
 if(price1<Level && price2>Level)OrderSend(Symbol(),OP_SELL,......);

А если одна из price равна Level ?

А нулевой бар? Он же и есть самый что ни на есть первый. Только ещё не сформирован. Путаете человека. Тогда уж так:

//----------------------------------------------------------------------------------------
int    dg=MarketInfo(Symbol(),MODE_DIGITS);
double price1 = iClose(NULL,0,1);           // Цена закрытия первого бара
double price2 = iClose(NULL,0,2);           // Цена закрытия второго бара 
double Level = 1.7658;                      // Какой-то уровень
 
   if (NormalizeDouble(price1-Level,dg)>0 && NormalizeDouble(Level-price2,dg)>=0) {
      // ... код открытия позиции Бай ...
      }
   if (NormalizeDouble(Level-price1,dg)>0 && NormalizeDouble(price2-Level,dg)>=0) {
      // ... код открытия позиции Селл ...
      }
//----------------------------------------------------------------------------------------
 
artmedia70:

А если одна из price равна Level ?

А нулевой бар? Он же и есть самый что ни на есть первый. Только ещё не сформирован. Путаете человека. Тогда уж так:



Повторюсь.

Есть очень(!) много вариантов.

Кстати, нулевой бар не первый. Он нулевой, т.е. его еще нет.

 
добройночи! Я неожиданно на диске С обнаружил кучу папок и какой то С++,решил инсталлировать,а он у меня что-то спрашивает!!Я не силен в английском,не,я смутно понял,что либо оригинал в смісле какой-то изначальній вариант,либо что-то там мой компьютер и неинсталлировать почему-то..Короче,непонятно.
 
Dimka-novitsek:
добройночи! Я неожиданно на диске С обнаружил кучу папок и какой то С++,решил инсталлировать,а он у меня что-то спрашивает!!Я не силен в английском,не,я смутно понял,что либо оригинал в смісле какой-то изначальній вариант,либо что-то там мой компьютер и неинсталлировать почему-то..Короче,непонятно.

Выберите одну из опций:

Repair - "отремонтировать"/восстановить Visual C++ 2008 года

Uninstall - удалить с компьютера Visual C++ 2008 года

 
artmedia70:

А если одна из price равна Level ?

А нулевой бар? Он же и есть самый что ни на есть первый. Только ещё не сформирован. Путаете человека. Тогда уж так:

Нет смысла нормализовать double величины для их сравнения, поскольку два значения 1.778946 и 1.778949 после нормализации окажутся равными, а это уже неверно, т.к. первое значение меньше второго.

Нормализовать double надо только для отправки команды Дилеру, но не для "внутреннего потребления" - сравнения двух величин.

 
Понял!!Спасибо большое!!!!Хорошо,что спросил!!
 
Dimka-novitsek:
Понял!!Спасибо большое!!!!Хорошо,что спросил!!
Всегда к Вашим услугам...)))
 
Спасибо большое, что откликнулись!!!!!!! Буду пробовать. СПС)))))
Причина обращения: