Ответить
16.12.2012, 16:18
Аватар для mogul
mogul mogul вне форума Активный участник
Регистрация: 20.04.2009 / Сообщений: 12
Поблагодарили 0 раз(а) / Репутация: 0
спасибо, все отлично работает. только все же цену бы ввести, т.к. в индикаторе они уже есть, т.е. у меня они находятся так там:

H=ObjectGet(name,OBJPROP_PRICE1);
L=ObjectGet(name,OBJPROP_PRICE2);

вот мне бы их к вашему коду эти H и L
приделать, что бы вручную даты не вводить.
16.12.2012, 16:55
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
спасибо, все отлично работает. только все же цену бы ввести, т.к. в индикаторе они уже есть, т.е. у меня они находятся так там:

H=ObjectGet(name,OBJPROP_PRICE1);
L=ObjectGet(name,OBJPROP_PRICE2);

вот мне бы их к вашему коду эти H и L
приделать, что бы вручную даты не вводить.
Не надо к времени приплетать цену, если для этого нет надобности. Если индикатор ставит объект на High и Low баров, то в нём уже есть номера этих баров. Достаточно найти их в коде и вычесть один из другого.
Если объекты ставятся вручную, то не факт что вообще существует бар у которого High совпадает с ценой линии. Тем более что линия может находиться между пунктами, в таком случае, бара у которого High или Low будет совпадать с значением линии существовать не может.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 16.12.2012 в 16:59.
16.12.2012, 17:59
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
А это уже вообще ни в какие рамки не лезет...
Как можно открывать OP_BUYLIMIT и OP_SELLLIMIT, а модифицировать OP_BUY и OP_SELL
Не удивительно что не работает...
Это не не понимание, а больше некоторая невнимательность, рассредоточен бываю, вот и ..
Впредь, буду внимательнее писать код и отвечать на форуме. По крайне мере постараюсь. Сам вижу, что бывает пишу не то что нужно совсем.
17.12.2012, 17:58
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Рекомендую тебе модифицировать ордер сразу после открытия. Таким образом не надо будет проверять стопы на каждом тике.

Скрытый текст

PHP код:
int ticket_op=-1;
 
 while(
IsTradeContextBusy()) Sleep(1000);
 
ticket_op=OrderSend(Symbol(),OP_BUYLIMIT,NormalizeDouble(Lot_*K_Lot+PlusLot,Lot_digits),NormalizeDouble(price_b-Step*point,Digits),slippage,0,0,comment,mag,0,Green);
 
Sleep(500);
 if(
ticket_op>-1) {OrderSelect(ticket_op,SELECT_BY_TICKET); OrderModify(ticket_op,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(price_b-Step*point+prof*point,Digits),CLR_NONE);}                    
 } 
[свернуть]
Я вот тока щяс подумал по этому поводу и вернулся, дабы наверстать.
Если счёт есн, то сразу стопы и тейки нельзя же ставить ни на лимитники ни на рыночные ордера, я верно понимаю?

Получается, если я, например, с пользовательской ф-ункции так так ты eevviill указал буду модифицировать ордер сразу, то он скорее всего не откроется т.е. не станет рыночным, а оно так и будет, если ордер лимитный или стоповый. Таким образом, мы будем модифицировать НЕ рыночный ордер, который ещё когда откроется сразу тейк и стоп не получит, т.к. счёт есн.
Выходит, условия нужно как-то изменить, так?
17.12.2012, 18:30
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Я вот тока щяс подумал по этому поводу и вернулся, дабы наверстать.
Если счёт есн, то сразу стопы и тейки нельзя же ставить ни на лимитники ни на рыночные ордера, я верно понимаю?

Получается, если я, например, с пользовательской ф-ункции так так ты eevviill указал буду модифицировать ордер сразу, то он скорее всего не откроется т.е. не станет рыночным, а оно так и будет, если ордер лимитный или стоповый. Таким образом, мы будем модифицировать НЕ рыночный ордер, который ещё когда откроется сразу тейк и стоп не получит, т.к. счёт есн.
Выходит, условия нужно как-то изменить, так?
Не правильно. В той функции открытие ордера, а потом модификация. Открывается без стопов. Записываем тикет(если ордер открылся) и модифицируем его.
hoz 
17.12.2012, 19:57
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Не правильно. В той функции открытие ордера, а потом модификация. Открывается без стопов. Записываем тикет(если ордер открылся) и модифицируем его.
Хотя да.. Если в рынке висит лимитник, то он ещё не сработал, а значит его тикет равен 0. А значит и модифицировать не будет попыток..
17.12.2012, 20:18
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Хотя да.. Если в рынке висит лимитник, то он ещё не сработал, а значит его тикет равен 0. А значит и модифицировать не будет попыток..
Ну у меня проверка больше -1, так что будет модификация. Но не пойму в чём проблема. Ты хочешь чтобы лимитник не модифицировался? На ЕСН отложка может быть не только потом модифицирована, но и сразу выставлена со стопами.
17.12.2012, 20:54
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
На ЕСН отложка может быть не только потом модифицирована, но и сразу выставлена со стопами.
Уверен? Т.е. только рыночные ордера без стопов посылаются, а отложки со стопами можно?
17.12.2012, 21:03
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Уверен? Т.е. только рыночные ордера без стопов посылаются, а отложки со стопами можно?
Да.
17.12.2012, 21:14
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Уверен? Т.е. только рыночные ордера без стопов посылаются, а отложки со стопами можно?
Я торгую на демо есн счёте и выставляю отложки со стопами...
17.12.2012, 21:19
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Уверен? Т.е. только рыночные ордера без стопов посылаются, а отложки со стопами можно?
И даже если бы было не так, то в моём примере стопы выставлялись ПОСЛЕ открытия(выставления) ордера.
18.12.2012, 06:29
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Хотя да.. Если в рынке висит лимитник, то он ещё не сработал, а значит его тикет равен 0. А значит и модифицировать не будет попыток..
.
hoz, запомни раз и на всегда, ТИКЕТ ОРДЕРА НИКОГДА НЕ МОЖЕТ БЫТЬ РАВНЫМ НУЛЮ!!!
Равным нулю может быть только переменная которой присваивается тикет ордера во время открытия.

