Ответ
 
Опции темы
Старый 11.01.2014, 17:42   #2281 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
Как на счёт вот такого варианта?
if(MathAbs(High[1]-High[2])<10.5*Point)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Milord (11.01.2014), Partizan64 (16.01.2014)
Старый 11.01.2014, 17:57   #2282 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
Как на счёт вот такого варианта?
if(MathAbs(High[1]-High[2])<10.5*Point)
Спасибо Ugar, ваш вариант более компактен!)
но неясно почему 10.5?
и чем будет отличаться логика работы вашего варианта, и вот такого:
if(MathAbs(High[1]-High[2])<=10*Point)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.01.2014, 18:15   #2283 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
Спасибо Ugar, ваш вариант более компактен!)
но неясно почему 10.5?
и чем будет отличаться логика работы вашего варианта, и вот такого:
if(MathAbs(High[1]-High[2])<=10*Point)
Если так сильно нравится знак <=, тогда уж лучше вот так:
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (11.01.2014)
Старый 11.01.2014, 19:30   #2284 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Ugar Посмотреть сообщение
Если так сильно нравится знак <=, тогда уж лучше вот так:
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)
Я себе плохо представляю валютную пару, у которой разница цен может быть 10!
Вот разница 10*Point , то бишь, 10 пунктов, вполне реальна, а как, скажем, у евробакса может быть разница 10, когда он сам "весит" 1.35?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 11.01.2014, 19:46   #2285 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Я себе плохо представляю валютную пару, у которой разница цен может быть 10!
Вот разница 10*Point , то бишь, 10 пунктов, вполне реальна, а как, скажем, у евробакса может быть разница 10, когда он сам "весит" 1.35?
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)
Выделенная красным часть, это разница в целых пунктах.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (12.01.2014)
Старый 11.01.2014, 19:48   #2286 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Ugar Посмотреть сообщение
if(MathRound(MathAbs(High[1]-High[2])/Point)<=10)
Выделенная красным часть, это разница в целых пунктах.
Пардон!
Моя невнимательность!
Но "делить" не есть хорошо! Впрочем, это дело конкретного программера
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Ugar (11.01.2014)
Старый 11.01.2014, 20:29   #2287 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Но "делить" не есть хорошо! Впрочем, это дело конкретного программера
Это лучше чем сравнивать дробные значения на =

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 11.01.2014, 20:30   #2288 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Ugar
Уел
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Ugar (11.01.2014)
Старый 12.01.2014, 04:11   #2289 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Почему-то не могу получить значения буферов FastTMALine.
PHP код:
int nResult iCustom(NULLPERIOD_TF"FastTMALine",
                                          
TimeFrame,
                                          
TMAPeriod,
                                          
Price,
                                          
ATRMultiplier,
                                          
ATRPeriod,
                                          
TrendThreshold,
                                          
ShowCenterLine,
                                          
alertsOn,
                                          
alertsMessage,
                                          
alertsSound,
                                          
alertsEmail,
                                          
MoveEndpointEveryTick,
                                          
MaxBarsBackbufferpos); 
Первые три дают единицу, последние три бредовое число.
Я где-то затупил так, что не могу увидеть где )
Помогите.
_http://rghost.ru/51583057

Последний раз редактировалось NSerega; 12.01.2014 в 20:40.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 08:58   #2290 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Milord Посмотреть сообщение
подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
Вместо || (или) надо && (и) использовать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (12.01.2014)
Старый 12.01.2014, 09:14   #2291 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Вместо || (или) надо && (и) использовать.
Это будет самый, самый вариант. Никогда условие не будет выполнено.
Потому, что High[1] никогда не может и выше и ниже High[2] одновременно.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (12.01.2014)
Старый 12.01.2014, 09:16   #2292 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от matro3 Посмотреть сообщение
Почему-то не могу получить значения буферов FastTMALine.
PHP код:
int nResult iCustom(NULLPERIOD_TF"FastTMALine",
                                          
TimeFrame,
                                          
TMAPeriod,
                                          
Price,
                                          
ATRMultiplier,
                                          
ATRPeriod,
                                          
TrendThreshold,
                                          
ShowCenterLine,
                                          
alertsOn,
                                          
alertsMessage,
                                          
alertsSound,
                                          
alertsEmail,
                                          
MoveEndpointEveryTick,
                                          
MaxBarsBackbufferpos); 
Первые три дают единицу, последние три бредовое число.
Я где-то затупил так, что не могу увидеть где )
Помогите.
_http://rghost.ru/51583057
Думаю, тут уместнее double nResult = iCustom();

