Ответ
 
Опции темы
11.07.2014, 10:21
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Для начала неплохо было бы закрывать BUY по Bid, SELL по Ask.
Да так и сделано - я ж скопировал код функции из работающего советника, могу полный текст функции привести в обоих случаях. Боюсь, что разбираться никто не захочет, а я заблудился где-то
ansol на форуме Ответить с цитированиемОтветить с цитированием  
11.07.2014, 10:37
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Да так и сделано - я ж скопировал код функции из работающего советника, могу полный текст функции привести в обоих случаях. Боюсь, что разбираться никто не захочет, а я заблудился где-то
Ты что-то сам себе противоречишь, постом выше ты же написал наоборот.
Давай текст, посмотрю.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
11.07.2014, 11:44
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Ты что-то сам себе противоречишь, постом выше ты же написал наоборот.
Давай текст, посмотрю.
Да не, все верно было. Где-то в другом месте логику нарушил, буду искать
PHP код:
iType OP_SELLsType "SELL"dPrice Ask;
 
бла-бла-бла
if(OrderProfit() < && OrderType() == iType)
  {
      
iProfit OrderProfit()/(dRx*OrderLots()*MarketInfo(_SymbolMODE_TICKVALUE));
         if(
iProfit Stop*dATR/Point && dProfit*dRx OrderProfit() > 0)
             {
                 
fClose OrderClose(OrderTicket(), OrderLots(), dPriceiPipsclrNONE);
                     if(
fClose)
                         {
                             
Comment("Epic Fail: "OrderComment(), "\nwith "_Symbol"/"sType"\nLoss: "OrderProfit(),
                             
"$ R"DoubleToStr(dATR/Point0), "\n"TimeToStr(TimeLocal(),TIME_MINUTES));
                              return(
fClose);
                           } else {
                                        
int err =  GetLastError();
                                        Print(
"error(",err,"): "ErrorDescription(err), " #"OrderTicket(), " "OrderComment());
                                        }
                                  }
                         } 
ansol на форуме Ответить с цитированиемОтветить с цитированием  
11.07.2014, 12:57
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Напиши
Код:
fClose = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), iPips, clrNONE);
и жизнь наладится.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
abuuuuuu (11.07.2014), Ugar (11.07.2014)
11.07.2014, 13:43
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Напиши
PHP код:
fClose OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), iPipsclrNONE); 
и жизнь наладится.
Как это OrderClosePrice?!
Оно же еще не закрытое! В хелпе приводится пример с выборкой из MODE_HISTORY для этого параметра, а для MODE_TRADES ХЗ что будет вообще, скорее всего "0"
ansol на форуме Ответить с цитированиемОтветить с цитированием  
11.07.2014, 13:58
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Как это OrderClosePrice?!
Оно же еще не закрытое!
Ему незакрытому OrderClosePrice() вернет правильную цену Bid или Ask в зависимости от направления позиции. Недокументированная фича (а зря - удобно), работала всегда и будет работать.

Последний раз редактировалось qqmber; 11.07.2014 в 14:18.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (15.07.2014), ansol (11.07.2014)
11.07.2014, 14:31
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Ему незакрытому OrderClosePrice() вернет правильную цену Bid или Ask в зависимости от направления позиции. Недокументированная фича (а зря - удобно), работала всегда и будет работать.
Ща проверим!
Это ж два if экономится в коде! Елы-палы!
ansol на форуме Ответить с цитированиемОтветить с цитированием  
11.07.2014, 16:37
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Ща проверим!
Это ж два if экономится в коде! Елы-палы!
Ну да, ну да. Хорошо еще иметь в виду, что при маркет исполнении этот параметр вообще игнорируется, хоть свой день рождения поставь
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
11.07.2014, 16:43
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Ну да, ну да. Хорошо еще иметь в виду, что при маркет исполнении этот параметр вообще игнорируется, хоть свой день рождения поставь
Не игнорируется, однако! В тестере (я же указал выше) выкидывает:
Error 138 requote
Это если перепутать Ask и Bid для SELL и BUY

А вот с OrderClosePrice все ОК работает - я уже проверил в тестере, счас можно на реале посмотреть, если до окончания торгов такой случай представится(иначе только на следующей неделе уточнить удастся)

Последний раз редактировалось ansol; 11.07.2014 в 16:45.
ansol на форуме Ответить с цитированиемОтветить с цитированием  
11.07.2014, 17:01
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Не игнорируется, однако! В тестере (я же указал выше) выкидывает:
Error 138 requote
Это если перепутать Ask и Bid для SELL и BUY

