Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Усреднитель части убыточного ордера вер.2

Как логическое продолжение темы zakaz.opentraders.ru/23559.html, прошу программистов добавить следующие функции в уже разработанный советник-усреднитель:

1) ТП в пунктах (для четырезнака) — тейкпрофит серии ордеров от уровня безубытка (с учетом свопов);
2) СЛ в пунктах (для четырезнака) — стоп-лосс всей сетки открытых ордеров в пунктах от первого ордера;
3) параметры k, m увеличения лотности ордеров сетки по формуле (k*(объем первого ордера)+m);
4) возможность выбора в параметрах советника выставления сетки buy- или sell- лимитных ордеров.

Сетка ордеров закрывается при достижении ТП или СЛ.
На графике должно отображаться: уровень безубытка (с учетом свопов), уровень СЛ и уровень закрытия серии ордеров по ТП.
  • +1
  • Просмотров: 5439
  • 24 марта 2015, 14:25
  • Inthenight
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник по Зиг Загу
Следующая запись в группе  
Советник 79
24 марта 2015
24 марта 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (98)

+
0
Начнем по-порядку:
На графике должно отображаться: уровень безубытка (с учетом свопов)
*shock*  какие свопы? вы формулу безубытка помните?
(OrderOpenPrice по тикету*lot1*K_order + сумма OrderOpenPrice*lot)/(lot1*K_order + сумма lots)
Где здесь будет своп?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 24 марта 2015, 20:49
+
0
Нашел индикатор, определяющий уровни безубытка с учетом свопов, комиссий.
А как бы мне его приложить?)
Ну или Вам передать.
Редактирован: 24 марта 2015, 21:30
avatar

  12  Inthenight Автор Сообщений: 77

  • 24 марта 2015, 21:26
+
0
Сюда залить: opentraders.ru/downloads/?type=0&category=2
Или на любой файлообменник (к примеру, яндекс диск)
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 марта 2015, 00:44
+
0
drive.google.com/file/d/0B-bKsSrOFvdrdE1Zb0JUQngxcEE/view?usp=sharing
вот ссылка на индикатор
avatar

  12  Inthenight Автор Сообщений: 77

  • 25 марта 2015, 10:30
+
+2
Глянул индюк *spokuha* 
Мне не очень понравилась формула расчета БУ используемая там. Какие то жестко заданные коэфф = 100000
Лучше адаптировать вот такое:
double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
//-----цикл по ордерам
Profit+=OrderProfit()+OrderCommission()+OrderSwap();
Lots += OrderLots();
//-----конец цикла
UrZPb = Bid - (Profit / (tickvalue * Lots) * Point);  //уровень безубытка для Buy ордеров  
UrZPs = Ask + (Profit / (tickvalue * Lots) * Point);   //уровень безубытка для SELL ордеров 
avatar

  13  Fargo Сообщений: 495

  • 25 марта 2015, 14:25
+
0
Спасибо.
Вам, программистам, виднее)*hi* 
Я его для примера нашел, как вариант «свопы прикручивать»
Редактирован: 25 марта 2015, 14:31
avatar

  12  Inthenight Автор Сообщений: 77

  • 25 марта 2015, 14:30
+
0
Спасибо, Fargo, а то у меня с формулами туго! Так туго, что мне проще было сов ZeroLevel удалить, чем думать, как к нему прикрутить своп <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp;  А сейчас и там смогу поправить *good* 
Только вопрос, эта формула будет работать на парах типа USDCHF и на кросс-курсах? Где параметр MODE_TICKVALUE меняющийся. Ведь на цене безубытка цена за тик будет другая, чем на текущей цене *think* 
Редактирован: 25 марта 2015, 20:46
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 марта 2015, 20:44
+
+1
А на каких парах tickvalue меняется?
На кроссах?
Тогда не знаю *???* . Если только высчитывать приблизительно

Эту формулу не я придумывал, а нашел на просторах (сам долго искал)
Да…
Для общего БУ делается так:
<code>Отдельно считается ProfitBay, ProfitSell, LostBuy, LotsSell

DLot=LostBuy-LotsSell;
if (DLot>0){ //бай перевешивает 
ZLev= Bid - ((ProfitBay+ProfitSell)/ (tickvalue * DLot) * Point);}  //уровень безубытка для Buy ордеров 
if (DLot<0){ 
ZLev=Ask + ((ProfitBay+ProfitSell)/ (tickvalue * DLot) * Point);}   //уровень безубытка для SELL ордеров  
</code>


