Ugar
Гуру форума
Как на счёт вот такого варианта?подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
if(MathAbs(High[1]-High[2])<10.5*Point)
Как на счёт вот такого варианта?подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
Спасибо Ugar, ваш вариант более компактен!)Как на счёт вот такого варианта?
if(MathAbs(High[1]-High[2])<10.5*Point)
Если так сильно нравится знак <=, тогда уж лучше вот так:Спасибо Ugar, ваш вариант более компактен!)
но неясно почему 10.5?
и чем будет отличаться логика работы вашего варианта, и вот такого:
if(MathAbs(High[1]-High[2])<=10*Point)
Если так сильно нравится знак <=, тогда уж лучше вот так:
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)Я себе плохо представляю валютную пару, у которой разница цен может быть 10! :not-good:
Вот разница 10*Point , то бишь, 10 пунктов, вполне реальна, а как, скажем, у евробакса может быть разница 10, когда он сам "весит" 1.35? o_o
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)
Выделенная красным часть, это разница в целых пунктах.
Это лучше чем сравнивать дробные значения на =Но "делить" не есть хорошо! Впрочем, это дело конкретного программера
int nResult = iCustom(NULL, PERIOD_TF, "FastTMALine",
TimeFrame,
TMAPeriod,
Price,
ATRMultiplier,
ATRPeriod,
TrendThreshold,
ShowCenterLine,
alertsOn,
alertsMessage,
alertsSound,
alertsEmail,
MoveEndpointEveryTick,
MaxBarsBack, buffer, pos);
подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
Это будет самый, самый вариант. Никогда условие не будет выполнено.Вместо || (или) надо && (и) использовать.
Думаю, тут уместнее double nResult = iCustom();Почему-то не могу получить значения буферов FastTMALine.
Первые три дают единицу, последние три бредовое число.PHP:int nResult = iCustom(NULL, PERIOD_TF, "FastTMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, alertsOn, alertsMessage, alertsSound, alertsEmail, MoveEndpointEveryTick, MaxBarsBack, buffer, pos);
Я где-то затупил так, что не могу увидеть где )
Помогите.
_http://rghost.ru/51583057
if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point))
{
ваше действие;
}
Это будет самый, самый вариант. Никогда условие не будет выполнено.
Потому, что High[1] никогда не может и выше и ниже High[2] одновременно.*hi*
Ну так это-же совсем другое условие.Я имею в виду вот так
High[1] находится в полосе +- 10п. от High[2].PHP:if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point)) { ваше действие; }
Ну так это-же совсем другое условие.
Это не просто заменить или на и
В том варианте было наоборот "не работать в диапазоне +-10"
Доброе время суток товарищи. Подскажите пожалуйста как закодить такое условие: появился новый дневной хай(мах), если этот новый хай в пределах 10пунктов от старого хая - то производится какое-то действие.
неточный вопрос,выше или ниже на 10 пунктов???
если допускается вниз 10 пунктов и вверх 10 пунктов,то я бы написал так:
PHP:if((High[1]<=High[2]+10*Point)||(High[1]>=High[2]-10*Point)) { ваше действие; }
Вместо || (или) надо && (и) использовать.
High[1] находится в полосе +- 10п. от High[2].PHP:if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point)) { ваше действие; }
Вместо || (или) надо && (и) использовать.
... в момент открытия бара Open[0] = High[0] = Low[0] = Close[0] а потом они начинают расходиться...
if(Open[0]==Close[0]&&High[0]==Low[0])
{
OrderSend(...);
}
if(Open[0]==Close[0])
{
OrderSend(...);
}
Это очень опасно. Дело в том, что если в МТ присутствует тяжёлый индикатор и он загрузит комп так что проскочит первый тик мимо советника, то на новом баре может уже не быть такого равенства. Это для первого вариантатогда можно написать такой код для открытия ордера на начале бара:
или можно наверно ограничиться таким кодом:PHP:if(Open[0]==Close[0]&&High[0]==Low[0]) { OrderSend(...); }
вопрос ко всем программерам - будет ли такой код работать как надо, если нет, то подкорректируйте плиз его, или приведите свои варианты короткого куска кода открывающего ордер на Open[0]PHP:if(Open[0]==Close[0]) { OrderSend(...); }
Есть много способов детектировать появление нового бара, и через Volume, и через Bars, через равенство OHLC, через TimeCurrent(), но из них один только один надежный - изменение Time[0]. Все остальное на быстром рынке может не сработать.тогда можно написать такой код для открытия ордера на начале бара:
вопрос ко всем программерам - будет ли такой код работать как надо, если нет, то подкорректируйте плиз его, или приведите свои варианты короткого куска кода открывающего ордер на Open[0]