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

Рейтинг 2089



РЕКОМЕНДУЮ



Советник работающий по уровням

Доброго всём времени суток.
Андрей, нужна ваша помощь в написании советника.
Суть в следующем:

В момент установки советника на график, от цены Bid рассчитываем 20 уровней вверх и 20 уровней вниз( шаг: Distance=200), цена bid — тоже уровень. т.к. на уровне нет ордеров, то открываем один ордер buy и один ордер sell с начальными лотами.
— При движении цены вверх и касании первого уровня вверх, закрывается ордер buy и открываются два ордера: ордер buy и один ордер sell с начальными лотами.(т.к. на этом уровне нет ордеров).
— Дальше цена идёт вверх и касается следующего уровня, закрывается предыдущий ордер buy, и т.к. на этом уровне нет ордеров, открываем два ордера: sell с начальным лотом и buy с лотом (последний открытый sell* Klot). Пояснение: на данном уровне ордер buy перекрывает 3 открытых ордера sell.
— Цена идёт дальше вверх и касается следующего уровня, закрывается предыдущий buy и самый первый sell. Итого в рынке остаётся 2-sell и 0-buy. Открывается ордер sell с начальным лотом и ордер buy с лотом (последний открытый sell*Klot) опять на данном уровне ордер buy перекрывает 3 открытых ордера sell.
— Цена развернулась и коснулась уровня ниже, закрываем последний открытый sell и открываем один ордер buy, т.к. на этом уровне есть уже ордер sell, новый sell не открываем.
Фиксация прибыли: для ордера buy — на уровень выше от уровня открытия, для ордера sell — на уровень ниже от уровня открытия.
Фиксация убытка: для ордера buy- 3 уровня вниз от уровня открытия, для ордера sell — 3 уровня вверх от уровня открытия.
StopLoss и TakeProfit отсутствуют, советник открывает и закрывает ордера при достижении ценой Bid уровня.
— Умножение лота на Klot: например в рынке 2 ордера sell ниже текущего уровня, открываем buy с лотом *Klot. Для sell — зеркально.
  • 0
  • Просмотров: 2447
  • 15 февраля 2022, 15:46
  • verta81
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор - предсказатель.
Следующая запись в группе  
Не стандартный заказ
15 февраля 2022
16 февраля 2022

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

+
0
вроде не правильно написано:
0) уровень — открыт 1 лот Buy и 1 лот Sell
1) уровень — закрыт 1 лот Buy(+10). те остается 1 лот sell и убыток -10
тут же открывается 1 лот buy и 1 дополнительный лот sell
2) уровень — закрыт 1 лот Buy(+10). остается 2 лота sell и убыток -30 (не берем своп, коммиссии и спрэд) то тут у нас так или иначе минус

если берем мартышку, которая будет открывать в два раза больше лот чтоб перекрывать противоположные ордера:

0) уровень — открыт 1 лот Buy и 1 лот Sell
1) уровень — закрыт 1 лот Buy(+10). те остается 1 лот sell и убыток -10
тут же открывается 3 лота buy и 1 дополнительный лот sell
2) уровень — закрыты 3 лота buy(+30). остается 2 лота sell и убыток -30
тут же открываем 6 лотов buy и 1 лот sell.
3) уровень — закрыты 6 лотов buy +60 и первый sell -30, остается 2 лота sell -30
открывается 6 лотов buy и 1 лот sell.
цена тут же разворачивается и уходит на один уровень вниз те на 2й уровень
2) уровень. баи несут потери -60 селлы несут потери -30 итого -90+60+30+10-30-30 = -50

те без учета всего прочего минус на счету. какой смысл?

даже можно и на первом уровне закончить,
0) 1 бай 1 селл
1) +10 закрыт бай и открыт 2 бай и 1 селл (тут убыток -10)
цена развренулась и пошла вниз на начало: имеем -20 по баям и селлы в нуле. и закрыт 1 бай +10. те как ни крути -10 на счету. как бы не увеличивать и не играться с коофециентами — все равно минус будет. чем больше мартшыка — тем больше минус. те при ограничении 3ями лотами — фиксируется убыток на долгий срок в размере -10*2n уровней где n максимум 3. плюс к этому своп, коммиссия и спрэд в минус с каждой сделки, что смело можно на умножить на 2. те формула будет 2*(-10)*2n
Редактирован: 15 февраля 2022, 17:10
avatar

  4  alexzh16 Сообщений: 59

  • 15 февраля 2022, 16:39