А вот с OrderClosePrice все ОК работает - я уже проверил в тестере, счас можно на реале посмотреть, если до окончания торгов такой случай представится(иначе только на следующей неделе уточнить удастся)
Тестер это довольно ограниченная модель вселенной
Я про маркет исполнение писал. Там нет и не может быть реквот, маркет ордер уходит вообще без цены, почем зальют, ту и получишь.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
13.07.2014, 13:36
Аватар для ctmcn
ctmcn Новичок форума
Регистрация: 02.04.2011 / Сообщений: 35
Поблагодарили 6 раз(а) / Репутация: 7
Здравствуйте !
Помогите, пожалуйста. Типовые варнинги (2шт.) при проверке МЕ от билдов 6ХХ.
Что они такое и как от них избавиться.
С уважением.
Вложения:
Тип файла: mq4 Bollinger Bands_Stop_v1.mq4 (6.3 Кб, 8 просмотров)
ctmcn вне форума Ответить с цитированиемОтветить с цитированием  
13.07.2014, 13:41
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Никак. Убрать строчку
PHP код:
#property strict 
Доходит до смешного, пишем
PHP код:
round 
? а оно предупреждение выдает в стиле "часть данных может потеряться"
ansol на форуме Ответить с цитированиемОтветить с цитированием  
13.07.2014, 16:58
Аватар для ctmcn
ctmcn Новичок форума
Регистрация: 02.04.2011 / Сообщений: 35
Поблагодарили 6 раз(а) / Репутация: 7
Сообщение от ansol Посмотреть сообщение
Никак. Убрать строчку
PHP код:
#property strict 
Доходит до смешного, пишем
PHP код:
round 
? а оно предупреждение выдает в стиле "часть данных может потеряться"
Вообще-то все убрал сам - озарение наверное посетило.
Так, что варнингов быть не должно в принципе.
ctmcn вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
13.07.2014, 17:05
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от ctmcn Посмотреть сообщение
Вообще-то все убрал сам - озарение наверное посетило.
Так, что варнингов быть не должно в принципе.
Их и нет в нормальном языке, только в MQL4 есть
Типа:
PHP код:
double a 1.5;
int b round(a); 
Получаем:
possible loss of data due to type conversion моясова.mq4 1 10
ansol на форуме Ответить с цитированиемОтветить с цитированием  
13.07.2014, 18:19
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от ansol Посмотреть сообщение
Их и нет в нормальном языке, только в MQL4 есть
Типа:
PHP код:
double a 1.5;
int b round(a); 
Получаем:
possible loss of data due to type conversion моясова.mq4 1 10
Их и в MQL4 не будет у внимательных программистов.
Функция MathRound возвращает число типа double _http://docs.mql4.com/ru/math/mathround а в примечании сказано только о том что вместо функции MathRound() можно использовать функцию round(). и ничего об изменении типа данных.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
13.07.2014, 18:20
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от AlexeyVik Посмотреть сообщение
Их и в MQL4 не будет у внимательных программистов.
Функция MathRound возвращает число типа double _http://docs.mql4.com/ru/math/mathround а в примечании сказано только о том что вместо функции MathRound() можно использовать функцию round(). и ничего об изменении типа данных.
Это всё понятно, внимательный ты наш. Как получить целое число из double?

Я уж не говорю о том, что спред по ихнему почему-то тоже double, хотя на самом деле целое:
PHP код:
int spread MarketInfo(_SymbolMODE_SPREAD
выдает такое же "предупреждение". Это от большого ума, специально, для выявления "внимательных" программистов, ога

Последний раз редактировалось ansol; 13.07.2014 в 18:23.
ansol на форуме Ответить с цитированиемОтветить с цитированием  
13.07.2014, 18:30
Аватар для Dobryj
Dobryj Почётный гражданин
Регистрация: 07.06.2012 / Сообщений: 222
Поблагодарили 293 раз(а) / Репутация: 325
Всем привет , Может у кого есть прошлый билд МТ дабы скомпилить индикатор , писал индикатор год назад остался в открытом коде сейчас компилирую выдает кучу ошибок , печаль ))
И возможно ли такое провернуть , скомпилить в старом и закинуть под новый билд или придется все таки исправлять все ошибки ?
Заранее спасибо !
Dobryj вне форума Ответить с цитированиемОтветить с цитированием  
14.07.2014, 07:35
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от ansol Посмотреть сообщение
Это всё понятно, внимательный ты наш. Как получить целое число из double?
Кроме внимательности нужно ещё и умение думать...
int a = 1;
double b = 1.0;
равны-ли a и b целое-ли число b?
Сообщение от ansol Посмотреть сообщение
Я уж не говорю о том, что спред по ихнему почему-то тоже double, хотя на самом деле целое:
PHP код:
int spread MarketInfo(_SymbolMODE_SPREAD
выдает такое же "предупреждение". Это от большого ума, специально, для выявления "внимательных" программистов, ога
А что касается спреда, никто не знает что нас ждёт в ближайшем будущем... никто не может гарантировать что "завтра" не добавят ещё и шестой знак в котировки.
А объявить переменную типа int для функции возвращающей значение типа double можно только от недостатка ума.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
DomovenokBrest (26.07.2015)
14.07.2014, 07:59
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от Dobryj Посмотреть сообщение
Всем привет , Может у кого есть прошлый билд МТ дабы скомпилить индикатор , писал индикатор год назад остался в открытом коде сейчас компилирую выдает кучу ошибок , печаль ))
И возможно ли такое провернуть , скомпилить в старом и закинуть под новый билд или придется все таки исправлять все ошибки ?
Заранее спасибо !
Держи 451, но я не знаю не обновится-ли он при запуске. Лучше, для подстраховки, найти папку WebInstall и её удалить. Или удалить всё её содержимое, в ней находятся файлы обновления МТ.
Вложения:
Тип файла: rar Meta451.rar (1.83 Мб, 5 просмотров)
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Dobryj (15.07.2014)
14.07.2014, 08:16
Аватар для ctmcn
ctmcn Новичок форума
Регистрация: 02.04.2011 / Сообщений: 35
Поблагодарили 6 раз(а) / Репутация: 7
МЕ от 509 билда
Вложения:
Тип файла: zip ME_509.zip (1.72 Мб, 8 просмотров)
ctmcn вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Dobryj (15.07.2014)
Ответ

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


Опции темы

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

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



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


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