Если у какого-то ДЦ лимитники открываются со стопами, это не значит, что так у всех. И даже могут открываться на демке и в тестере, но на реале не откроется. И тем-более не запрещается ставить ордер без стопов, а потом модифицировать ордер на любом типе счёта.
18.12.2012, 07:50
Регистрация: 18.12.2012 / Сообщений: 2
Поблагодарили 2 раз(а) / Репутация: 3
Помогите, уперся в следующую проблему.
Дц, для которого я пишу советника, при свопировании меняет номер ордера и цену открытия ордера. Таким образом, через несколько дней я не могу определить первоначальную цену открытия, а для меня это критично.
И шо теперь делать? Как ее проклятую вытащить?
18.12.2012, 08:52
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от: Сумасшедший Гарри
Помогите, уперся в следующую проблему.
Дц, для которого я пишу советника, при свопировании меняет номер ордера и цену открытия ордера. ...Как ее проклятую вытащить?
Них себе брокер! Если он и тикет меняет и цену открытия, то это жесть!
1) По идеи можно записать цену ордера в переменную и потом пользоватся.
2) Лучше поменять брокера.
18.12.2012, 12:18
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Них себе брокер! Если он и тикет меняет и цену открытия, то это жесть!
1) По идеи можно записать цену ордера в переменную и потом пользоватся.
2) Лучше поменять брокера.
То что брокер производит переоткрытие позиции каждую ночь, ещё не означает что он плохой. Это особенность которую надо учитывать программисту. Особенно те которые зарегистрированы в России и вынуждены работать по соответствующему законодательству.
Может Сумасшедший Гарри по каким то причинам не хочет работать с ДЦ зарегистрированными в оффшорах.

Можно конечно цену открытия писать в переменную, но лучше в GV. А если понадобятся не только цена открытия ордера, лучше писать в GV тикет. Тогда в любой момент можно выбрать ордер по тикету и узнать любые его параметры.
Так же можно найти первый открытый ордер в цепочке переоткрытых. Часто такие ДЦ где то сообщают тикет прошлого ордера. Гдето надо посмотреть, например в комменте ордера. Там может быть тикет вчерашнего ордера. У вчерашнего тикет позавчерашнего... Так можно добраться до ордера который был открыт первоначально.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 18.12.2012 в 12:21.
18.12.2012, 12:23
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
.


Если у какого-то ДЦ лимитники открываются со стопами, это не значит, что так у всех. И даже могут открываться на демке и в тестере, но на реале не откроется. И тем-более не запрещается ставить ордер без стопов, а потом модифицировать ордер на любом типе счёта.
Ну на моём ДЦ клятвенно обещают, что условия демо счёта и реального абсолютно идентичны.

Последний раз редактировалось Алекc1234; 18.12.2012 в 12:25.
19.12.2012, 22:51
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Чё та странно выходит. Вот моя ф-ция открытия короткой позиции:

PHP код:
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
bool OpenSell()
{
  
int ticket = -1;
  
string myNote "Сов шортанул";
  
  
double price Low[1] - i_thresholdFromInput*pt;
  
double SL High[0] + i_thresholdFromBasedSL*pt;
  
  
ticket OrderSend(Symbol(),OP_SELLSTOP,0.1,NormalizeDouble(price,Digits),i_slippage,0,0,myNote,i_myMagic,TimeCurrent() + 400,Red);
  
  if(
ticket && OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
    if(!
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(Low[1] - i_tp*pt,Digits),0,Red))
    return(
false);
    
  return(
true);

Всё прекрасно работало, до тех пор, пока я не добавил экспирацию в посыл ордера. Вот как экспирацию добавил т.е. TimeCurrent() + 400 Ордера перестали посылаться, и постоянно выскакивает ошибка 3 в журнале.

Почему так?
20.12.2012, 05:51
Аватар для alexshell
alexshell alexshell на форуме Элитный участник
Регистрация: 29.10.2010 / Сообщений: 681
Поблагодарили 1,686 раз(а) / Репутация: 1688

Всё прекрасно работало, до тех пор, пока я не добавил экспирацию в посыл ордера. Вот как экспирацию добавил т.е. TimeCurrent() + 400 Ордера перестали посылаться, и постоянно выскакивает ошибка 3 в журнале.

Почему так?
Как не странно,но метод тыка пока ещё работает. Потыкал и выяснил,что експирация начинает работать с 600 секунд.Видать есть ограничения по времени.(по крайней мере у ДЦ где я тестировал.) Попробуй у себя.

Последний раз редактировалось alexshell; 20.12.2012 в 06:07.
eevviill , hoz 
21.12.2012, 12:14
Регистрация: 18.12.2012 / Сообщений: 2
Поблагодарили 2 раз(а) / Репутация: 3
Ugar, eevviill - спасибо за участие.
Придумал свой, хитрый и простой способ.
21.12.2012, 15:18
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Сообщение от: Сумасшедший Гарри
Ugar, eevviill - спасибо за участие.
Придумал свой, хитрый и простой способ.
Ну так делись. Хитрый какой.
Лично мне интересно, возможно не только мне, какой ДЦ, в чём была проблема и как решил.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ответить

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


Опции темы

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

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



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


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