Последний раз редактировалось NSerega; 12.01.2014 в 20:40.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (12.01.2014), matro3 (12.01.2014)
Старый 12.01.2014, 09:19   #2293 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Я имею в виду вот так
PHP код:
if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point))
{
ваше действие;

High[1] находится в полосе +- 10п. от High[2].

Сообщение от AlexeyVik Посмотреть сообщение
Это будет самый, самый вариант. Никогда условие не будет выполнено.
Потому, что High[1] никогда не может и выше и ниже High[2] одновременно.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 09:26   #2294 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Я имею в виду вот так
PHP код:
if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point))
{
ваше действие;

High[1] находится в полосе +- 10п. от High[2].
Ну так это-же совсем другое условие.
Это не просто заменить или на и
В том варианте было наоборот "не работать в диапазоне +-10"
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 09:37   #2295 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от AlexeyVik Посмотреть сообщение
Ну так это-же совсем другое условие.
Это не просто заменить или на и
В том варианте было наоборот "не работать в диапазоне +-10"
Ты, видать, начало пропустил.
Наш молчаливый друг спрашивает
Сообщение от Partizan64 Посмотреть сообщение
Доброе время суток товарищи. Подскажите пожалуйста как закодить такое условие: появился новый дневной хай(мах), если этот новый хай в пределах 10пунктов от старого хая - то производится какое-то действие.
Милорд отвечает почти правильно, только И/ИЛИ путает.

Сообщение от Milord Посмотреть сообщение
неточный вопрос,выше или ниже на 10 пунктов???
если допускается вниз 10 пунктов и вверх 10 пунктов,то я бы написал так:

PHP код:
if((High[1]<=High[2]+10*Point)||(High[1]>=High[2]-10*Point))
{
ваше действие;

Я говорю, поменять операции

Сообщение от qqmber Посмотреть сообщение
Вместо || (или) надо && (и) использовать.
Получится правильно

Сообщение от qqmber Посмотреть сообщение
PHP код:
if((High[1]<=High[2]+10*Point)&&(High[1]>=High[2]-10*Point))
{
ваше действие;

High[1] находится в полосе +- 10п. от High[2].
Впрочем, это все равно мимо, поскольку вопрос был с картинкой, на которой нарисован M15 и пара максимумов часах в трех друг от друга. High[1] и High[2] тут не причем, очевидно.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (12.01.2014), Milord (12.01.2014)
Старый 12.01.2014, 13:01   #2296 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Ну так вот если-бы ты так расписал сразу, то и вопросов не возникло-бы ни у кого. Даже у Бекингема.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 13:25   #2297 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от qqmber Посмотреть сообщение
Вместо || (или) надо && (и) использовать.
спасибо за уточнение!)
у меня кстати была такая мысль заменить || на &&, но сомневался..)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 13:39   #2298 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от AlexeyVik Посмотреть сообщение
... в момент открытия бара Open[0] = High[0] = Low[0] = Close[0] а потом они начинают расходиться...
тогда можно написать такой код для открытия ордера на начале бара:

PHP код:
if(Open[0]==Close[0]&&High[0]==Low[0])
 {
  
OrderSend(...);
 } 
или можно наверно ограничиться таким кодом:

PHP код:
if(Open[0]==Close[0])
 {
  
OrderSend(...);
 } 
вопрос ко всем программерам - будет ли такой код работать как надо, если нет, то подкорректируйте плиз его, или приведите свои варианты короткого куска кода открывающего ордер на Open[0]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 13:48   #2299 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Milord Посмотреть сообщение
тогда можно написать такой код для открытия ордера на начале бара:

PHP код:
if(Open[0]==Close[0]&&High[0]==Low[0])
 {
  
OrderSend(...);
 } 
или можно наверно ограничиться таким кодом:

PHP код:
if(Open[0]==Close[0])
 {
  
OrderSend(...);
 } 
вопрос ко всем программерам - будет ли такой код работать как надо, если нет, то подкорректируйте плиз его, или приведите свои варианты короткого куска кода открывающего ордер на Open[0]
Это очень опасно. Дело в том, что если в МТ присутствует тяжёлый индикатор и он загрузит комп так что проскочит первый тик мимо советника, то на новом баре может уже не быть такого равенства. Это для первого варианта
Да и Open[0] останется неизменным, а вот Close[0] в любой момент и несколько раз подряд может быть равен цене открытия бара. А это для второго.

Последний раз редактировалось AlexeyVik; 12.01.2014 в 13:50.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 12.01.2014, 14:15   #2300 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Milord Посмотреть сообщение
тогда можно написать такой код для открытия ордера на начале бара:
вопрос ко всем программерам - будет ли такой код работать как надо, если нет, то подкорректируйте плиз его, или приведите свои варианты короткого куска кода открывающего ордер на Open[0]
Есть много способов детектировать появление нового бара, и через Volume, и через Bars, через равенство OHLC, через TimeCurrent(), но из них один только один надежный - изменение Time[0]. Все остальное на быстром рынке может не сработать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 10:37. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO