Ответ
 
Опции темы
Старый 18.02.2013, 20:18   #981 (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
Сообщение от Алекc1234 Посмотреть сообщение
Такое у меня бывает, но редко, а я это не учитываю - вижу только тогда ошибку когда открыто одно направление - или только бай или только селл...Вернее, на бай ошибки то и нету, только на селл...
Вот моя функция опрелделения профита
Код:
void ProfitOrders()
{
      int Total = OrdersTotal();
      ProfitBuy = 0; ProfitSel = 0;//Объявлены не глобальном уровне
      for(int i = 0; i < Total; i++)
       {
        if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
          if(OrderType() == OP_BUY) ProfitBuy = ProfitBuy+OrderProfit()+OrderSwap()+OrderCommission();
          if(OrderType() == OP_SELL) ProfitSel = ProfitSel+OrderProfit()+OrderSwap()+OrderCommission();
         }
       }
}//******************************************************************|
Всё работает без ошибок. Отличается от твоей только тем, что профит считается в валюте депозита и по всем ордерам одного направления вместе.

Последний раз редактировалось AlexeyVik; 18.02.2013 в 20:24.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.02.2013), Алекc1234 (19.02.2013)
Старый 18.02.2013, 20:21   #982 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Ещё вопрос. Этот цикл в пользовательской функции или в теле кода?
В пользовательской функции - сначала идёт void бла-бла-бла, потом цикл

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 20:29   #983 (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
Сообщение от Алекc1234 Посмотреть сообщение
В пользовательской функции - сначала идёт void бла-бла-бла, потом цикл
Тогда ищи причину в том, что вызываешь функцию не своевременно.
Раздели переменные профита по направлениям и вызывай функцию непосредственно перед условием закрытия ордеров.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.02.2013), Алекc1234 (18.02.2013)
Старый 18.02.2013, 20:32   #984 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Тогда ищи причину в том, что вызываешь функцию не своевременно.
Раздели переменные профита по направлениям и вызывай функцию непосредственно перед условием закрытия ордеров.
Если можно, изобрази, пожалуйста, хотя бы примерно, как это выглядит в коде...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 20:37   #985 (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
Ты не знаешь как объявляются переменные на глобальном уровне? Просто вне всех функций, можно сразу под параметрами extern
А вызов функции можно поставить в самом начале функции старт. После объявления локальных переменных.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.02.2013), Алекc1234 (18.02.2013)
Старый 19.02.2013, 13:47   #986 (permalink)
Новичок форума
 
Аватар для Pivovarachkin
 
Регистрация: 09.01.2013
Сообщений: 3
Репутация: 21
Pivovarachkin
Сказал(а) спасибо: 15
Поблагодарили 20 раз(а) в 2 сообщениях
Поинты: 0
Всем привет! Друзья кто поможет сделать робота, на основе одного индикатора с 2-мя периодами? я совсем ни бум бум в програмировании..
Pivovarachkin вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.02.2013, 15:10   #987 (permalink)
Элитный участник
 
Аватар для cfifcfif
 
Регистрация: 22.07.2011
Адрес: краснодар
Сообщений: 1,403
Репутация: 1424
cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif
Сказал(а) спасибо: 3,621
Поблагодарили 1,422 раз(а) в 706 сообщениях
Поинты: 22
Отправить сообщение для cfifcfif с помощью Skype™
Ребят доброго вам здравия , у меня вопрос если заказать сову и хочетса что-бы ордера открывались быстренко как вы думайте быстрей ордера открыватса будут от тика или о начало 1 минуты ну или 5 вообщем надеюсь поняли очём я ?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cfifcfif вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.02.2013, 16:41   #988 (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
Сообщение от cfifcfif Посмотреть сообщение
Ребят доброго вам здравия , у меня вопрос если заказать сову и хочетса что-бы ордера открывались быстренко как вы думайте быстрей ордера открыватса будут от тика или о начало 1 минуты ну или 5 вообщем надеюсь поняли очём я ?
Основной код советника выполняется с приходом тика. Даже если задать условие открыть с начала минуты. Условие сработает на первом тике от начала минуты.

Есть ещё такое мнение. Существует много систем которые работают по открытию бара. Получается что на сервер постоянно сыпятся приказы от трейдеров, скриптов и советников, а в первые тики от открытия бара к ним добавляются приказы советников работающих по открытию бара. От сюда, чисто теоретически, очередь приказов на сервере в начале бара больше чем в остальное время. Но это теория, а на практике лучше делать так как лучше для системы.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 19.02.2013 в 16:52.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
cfifcfif (19.02.2013)
Старый 19.02.2013, 16:41   #989 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Тогда ищи причину в том, что вызываешь функцию не своевременно.
Раздели переменные профита по направлениям и вызывай функцию непосредственно перед условием закрытия ордеров.
Прошу прощения, есть ещё одно, что возможно важно - когда открывается рыночный ордер, то в рынке остаются ещё две стоповые отложки - байстоп и селлстоп. И тогда то расчёт на селл и производится неправильно. А вот стоило мне убрать их, как вроде всё правильно считается...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.02.2013, 17:29   #990 (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
Сообщение от Алекc1234 Посмотреть сообщение
Прошу прощения, есть ещё одно, что возможно важно - когда открывается рыночный ордер, то в рынке остаются ещё две стоповые отложки - байстоп и селлстоп. И тогда то расчёт на селл и производится неправильно. А вот стоило мне убрать их, как вроде всё правильно считается...
Да-уж. Столько времени ты упирался в то что не работает код... а оказалось, что не работает алгоритм...
Что касается нескольких рыночных и отложенных ордеров так это такое поле для фантазий, что я даже боюсь начинать этот диалог.
Ну ты пойми, что тебе самому надо научиться ставить задачу и находить формулу её решения. Это не арифметика, где можно по подобию что-то решить.
Представь себе, у меня тоже нет однозначного решения любой задачи. Я каждый советник или индикатор пишу как новый. Обязательно что-то да будет не так как в предыдущих.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (19.02.2013)
Старый 22.02.2013, 14:15   #991 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
всем прет - чет не работает расчет от открытия дня...
подскажите в чем ошибка?

double priceOpen = iOpen(Symbol(),1440,0);
double price1 = NormalizeDouble(priceOpen+30*Point,Digits);
double price2 = NormalizeDouble(priceOpen-30*Point,Digits);

if (Bid > price1) {BuyOrder();}
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.02.2013, 14:29   #992 (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
Сообщение от vetallic Посмотреть сообщение
всем прет - чет не работает расчет от открытия дня...
подскажите в чем ошибка?

double priceOpen = iOpen(Symbol(),1440,0);
double price1 = NormalizeDouble(priceOpen+30*Point,Digits);
double price2 = NormalizeDouble(priceOpen-30*Point,Digits);

if (Bid > price1) {BuyOrder();}
Я так полагаю, что это пользовательская функция...
А не в ней-ли проблема???
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.02.2013, 14:33   #993 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
все разобрался, тупанул маленько, в другом месте лишний код был...
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 16:48   #994 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Коллеги! Вот этот системный дескриптор окна какая нибудь функция использует?
Или он сам для себя существует.

int WindowHandle( string symbol, int timeframe)
Возвращает системный дескриптор окна (window handle), содержащего указанный график. Если график с symbol и timeframe на момент вызова функции не открыт, то возвращается 0.
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 17:31   #995 (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
Сообщение от aufx Посмотреть сообщение
Коллеги! Вот этот системный дескриптор окна какая нибудь функция использует?
Или он сам для себя существует.

int WindowHandle( string symbol, int timeframe)
Возвращает системный дескриптор окна (window handle), содержащего указанный график. Если график с symbol и timeframe на момент вызова функции не открыт, то возвращается 0.
А WindowExpertName() ты где-нибудь используешь?
Так-же и WindowHandle() можно использовать для проверки.
И ещё используется в не документированных функциях. Таких как изменить ТФ графика, удалить с графика советник... Даже есть возможность закрыть окно графика и кажется весь терминал.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 17:34   #996 (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
Сообщение от aufx Посмотреть сообщение
Коллеги! Вот этот системный дескриптор окна какая нибудь функция использует?
Или он сам для себя существует.

int WindowHandle( string symbol, int timeframe)
Возвращает системный дескриптор окна (window handle), содержащего указанный график. Если график с symbol и timeframe на момент вызова функции не открыт, то возвращается 0.
Странный вопрос. Все функции могут использоваться в пользовательской или специальной функции, в том числе и эта.
Если пока не доходит как её использовать, то можно не использовать. Но в один прекрасный момент, может всплыть задача, в решении которой эта функция окажется самой подходящей.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Sergey Kovalyov (23.02.2013)
Старый 23.02.2013, 18:00   #997 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от AlexeyVik Посмотреть сообщение
А WindowExpertName() ты где-нибудь используешь?
Так-же и WindowHandle() можно использовать для проверки.
И ещё используется в не документированных функциях. Таких как изменить ТФ графика, удалить с графика советник... Даже есть возможность закрыть окно графика и кажется весь терминал.
"Не документируемые функции" ? Можно поподробнее?
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 18:18   #998 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от Ugar Посмотреть сообщение
Странный вопрос. Все функции могут использоваться в пользовательской или специальной функции, в том числе и эта.
Если пока не доходит как её использовать, то можно не использовать. Но в один прекрасный момент, может всплыть задача, в решении которой эта функция окажется самой подходящей.
Наверное я не корректно задал вопрос.
Извиняюсь за наивность, но спрошу по другому.
Кроме как для определения открыто ли окно инструмента,для чего еще нужен этот "системный дескриптор"? Для чего-то он определяется.
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 18:29   #999 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от aufx Посмотреть сообщение
Наверное я не корректно задал вопрос.
Извиняюсь за наивность, но спрошу по другому.
Кроме как для определения открыто ли окно инструмента,для чего еще нужен этот "системный дескриптор"? Для чего-то он определяется.
Посмотрите файл include\WinUser32.mqh Там описаны функции вызова WinAPI из user32.dll, и почти все из них принимают дескриптор как аргумент.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.02.2013, 18:40   #1000 (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
Сообщение от aufx Посмотреть сообщение
Наверное я не корректно задал вопрос.
Извиняюсь за наивность, но спрошу по другому.
Кроме как для определения открыто ли окно инструмента,для чего еще нужен этот "системный дескриптор"? Для чего-то он определяется.
1 Пример:
Допустим нужно что бы советник отличал свои ордера от чужих. Для этого используют Magic. А если нужно что бы после перезапуска терминала советник забыл свои старые ордера. В качестве magic можно использовать дескриптор окна. Маджики у все советников будут разными потому что дескрипторы разные. И при перезапуске советники забудут свои старые ордера, так как после перезапуска дескрипторы будут другими.
2 пример:
Допустим советник, при запуске терминала сильно тормозит. Или по другой причине, нужно что бы советники запускались не одновременно.
На первом тике после запуска ставим Sleep. Время задержки задаём рандомом. Но рандом генерит псевдо случайность. По этому у всех советников будут одинаковые значения. А вот если предварительно рандом генераторы инициализировать дескриптором окна, то в результате у всех советников будет выдержана разная пауза.
Если подумать можно придумать много примеров. Только зачем? Лучше действовать наоборот. Для решения задач искать подходящий инструментарий, вместо того что бы искать задачи по инструментарий.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 23.02.2013 в 18:52.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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