Редактирован: 25 марта 2015, 22:04
avatar

  13  Fargo Сообщений: 495

  • 25 марта 2015, 21:52
+
+2
А на каких парах tickvalue меняется?
На тех, у которых первым идет бакс: USDCHF, USDCAD, USDJPY и прочие + кроссы.
Это же основы форекса.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 00:19
+
+1
Да, как то я это не учел *think* 

Тогда для минимизации погрешности так.
1.1. Находим уровень БУ как обычно, без свопов и комиссий.
if (lots!=0) zeroprice=sum/lots;

1.2. Здесь же отдельно считаем сумму свопов и комиссий, а также объемы позиций LostBuy, LotsSell

SSVP+=OrderCommission()+OrderSwap();
DLot=LostBuy-LotsSell;

2. Находим стоимость одного пункта для мин лота на этом уровне.

double lot_size = MarketInfo(Symbol(), MODE_LOTSIZE);
double min_lot = MarketInfo(Symbol(), MODE_MINLOT);
double point_size= MarketInfo(Symbol(), MODE_POINT);

tic_val=(lot_size*min_lot*point_size)/zeroprice;

3. Приводим накопленую сумму свопов(комиссий) к минимальному лоту и делим на стоимость пункта. Таким образом получаем коррекцию к найденому ранее уровню БУ.

DZP= (((SSVP*min_lot)/DLots)/tic_val)*Point;

4. Корректируем

if (DLot>0){ //бай перевешивает
ZLev= zeroprice-DZP ;} //уровень безубытка для Buy ордеров
if (DLot<0){
ZLev=zeroprice+ DZP;}

Вроде так получается. Погрешность конечно будет, но уже меньше.
Ну и пункты 2,3,4 можно совместить в одной зубодробительной формуле <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; '>&nbsp; '>&nbsp; 

ПС: Это относится к парам USD/Валюта. А вот как для кроссов рассчитать второй пункт я пока не придумал.
Редактирован: 26 марта 2015, 12:13
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 01:15
+
0
спасибо! я днем почитаю, а то ночью мне это сложно усвоить
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 01:50
+
+1
Полистал интернет и понял что для кроссов рассчитать ticvalue на заданном уровне с какой либо приемлемой точностью не реально…
Пункт = Размер тика * Размер лота * Текущую котировку базовой валюты относительно USD / Текущую котировку пары.

Вот эта переменная (Текущую котировку базовой валюты относительно USD) превращает расчет в гадание на кофейной гуще. Так что можно смело брать значение ticvalue из MarketInfo, что бы хоть как то учитывать свопы. *pardon* 

Буду рад, если я ошибаюсь
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 10:10
+
0
читаю-перечитываю — ничего не поняла. *???* 
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 10:05
+
0
Ну если вся проблема в плавающей величине стоимости одного пункта, то решение в том что бы найти его на нужном нам уровне.

Для этого находим уровень БУ без учета свопов (так как это сделано в том же ZeroLevel).

Потом рассчитываем стоимость пункта на уровне zero (для минимального лота).
И корректируем найденный уровень БУ на величину необходимую для учета свопов и комиссий.

Для этого всю сумму свопов делим на разницу между объмами бай и селл — что даст нам величину свопов на 1 мин. лот.
Разделив полученное на стоимость одного пункта для мин.лота — получаем сколько нужно пройти этим мин. лотом что бы компенсировать своп. Т.е. это будет величина коррекции найденого ранее уровня БУ.
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 10:28
+
0
забавное решение, для своего скрипта протестирую
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 10:44
+
0
Можно даже не приводить все к мин.лоту, а сразу рассчитать стоимость пункта для всего объема не сбалансированной позиции, т.е. для Dlot
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 12:17
+
0
Можно даже не приводить все к мин.лоту, а сразу рассчитать стоимость пункта для всего объема не сбалансированной позиции, т.е. для Dlot
Я девушка, а ты ругаешься :D  (шучу)
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 12:21
+
0
вот ссылка на индикатор
Inthenight, в индикаторе некорректная формула. Fargo мне во всю старается помочь. Но я не понимаю, у меня не получается досочинить формулу безубытка. А у вас?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 10:08
+
0
Там нужно в расчетах для усредняемого ордера брать только нужную часть профита.
Т.е. для первого ордера Protit_1*K_order.
И объем также Lots_1*K_order