+
0
не правильная математика у Вас)
Редактирован: 15 февраля 2022, 16:46
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 16:44
+
0
где? может и не правильная. всяко может быть. ткните носом в место где не правильно. но я уверен что минус гарантирован при такой торговле, если нес сразу то пока на первом развороте
Редактирован: 15 февраля 2022, 17:05
avatar

  4  alexzh16 Сообщений: 59

  • 15 февраля 2022, 16:50
+
0
я никому ничего доказывать не хочу и не буду! Не нравится моя идея, напишите свою.
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 17:04
+
0
да при чем тут доказывать. просто математику примените и покажите где моя ошибка (все мы люди и имеем право ошибаться, это нормально). я вам привел расчёт так как это будет по моему, где ошибка в расчётах?
Редактирован: 15 февраля 2022, 17:08
avatar

  4  alexzh16 Сообщений: 59

  • 15 февраля 2022, 17:07
+
0
скрины
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 15 февраля 2022, 17:26
+
0
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 19:01
+
0


а что делать с этим 0,05 когда вот так цена пошла?
avatar

  4  alexzh16 Сообщений: 59

  • 15 февраля 2022, 19:41
+
0
Вы еще раз внимательно прочтите описание полностью. Там написано как фиксировать прибыль и убыток.
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 20:16
+
0
читал. вопрос потом бы возник так или иначе. если правильно понял ваше задание, то закрывать нужно все ордера? и фиксация убытка или просто закрывать самый нижний селл и открывать новый селл? сразу подумайте о проскальзывании и гэпах. сезонников уже масса написана была. их нужно тонко настраивать. эта идея будет работать во флэте (как и все сеточники). при движения вверх вниз не доходя до 3его уровня — будет сливать. мне интересна сама идея сеточника, так как работает у меня один на демке уже больше года. в июле слил на 50% депо от начального в течении 7ми дней, сейчас в плюсе 40%.
Редактирован: 16 февраля 2022, 12:16
avatar

  4  alexzh16 Сообщений: 59

  • 16 февраля 2022, 12:08
+
0
Фиксация прибыли для каждого ордера один уровень вверх, убытка три уровня вниз от уровня открытия ордера. — это для buy. Для sell -зеркально. Нет закрытия всех ордеров. Для каждого ордера свой уровень.
avatar

  13  verta81 Автор Сообщений: 355

  • 16 февраля 2022, 12:16
+
0
ясно. потестим. все таки еще вопрос. на моем скрине — если закрываем 0,05 селл — то бай нужно открыть 0,04 лотом? так как это фактически будет третий уровень и там нужно уже увеличенный лотаж
Редактирован: 16 февраля 2022, 12:25
avatar

  4  alexzh16 Сообщений: 59

  • 16 февраля 2022, 12:18
+
0
На скрине, вместо последнего открытого бай 0.01 должен быть бай 0.25. Он перекрывает предыдущие селл. И на уровень выше закроется бай 0.25 с прибылью и селл 0.05 с убытком
Редактирован: 16 февраля 2022, 13:09
avatar

  13  verta81 Автор Сообщений: 355

  • 16 февраля 2022, 13:08
+
0
ок, а если пойдет вниз сразу на один уровень? то закрываем селл 0,01 и открываем селл 1,25 ?
avatar

  4  alexzh16 Сообщений: 59

  • 16 февраля 2022, 13:24
+
0
Если бай 0.25 не закроется на уровень выше, с прибылью, и цена пойдёт вниз, то: проверяем есть ли на этом уровне ордера, если нет селл- открываем, если нет бай- открываем. Если цена уйдёт ещё ниже на уровень, то откроется селл 1.25 который перекроет бай 0.25
И да, селл с предыдущего уровня, при движении вниз, закроется с прибылью. Фиксация прибыли 1 уровень вниз.
Редактирован: 16 февраля 2022, 13:42
avatar

  13  verta81 Автор Сообщений: 355

  • 16 февраля 2022, 13:40
+
0
здесь я единственное могу сначала написать что то простое, а затем добавлять по паре функций при наличии понятного тз
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 15 февраля 2022, 20:26
+
0
Андрей, давайте так и сделаем. В процессе все станет понятно.
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 20:31
+
0
Давайте начнем с расчета уровней и открытия ордеров.
на одном уровне не более одного buy и одного sell.
Если ордер в плюсе и коснулись уровня — закрываем ордер.
Если ордер в минусе и коснулись третьего уровня от уровня открытия — закрываем
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 20:55
+
0
на 16-е
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 15 февраля 2022, 21:08
+
0
спасибо
avatar

  13  verta81 Автор Сообщений: 355

  • 15 февраля 2022, 21:33
+
0
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 16 февраля 2022, 20:35
+
0
Спасибо, но вообще не то(
avatar

  13  verta81 Автор Сообщений: 355

  • 16 февраля 2022, 23:16
+
0
на одном уровне не более одного buy и одного sell.
Если ордер в плюсе и коснулись уровня — закрываем ордер.
Если ордер в минусе и коснулись третьего уровня от уровня открытия — закрываем


Спасибо, но вообще не то(


что конкретно не то?

советник через шаг ставит пару ордеров. через шаг прибыльный закрывается а через 3 убыточный.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 17 февраля 2022, 19:43
+
0
Имелось ввиду работать по уровням без тейка и стоп-лосса.
Нужно создать ценовые уровни и работать по пересечению, открывать и закрывать ордера именно при касании/пересечении уровней.
Создать массив и записать в него все уровни.
Вопрос с разметкой ордеров решил, записывая в комментарий ценовые уровни: точка открытия, фиксации убытка и прибыли. Далее из комментария вытягиваю нужное и обрабатываю.
Далее определять положение цены относительно уровней, с чем на данный момент имеются затруднения. При сравнивании цены с ценовым уровнем (если Bid==Lvl) не всегда равенство верно.
Расширил диапазон сравнения до Bid+vspred>Lvl && Bid-vspred<Lvl так гораздо лучше, но все равно не все определяется и на инструментах с большим спредом все ломается. Может подскажете решение, как решить вопрос сравнения ценны с ценовым уровнем не расширяя за счет спреда.
Буду признателен за любые варианты.
www.opentraders.ru/downloads/3255/
avatar

  13  verta81 Автор Сообщений: 355

  • 17 февраля 2022, 21:38
+
0
Условия закрытия озвученные Вами Андрей реализовал «в лоб» через:

extern int StopLoss      = 600;      // лось
extern int TakeProfit    = 200;      // язь
extern int Step          = 200;      // шаг


как раз по Вашему — тейк = 1 шаг, а стоп = 3 шага. Но это частный случай.
Если ближе и Вам понятнее Функцию можно переписать так:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+Step*3*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-Step*1*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-Step*3*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+Step*1*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,Comm,Magic,0,clr);
   return;
  }

Причем числа 1 и 3 можно вынести как переменные в настройки.
А вот изменения размера лота нет на самом деле.
avatar

  16  ssg Сообщений: 817

  • 17 февраля 2022, 22:33
+
0
Проблема в том, что брокер дает цену как дискретную величину.Любая жестко указанная вами цена открытия позиции (например евро=1.13802) может не попасть в цену указанную брокером (например евро=1.13800 или евро=1.13895) и тогда позиция не откроется.Нужен доверительный интервал (т.е.+-, от и до), но брать наверное нужно не спред(он тоже плавает), а 1-3 стоплевела или конкретное кол-во пунктов.
Ну или уходить на отложенные ордера.
avatar

  16  ssg Сообщений: 817

  • 17 февраля 2022, 22:48
+
0
Спасибо большое.
avatar

  13  verta81 Автор Сообщений: 355

  • 18 февраля 2022, 17:02
+
0
Имелось ввиду работать по уровням без тейка и стоп-лосса.
они же в моем варианте ставятся как раз на нужные уровни. по крайней мере можно проверить работоспособность идеи
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 17 февраля 2022, 22:01
+
0
Андрей, Можно добавить в Ваш вариант 2 условия:
— если на уровне уже есть открытый sell, то ордер sell не открывается;
— если на уровне уже есть открытый buy, то ордер buy не открывается;
avatar

  13  verta81 Автор Сообщений: 355

  • 18 февраля 2022, 17:02
+
0
чтобы точнее сетку выстроить, можно по 20 отложек сделать и стопы к шагу привязать
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 18 февраля 2022, 18:07
+
0
Если с отложками, то лучше на уровень выше и на уровень ниже их устанавливать, с условием, что: если на уровне уже есть открытый sell, то ордер sellLimit не устанавливается/ если на уровне уже есть открытый buy, то ордер buyLimimt не устанавливается;
avatar

  13  verta81 Автор Сообщений: 355

  • 19 февраля 2022, 18:14

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