Ну тоесть как бы считаем что у нас усредняемый ордер не объемом 1,0 а например 0.2 — если мы хотим усреднить 20% от первого ордера (K_order=0.2)
Редактирован: 26 марта 2015, 10:43
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 10:15
+
0
Чисто математически у меня получилось так:
БУ=(цена1*лот1*K+цена2*лот2+...)/(лот1*K+лот2+...)-(своп1*K+своп2+...)/(10000*(лот1*K+лот2+...)),
где 10000 — для четырехзнаковых ДЦ,
к своповой поправке "-" — для ордеров на покупку, соответственно если на продажу, то надо знак "+".
Полагаю, коэффициенты 100000 в индике, о которых писал Fargo, как раз для корректной работы на 5- и 4-знаке
Редактирован: 26 марта 2015, 12:24
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 12:22
+
0
А своп вы в чем берете? в пунктах?
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 12:33
+
0
В деньгах, как в терминале
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 12:39
+
0
Тогда формула не верная — получается что из котировки вычитаются деньги
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 12:45
+
0
Вычитается дробь — а деньги только в числителе(как и в первом слагаемом).
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 12:51
+
+1
нет
в первом слагаемом денег нет
там чисто математическое среднее считается
возьмем три лота:
номер объем цена
1 ____ 2 ____ 3
2 ____ 4 ____ 5
3 ____ 1 ____ 7

по формуле (2*3+4*5+1*7)/(2+4+1)
тоже самое (3+3+5+5+5+5+7)/(1+1+1+1+1+1+1)
Денег здесь нет
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 13:00
+
0
Математическое среднее — это вся дробь. А сверху — деньги:)  (цена*лот)
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 13:06
+
0
Хотите, я эту последнюю формулу добавлю в советник, а вы в демо проверите?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 13:08
+
0
Давайте попробуем. Единственный нюанс (как и подметил Fargo) — справедливо только для 4-значных котировок после запятой. А с другой стороны, почему Вы не хотите взять кусок кода в виде готового индикатора, который определяет безубыток с учетом свопов (и даже комиссий) и вставить его в нашу разработку? Чтобы не изобретать велосипед:) 
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 13:25
+
0
почему Вы не хотите взять кусок кода в виде готового индикатора, который определяет безубыток с учетом свопов (и даже комиссий) и вставить его в нашу разработку
Она не определяет безубыток, она неправильная. И ваша формула тоже не определяет безубыток.
Но я вставлю, какую захотите. Поместите сюда в комментарий формулу и я её вставлю.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 13:34
+
0
Ну на графике по-крайней мере что-то похожее на правду показывает (допустим, есть один ордер бай с положит.свопом — б.у. чуть ниже, что вполне логично)))
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 13:39
+
0
Я же расписал выше — лот это сколько раз нужно взять эту цену для расчета

А для йены это сколько будет в деньгах? Котирока 118,559, объем 0,5?
И как для нее учесть своп в размере допустим 1,22$
Редактирован: 26 марта 2015, 13:13
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 13:11
+
0
Я же написал — для котировок с 4 знаками после запятой. Для йены (у меня в терминале — два знака после запятой, значит, множитель должен быть на два нуля меньше — 100).
Редактирован: 26 марта 2015, 13:19
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 13:18
+
0
Я же расписал выше — лот это сколько раз нужно взять эту цену для расчета

А для йены это сколько будет в деньгах? Котирока 118,559, объем 0,5?
И как для нее учесть своп в размере допустим 1,22$

Увы, мало данных для той формулы)
Редактирован: 26 марта 2015, 13:48
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 13:40
+
0
Ой, да пожалуйста…
118.559 lot 0.5 своп 1.22$
117.559 lot 0.2 своп 0 (лот свежий, еще не ночевал :)  )
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 13:53
+
0
Если принять К=0.4 (0.5*0.4=0.2 — лот первого усредняющего ордера), то получается БУ (40% первого ордера + усредняющего) без учета свопа — на цене 118.059. С учетом свопа ~ 118.058 (точнее на 0.00122 пункта ниже). Данные просто закинул в формулу и посчитал.
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 14:10
+
0
*wall*  Ну как можно из котировок вычитать деньги *???* 

Хорошо, хорошо…
по первой части посчитали 118.059 — это что? йены, да?
а вычитаем 0,00122 доллара — это тогда как?

из помидоров вычитаем огурцы
avatar

  13  Fargo Сообщений: 495

  • 26 марта 2015, 14:31
+
0
из помидоров вычитаем огурцы

Да хоть грибы:) 

Где там Вы видите доллары, а? Там есть коэффициент неизвестной размерности, так что аллегория не проходит.

Согласен в другом, в том написании формула — для котировок с USD в качестве базовой валюты. Можно ее преобразовать в следующий вид:
БУ=(цена1*лот1*K+цена2*лот2+...)/(лот1*K+лот2+...)-(своп1*K+своп2+...)/(W*(лот1*K+лот2+...)),
где W=10000 — для инструмента с USD в качестве базовой валюты,
W=10000/текущ.котир. — для инструмента с USD «сверху» (ДЦ-4-знак)

В Вашем примере тогда получается ~ на 0,014 пунктов ниже безубыток.
Конечно, еще все это проверить на демо- надо на парах с USD «сверху».
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 16:29
+
0
Полагаю, коэффициенты 100000 в индике, о которых писал Fargo, как раз для корректной работы на 5- и 4-знаке

Одного не пойму, у вас в разговоре периодически возникали цифры 10 000 или 100 000 и они каким-то боком у вас относятся к цене с 4-мя знаками или 5-ю знаками. Вообще-то это сумма, с которой производится сделка.
Индикатор просто создавал тот, кто не особо вникал в формулу:


Редактирован: 26 марта 2015, 20:04
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 20:02
+
0
Возможно, Вы и правы. Я нашел этот индикатор в сети с открытым кодом и относительно простой (в смысле, «короткий» — несколько строчек), поэтому и приложил его для примера. А суть формулы мне, без вникания в язык, особо непонятна. С другой стороны, в свободном доступе полно других индикаторов БУ, неужели они все неправильные?
Вообще, я и не подозревал, что с определением безубытка могут быть такие сложности — это же основа основ любого советника-усреднителя. В итоге пришлось вспомнить молодость, посидеть-порешать уравнения:) 
Надеюсь, последний вариант формулы БУ получится реализовать?
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 20:17
+
0
напишу, вы протестируете.
Я просто сейчас задумалась над фразой:
где W=10000 — для инструмента с USD в качестве базовой валюты,
W=10000/текущ.котир. — для инструмента с USD «сверху» (ДЦ-4-знак)

Как в коде распознать валюту — с прямой котировкой она или с обратной *think*  Или просто перечислить все с обратной, а остальные будут подразумеваться, что с прямой.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 20:25
+
0
А есть еще кроссы, вот там (я не вникал, если честно) коэффициент по этой формуле, думаю, будет другой (каждую валюту через USD и перемножать). С другой стороны, чтобы сильно не усложнять, можно оговорить область применения советника лишь в парах с USD.
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 20:33
+
0
Уважаемый Inthenight я умею программировать четко по заданию. Формулы выдумывать — не моя стихия. Могу предложить, что я запрограммирую, допустим, пока вот это:
БУ=(цена1*лот1*K+цена2*лот2+...)/(лот1*K+лот2+...)-(своп1*K+своп2+...)/(W*(лот1*K+лот2+...)),
где W=10000 — для инструмента с USD в качестве базовой валюты
т.е. для пар eurusd, gbpusd
Будет ли работать — еще не в курсе.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 22:47
+
0
Я понял. Давайте попробуем для статического коэфф. Погоняю на демке — посмотрим, что получится, а там видно будет. Заранее спасибо!
avatar

  12  Inthenight Автор Сообщений: 77

  • 26 марта 2015, 23:04
+
+2
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 26 марта 2015, 23:08
+
0
Oxy, добрый вечер!
Погонял советника на австрале, безубыток как будто бы определяет верно (где бы еще взять ордер с большим свопом для проверки советника просчетом по формуле и с полученным результатом не в один пункт)))
Однако, обнаружился новый нюанс — у разных ДЦ идет разный объем сделки при одинаковом лоте. И если на инсте формула верная, то для ф4ю коэффициент должен быть 100000 вместо 10000.
Поэтому прошу Вас вынести этот коэффициент в параметры советника (по умолчанию пусть стоит значение 10000). Спасибо!
avatar

  12  Inthenight Автор Сообщений: 77

  • 2 апреля 2015, 21:52
+
+1
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 2 апреля 2015, 22:04
+
0
Забрал, спасибо, именно то, что и надо)
А с парами, где USD сверху, Вы не придумали, как реализовать формулу?
avatar

  12  Inthenight Автор Сообщений: 77

  • 2 апреля 2015, 22:26
+
0
Придумывать формулы — не моя стихия.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 2 апреля 2015, 22:32
+
+1
Да я это уже понял:)  и формула-то у нас есть ведь уже.
Я спросил про ее реализацию — т.е. вот это:
W=10000/текущ.котир. — для инструмента с USD «сверху» (ДЦ-4-знак)
avatar

  12  Inthenight Автор Сообщений: 77

  • 2 апреля 2015, 22:46
+
0
А вы не проверяли ту формулу, которая сейчас, может она для всех пар подходит?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 2 апреля 2015, 22:54
+
0
Увы, так как доллар с другой валютой меняются местами (становится в числителе), то для счета в валюте депозита (USD) в идеале нужно брать обратную величину (1/х), отсюда и идет усложнение этого коэффициента.
Можно с определенной долей приближения высчитывать для какой-то фиксированной цены на данный момент и ставить коэффициент «для расчета лота», как он у нас в последней версии назван, константой (допуская, что котировка +- далеко не уйдет отсюда). Например, для USDCAD на сейчас: W=10000/1,2568=7957.
Цена ушла +100 пунктов: W=10000/1,2668=7893.
-100п: W=10000/1,2468=8020.
Учитывая, что 200п предостаточно для отработки советника, а также небольшую величину свопов, можно считать, что принятие W=константе не окажет большой погрешности для расчета БУ.
avatar

  12  Inthenight Автор Сообщений: 77

  • 2 апреля 2015, 23:37
+
+2
Для символов, у которых USD снизу: EURUSD, GBPUSD…
W=10000
Для всех прочих: USD сверху или без USD
W=10000/1,2568 (делим на котировку)
opentraders.ru/downloads/649/
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 3 апреля 2015, 14:41
+
0
Забрал тестить*hi* 
avatar

  12  Inthenight Автор Сообщений: 77

  • 3 апреля 2015, 18:09
+
+1
Погонял на демо на парах с USD сверху. Свопов существенных, конечно, негде взять, но поправка (пусть даже в 1 пункт) просчитывалась советником правильно.
avatar

  12  Inthenight Автор Сообщений: 77

  • 8 апреля 2015, 19:03
+
0
здорово
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 8 апреля 2015, 19:08
+
+1
Oxy*hi*  Если я вам не надоел еще:) , то жду с нетерпением дальнейшей доработки совы
avatar

  12  Inthenight Автор Сообщений: 77

  • 10 апреля 2015, 18:33
+
0
а его еще надо дорабатывать? *shock* 
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 10 апреля 2015, 18:34
+
0
*pardon*  дак ведь ни один из четырех пунктов ТЗ еще не реализован)
avatar

  12  Inthenight Автор Сообщений: 77

  • 10 апреля 2015, 18:45
+
0
Inthenight, мы с вами решили определенную задачу. На ней я бы хотела остановиться.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 10 апреля 2015, 19:09
+
+1
Что-ж, вынужден с сожалением констатировать, что ни версия 1 zakaz.opentraders.ru/23559.html, ни эта версия 2 советника не была, увы, реализована (ТЗ было одно и тоже, если кто читал эти темы — знает). Значит, не судьба:) 
Согласно Правил *rules*  project.opentraders.ru/20424.html
Выполнение заказа не гарантируется. Возможность выполнения зависит от сложности заказа и загруженности MQL-программиста

В любом случае Oxy спасибо за труды, правда, если на этом продукте остановились, то считаю время потрачено нами было впустую, так, для галочки:) 
Для тех, кто будет скачивать, хочу пояснить принцип работы совов (т.к. то, что реализовано на деле, во многом не соответствует описанию в топиках и является, по сути, лишь прообразом того, что должно было получиться).
Итак, сов №1 zakaz.opentraders.ru/23559.html — выставляет сетку n лимитников с заданным шагом (для усреднения части К убыточного ордера) — на покупку для ордера buy, на продажу — для sell (выбор buy или sell — не реализован). Лот первого ордера сетки — (К*убыт.лот) (выбор объема первого лота не реализован), последующие идут с удвоением! (выбор параметров прогрессии лотов последующих ордеров сетки не реализован). Закрывает сетку не по ТП (не реализовано), а в безубытке. СЛ не реализован.
В этой версии совы (№2) к расчету БУ добавлена поправка на свопы открытых ордеров.
avatar

  12  Inthenight Автор Сообщений: 77

  • 10 апреля 2015, 21:22
+
0
Первая версия не была доделана? *shock*  Она конечно не соответствует полностью тех.заданию, но мы же по ходу его меняли, согласовывали. И для меня сейчас сюрприз, что она не доделана.
Ладно, ваше право так думать.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 10 апреля 2015, 21:25
+
0
ТЗ первого и второго советника одинаковы:) , лишь в формулировках различаются, ну и текст во втором случае меньше, т.к. не требовалось описания того, что в первом было уже реализовано.
Я создал второй топик по вашей просьбе потому, что, как я понял, вы хотели зафиксировать полученный результат как отдельную разработку. Вот и все. А ТЗ взято из первого и просто переформулировано*pardon*  Ничего нового не было добавлено.
avatar

  12  Inthenight Автор Сообщений: 77

  • 10 апреля 2015, 22:15
+
0
Вы здесь, во втором топике повторили один из пунктов: «1) ТП в пунктах»
Хотя я вам в первом топике писала: «Единственное, столкнулась с трудностями переноса TP в минус — через раз переносит (и я даже знаю, почему). Решила это просто. Сам TP у открытых ордеров не выставляется, но он рассчитывается и отображается в комментариях слева сверху. И при достижении ценой этого значения — происходит закрытие/удаление ордеров и уменьшение объема ордера, с которым первоначально начали работать.»
zakaz.opentraders.ru/23559.html#comment100710
Я поэтому и не поняла, почему вы опять это от меня просите.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 апреля 2015, 00:30
+
0
Остальное, в принципе, можно внести в советник.

Могу вам поставить stop loss один общий для всех. Только stop loss должен быть всегда больше (шаг лимитных ордеров * количество ордеров). Можно конечно стоп-лосс отсчитать от последнего, крайнего ордера и у всех также выставить.
Лот тоже в принципе не проблема увеличить. Только если формула безубытка вдруг не будет работать (т.е. цена перестанет быть безубытком), то править уже не буду. Но, возможно, формула правильная.
Выбор бай или селл лимит ордеров — можно попробовать сделать — тоже не уверена, что логика безубытка не поедет в советнике.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 апреля 2015, 00:39
+
0
Я поэтому и не поняла, почему вы опять это от меня просите.

Просто на данный момент это не реализовано, вот и прошу<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
А как это будет реализовано — ТП у ордеров, или расчетной величиной без фактического выставления ТП у ордеров — не суть важно. На данный момент закрывает в БУ, а нужно, чтобы в ТП-пунктах от БУ (задаем в параметрах)
Редактирован: 12 апреля 2015, 19:01
avatar

  12  Inthenight Автор Сообщений: 77

  • 12 апреля 2015, 19:00
+
+2
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 апреля 2015, 18:47
+
0
Oxy, спасибо! Судя по параметрам — то, что нужно*hi*  Пошел тестить
avatar

  12  Inthenight Автор Сообщений: 77

  • 13 апреля 2015, 20:16
+
0
Oxy, здравствуйте!
Получил ваше письмо, спасибо за вашу готовность довести эту разработку до финала, хотя, в какой-то момент, уже засомневался в этом<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
Сейчас, полагаю, осталась одна ошибка в нем — а именно расчет БУ при разнонаправленных ордерах (т.е. когда усредняем убыточный buy сеткой sell-лимитников или наоборот). Очевидно (да и, посидев вечер над формулами, — подтвердил для себя выкладками), что для учета направления ордера, достаточно в нашу формулу БУ к значению лота ордеров (лот1, лот2, ...) присоединить знак "+" — для ордеров «buy», и знак "-" — для ордеров sell.
Формула будет иметь вид:
БУ=(цена1*(+-лот1)*K+цена2*(+-лот2)+...)/((+-лот1)*K+(+-лот2)+...)-(своп1*K+своп2+...)/(W*((+-лот1)*K+(+-лот2)+...)) (м.б. где-то лишние скобки, но это чтобы не запутаться в знаках и не потерять чего), соответственно для всех (+-лот) берем "+" для бай и "-" для селл-ордеров.
Другой нюанс при выборе разнонаправленных ордеров — при сработке первого лимитника в нашей формуле будет деление на 0. Для избежания этого предлагаю лот первого ордера сетки принять (2*K).

Редактирован: 14 апреля 2015, 22:58
avatar

  12  Inthenight Автор Сообщений: 77

  • 14 апреля 2015, 22:58
+
0
Так, подождите, у нас предыдущая формула работала нормально:
— первоначальный лот был buy и последующие ставились buy limit (buy + buy limit),
— первоначальный лот был sell и последующие ставились sell limit (sell + sell limit).
Сбоить стало, когда появилась возможность:
— при первоначальном лоте buy выставлять ордера sell limit (buy + sell limit),
— при первоначальном лоте sell выставлять ордера buy limit (sell + buy limit).
Мы знак в формуле меняем при этих двух последних случаях?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 01:01
+
+2
Я дико извиняюсь, что снова в вашем топике.
Но мне жутко интересно…

А можно картинку, как это выглядит — усреднение убыточного ордера BUY, сеткой ордеров SELLLIMIT?
Редактирован: 15 апреля 2015, 01:44
avatar

  13  Fargo Сообщений: 495

  • 15 апреля 2015, 01:35
+
0
Fargo, будешь умничать :D  — мы так никогда этот советник не закончим. У нас договор с заказчиком — он мне формулу, я её вставляю в советник. В формулу я не вникаю — может она супер-пупер какая хитрая — и потом ею еще все пользоваться будут.
По срокам редактирования формул в советнике — я озвучила — до конца апреля.
Готова формулы менять в советнике каждый день (кроме выходных) не чаще 2 раз в день.
Только бы понять, что именно менять на что.
Так что наблюдай со стороны *ninja*  8-) 
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 02:24
+
0
*capitan*  *ninja* 
avatar

  13  Fargo Сообщений: 495

  • 15 апреля 2015, 08:12
+
0
Во втором случае
— первоначальный лот был sell и последующие ставились sell limit (sell + sell limit).

знак "-" должен фигурировать (как минимум) в поправке на своп, т.к. для ордера на продажу поправка на своп должна смещать БУ в большую сторону
(вверх, т.е. поправка должна прибавляться).
И в случаях
— при первоначальном лоте buy выставлять ордера sell limit (buy + sell limit),
— при первоначальном лоте sell выставлять ордера buy limit (sell + buy limit).
знаки также обязательны.
В остальных случаях
— первоначальный лот был buy и последующие ставились buy limit (buy + buy limit)
и в первом слагаемом формулы для
первоначальный лот был sell и последующие ставились sell limit (sell + sell limit)
они не обязательны, но могут быть (на результате расчета БУ они не отразятся)
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 12:17
+
0
У нас была работающая формула для (buy + buy limit) и (sell + sell limit) для бакса снизу:

( (цена первая)*(лот первый)*(часть лота) + сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) + сумма(лотов) )
(своп первый*часть + сумма(свопов)) / ( 10 000*((лот первый)*(часть лота) + сумма(лотов)) )

Без лишних рассуждений, которых мне не понять, какую мне формулу ставить для (buy + sell limit) и (sell + buy limit)?

Вот эту?
( (цена первая)*(лот первый)*(часть лота) — сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) — сумма(лотов) )
+ (своп первый*часть — сумма(свопов)) / ( 10 000*((лот первый)*(часть лота) — сумма(лотов)) )

Или другую? То какую?

Редактирован: 15 апреля 2015, 17:16
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 17:03
+
0
Чтобы не запутаться в формулах, напишу для каждого из 4 случаев.
1.
(buy + buy limit)

( (цена первая)*(лот первый)*(часть лота) + сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) + сумма(лотов) )
— (своп первый*часть + сумма(свопов)) / ( W*((лот первый)*(часть лота) + сумма(лотов)) )
2.
(sell + sell limit)

( (цена первая)*(лот первый)*(часть лота) + сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) + сумма(лотов) )
+ (своп первый*часть + сумма(свопов)) / ( W*((лот первый)*(часть лота) + сумма(лотов)) )
3.
(buy + sell limit)

( (цена первая)*(лот первый)*(часть лота) — сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) — сумма(лотов) )
— (своп первый*часть + сумма(свопов)) / ( W*((лот первый)*(часть лота) — сумма(лотов)) )
4.
(sell + buy limit)

( (цена первая)*(лот первый)*(часть лота) — сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) — сумма(лотов) )
+ (своп первый*часть + сумма(свопов)) / ( W*((лот первый)*(часть лота) — сумма(лотов)) )
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 17:34
+
+1
Вот так понятно.
Файл: opentraders.ru/downloads/649/
Чтобы проверить безубыточность у значения TakeProfit должно быть 0
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 19:03
+
0
Спасибо вам!
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 20:00
+
0
не уверена, что со значением TakeProfit будет всегда прибыль
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 20:44
+
0
Думаете, не всегда в нужную сторону прибавлять пункты будет?
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 21:01
+
0
Cделано: если первая сделка buy, то прибавляем пункты, если sell — то отнимаем пункты от б/у.
Это хорошо при ситуации (buy + buy limit) и (sell + sell limit)
А при двух других ситуаций как правильно? *think* 
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 21:48
+
0
Полагаю, что плясать надо не от первого ордера, а от вида сетки:
сетка на покупку — ТП прибавляем;
сетка на продажу — ТП отнимаем от БУ
(лотность сетки всегда больше или равна лотности первого ордера*К, соответственно ТП всегда будет по направлению сетки)
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 22:03
+
+1
заменила файл, название оставило тоже: opentraders.ru/downloads/649/
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 апреля 2015, 22:11
+
0
Ок, пробую
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 22:22
+
0
Перестал отображать уровень БУ, ТП (в левом верхнем углу)
prntscr.com/6ud1zx
prntscr.com/6ud25o
Да и не закрывал сетку (хотя ТП и БУ были достигнуты — скрин увы не сделал)
Если не ошибаюсь, то сбой идет из-за деления на 0 в случае разнонаправленных ордеров.
Здесь помогло бы
Другой нюанс при выборе разнонаправленных ордеров — при сработке первого лимитника в нашей формуле будет деление на 0. Для избежания этого предлагаю лот первого ордера сетки принять (2*K).

Редактирован: 16 апреля 2015, 12:22
avatar

  12  Inthenight Автор Сообщений: 77

  • 16 апреля 2015, 12:17
+
0
А можете в формуле мне показать, что там надо изменить? а то не понимаю, какую часть формулы менять.
Я поняла, что ошибка из-за деления на 0
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 16 апреля 2015, 13:38
+
0
У нас сейчас лот первого ордера сетки равен (К*убыт.лот). Я же предлагаю лот первого ордера сетки задать (для всех случаев, чтобы не путаться и было единообразно) (2*К*убыт.лот) — т.е. удвоенный, ну а лоты следующих ордеров сетки уже берутся по нашей ф-ле увеличения лота от этого (удвоенного) начального лота.
avatar

  12  Inthenight Автор Сообщений: 77

  • 16 апреля 2015, 21:04
+
+1
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 16 апреля 2015, 23:10
+
0
Спасибо, забрал тестить
avatar

  12  Inthenight Автор Сообщений: 77

  • 17 апреля 2015, 12:11
+
0
Или все это заменить универсальной формулой:
( (цена первая)*(лот первый)*(часть лота) + сумма((цена)*(лот)) )
/ ( (лот первый)*(часть лота) + сумма(лотов) )
— (своп первый*часть + сумма(свопов)) / ( W*((лот первый)*(часть лота) + сумма(лотов)) )
, но у лота (в т.ч. первого) приписывать знак "-", если ордер «селл» (как удобнее)
avatar

  12  Inthenight Автор Сообщений: 77

  • 15 апреля 2015, 17:37
+
0
Oxy, добрый вечер!
Заметил один нюанс — при перемене ТП (да и вообще любого параметра) во время работы совы он перестает отображать ТП и БУ, и не работает дальше. А возможно ли реализовать возможность «горячей» замены ТП у совы? Если нет или это потребует большой переделки, то — нет:) 
В любом случае благодарен вам за получившийся продукт! Т. к. он — работает.*hi* 
avatar

  12  Inthenight Автор Сообщений: 77

  • 21 апреля 2015, 20:44
+
0
Не надо во время работы сова менять в нем переменные. По идее, при изменении только переменной TP, советник перезапуститься должен и на новом тике отобразить б/у и цену TP, если есть сработавшие ордера. Но он для этого не был предназначен.
А так, все ошибки и все действия советник пишет во вкладках «Эксперты» и «Журнал»
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 22 апреля 2015, 01:21
+
0
Увы, не отображает, даже если менять только ТП. Просто было бы неплохо иметь возможность корректировать ТП в зависимости от текущей ситуации (просадки, ожидания движения в ту или иную сторону)
avatar

  12  Inthenight Автор Сообщений: 77

  • 22 апреля 2015, 12:12
+
0
Все ошибки и все действия советник пишет во вкладках «Эксперты» и «Журнал».
Вы же в курсе, что мне не понять в чем ошибка, пока вы мне не предоставите скрины вкладок «Эксперты» и «Журнал».
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 22 апреля 2015, 14:43
+
0
avatar

  12  Inthenight Автор Сообщений: 77

  • 22 апреля 2015, 17:20
+
0
хорошо, я проверю с вашими настройками
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 22 апреля 2015, 17:26
+
0
Я поняла, эксперт не пересчитает безубыток, пока не зацепит очередной ордер. Это было сделано, чтобы не загружать процессы и не делать расчеты на каждом тике. Сейчас изменю.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 22 апреля 2015, 17:49
+
+2
заменила: opentraders.ru/downloads/649/
название тоже
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 22 апреля 2015, 17:59
+
0
Спасибо, забрал*hi* 
avatar

  12  Inthenight Автор Сообщений: 77

  • 22 апреля 2015, 19:19

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий