Подскажите плиз скрипт, для переворота ближайшей позиции в МТ4.

 

Народ, подскажите плиз скрипт (для МТ4), который переворачивает выборочно, только одну открытую позицию,  а не все которые открыты. Все скрипты которые мне попадаются, переворачивают именно все позиции на одном символе. Например у меня на евро/долларе открыто две позиции Buy, но мне нужно перевернуть только одну позицию чтобы она стала Sell, а вторая позиция Buy так бы и осталось не  перевернутой.

Раньше мне попадался такой скрип, его можно было мышкой перетащить на конкретный ордер который необходимо перевернуть.  Он определял ближайший ордер и переворачивал только его. В настройках можно было выставлять расстояние до ближайшей позиции, а дальше этого значения, скрипт не переворачивал. Также в настройках еще можно было  задавать какие ордера переворачивать,  только рыночные, только отложенные,  или те и другие.
 
GT-999: подскажите скрипт для МТ4, который переворачивает одну открытую позицию

Такой скрипт написать легко. Писать по шагам. 1. Бросаем на график и получаем PriceOnDrop

2. Перебираем ордера и находим ближайший. Выдаем запрос и получаем подтверждение или отказ

//+-------------------------------------------------------+
//| функция перепереворота ордера                PROBA.mq4|
//+-------------------------------------------------------+
// Назначение функций узнаем поставив на них курсор и нажав F1
#property strict

void OnStart()
{
   double Цена = WindowPriceOnDropped();
   int    Тикет=0;
   double Разность=1000000;

   // Ищем ближайший
   for(int Номер=OrdersTotal()-1; Номер>=0; Номер--)
   {
      if(!OrderSelect(Номер, SELECT_BY_POS)) continue;
      if(OrderType()>OP_SELL) continue; // Отложку как перевернуть?
      double НоваяРазность=fabs(OrderOpenPrice()-Цена);
      if(НоваяРазность<Разность)
      {
         Разность=НоваяРазность;
         Тикет=OrderTicket();
      }
   }

   if(Тикет==0)
   {
      Alert("Отсутствуют");
      return;
   }

   if(!OrderSelect(Тикет, SELECT_BY_TICKET))
   {
      Alert("Ордер ",Тикет," Был и пропал!!!");
      return;
   }

   string ТипОрдера[2]={"BUY","SELL"};
   if(MessageBox("Ордер "+(string)Тикет+"  "+ТипОрдера[OrderType()],
              "Переворачивать ?",
              MB_OKCANCEL + MB_ICONQUESTION)==IDCANCEL)
   {
      Alert("Ордер ",Тикет,"  Отмена!!!");
      return;
   }

   // Переворачиваем.....
}   

3. Переворачиваем     или отказываемся

 
STARIJ:

Такой скрипт написать легко. Писать по шагам. 1. Бросаем на график и получаем PriceOnDrop

2. Перебираем ордера и находим ближайший. Выдаем запрос и получаем подтверждение или отказ

3. Переворачиваем     или отказываемся

Везет людям, для которых это легко! А для меня это тёмный лес :)). Очень бы хотелось научиться, но наверное не каждому дано...
 
inr:  Привет! Подскажи , как найти ближайший  противоположный ордер? Только без дропа. За ответ заранее благодарен))
Ближайший к чему? Покажите на скрине или объясните математически с цифрами. И что делать если отсутствуют или два...
 
GT-999:   Везет людям, для которых это легко! А для меня это тёмный лес :)). Очень бы хотелось научиться, но наверное не каждому дано...

Это для всех легко - нужно немного, совсем чуть-чуть зубрежки в самом начале. Потом уже надо будет часто лазить в справочник.

Как зубрить: смотреть на мой скрипт в МетаЕдиторе и стараться понять назначение каждой строчки в самом начале. При затруднении наводить курсор и нажимать F1.

Потом закрыть скрипт и писать по памяти новый.

#property strict                            // Это первая часть

void OnStart()
{
   double Цена = WindowPriceOnDropped();

   Alert("WindowPriceOnDropped = ", Цена);
}
Запустить и смотреть. Получилось - добавить по памяти строки. Если ошибка - закрыть свой и открыть мой. И снова смотреть, и снова сначала писать. Вот этот труд будет вознагражден знанием программирования.
 
GT-999:

Народ, подскажите плиз скрипт (для МТ4), который переворачивает выборочно, только одну открытую позицию,  а не все которые открыты. Все скрипты которые мне попадаются, переворачивают именно все позиции на одном символе. Например у меня на евро/долларе открыто две позиции Buy, но мне нужно перевернуть только одну позицию чтобы она стала Sell, а вторая позиция Buy так бы и осталось не  перевернутой.

Раньше мне попадался такой скрип, его можно было мышкой перетащить на конкретный ордер который необходимо перевернуть.  Он определял ближайший ордер и переворачивал только его. В настройках можно было выставлять расстояние до ближайшей позиции, а дальше этого значения, скрипт не переворачивал. Также в настройках еще можно было  задавать какие ордера переворачивать,  только рыночные, только отложенные,  или те и другие.
Растолкуйте, что по вашему означает перевернуть позицию? У меня создалось впечатление, что вы не понимаете, что это означает.Понимаете ли вы, что чтобы исчезла позиция бай и появилась позиция селл нужно закрыть позицию бай и открыть позицию селл. Либо добавить к позиции бай позицию селл с удвоенным лотом. К тому же новая позиция уже будет иметь другую цену открытия. А если хотите, чтобы цена была той же, то нужно устанавливать отложенный ордер на уровне позиции, которую вы хотите изменить. И позиция изменится только, когда цена дойдёт до уровня срабатывания отложенного ордера.
 
khorosh:  чтобы исчезла позиция бай и появилась позиция селл нужно закрыть позицию бай и открыть позицию селл. Либо добавить к позиции бай позицию селл с удвоенным лотом
На МТ4 нет позиций - там ордера. Вот почему и велят переходить MT5. Там на счете без хеджирования всегда одна позиция, сколько бы ордеров ни посылали. Отличная вещь для усреднителей. И если есть позиция Sell, то безо всякого закрытия открыть удвоенную бай, и останется одна бай. Советую посмотреть...
 
STARIJ:
На МТ4 нет позиций - там ордера. Вот почему и велят переходить MT5. Там на счете без хеджирования всегда одна позиция, сколько бы ордеров ни посылали. Отличная вещь для усреднителей. И если есть позиция Sell, то безо всякого закрытия открыть удвоенную бай, и останется одна бай. Советую посмотреть...

На МТ4 нет позиций - там ордера.

Кто вам такое сказал? Вы просто плохо информированы. Там есть и ордера и позиции. Разве могут быть ордера без позиций? Ведь ордер рано или поздно сработает и это будет уже позиция. Позиция может открываться и сразу по рыночной цене.

С возможностями пятёрки я знаком. Режим без хеджирования это неттинговый режим. Такой режим работы можно организовать и на 4-ке, используя дополнительный код в эксперте.

 
khorosh:

На МТ4 нет позиций - там ордера.

Кто вам такое сказал? Вы просто плохо информированы. Там есть и ордера и позиции. Разве могут быть ордера без позиций? Ведь ордер рано или поздно сработает и это будет уже позиция. Позиция может открываться и сразу по рыночной цене.

С возможностями пятёрки я знаком. Режим без хеджирования это неттинговый режим. Такой режим работы можно организовать и на 4-ке, используя дополнительный код в эксперте.

Посмотрите в MT4 -    Ордера открывшись остались ордерами. Есть функция OrderClose    или, Позиция Close ???


и в MT5

В MT5 на счете без хеджирования все открытые ордера превращаются в одну позицию. Есть тут функция OrderClose  ??? вряд ли

Такой режим работы вряд ли можно организовать и на 4-ке - Сколько ордеров откроете, столько и будет видно в терминале. Ну в терминале их спрятать, закрыть можно. А в истории они вылезут и в журнале.

 
inr:
Ситуация... Открывается бай ( по сигналу одного/ двух индикаторов или отложенным по цене/ по индикатора волатильность) с усреднением по коефициенту с указанием количества орднров. Граница усреднения ближайший фрактал хая/ если хай больше средней волатильности за неделю то по сред волатильности. Шаг ордеров усреднения регулируется количеством ордеров. Вся серия баев локируеться отложкой сел стопом общим лотос серии баев с коефициентом на расстоянии шага усредняющих ордеров. Если открывается лок ордер сов ищет ближайший противоположный ордер, то есть последний байлимит и по его цене выставляет бай стоп отложку с двойным лотос.дальше качели. Закрытие по общему  тейку только  в сторону серии (определяеться по прямой корреляции для евродолл- ближайший фрактал доллфранк на чарте евродолл или по проверке на хай/ Лоу доллфранка за последние "н" баров) или тралу от общего безубытка с мин профитом в сторону лока или в сторону серии Трал с коефиц шага, или по обратному сигналу индикатора при условиии что первый ордер серии в зоне профита . готов оплатить труды.
Про усреднение и кажется хеджирование читал здесь

Есть то ли бритва, то ли принцип Оккама: проще = правильнее. Платят на фрилансе. Здесь бесплатно. Поторгуйте по своей стратегии на демо. Получится - будем писать

 
STARIJ:

Посмотрите в MT4 -    Ордера открывшись остались ордерами. Есть функция OrderClose    или, Позиция Close ???


и в MT5

В MT5 на счете без хеджирования все открытые ордера превращаются в одну позицию. Есть тут функция OrderClose  ??? вряд ли

Такой режим работы вряд ли можно организовать и на 4-ке - Сколько ордеров откроете, столько и будет видно в терминале. Ну в терминале их спрятать, закрыть можно. А в истории они вылезут и в журнале.

Посмотрите в MT4 -    Ордера открывшись остались ордерами.

Ну это просто заголовок таблицы. И общее название для ордеров разного типа. Существуют отложенные ордера и рыночные ордера, так вот рыночные ордера и сработавшие отложенные ордера у трейдеров принято называть позициями, возможно потому, что так короче.  Для ордеров существует функция удаления DeleteOrders().

Такой режим работы вряд ли можно организовать и на 4-ке

Ну это конечно не режим терминала, а просто в эксперте  при появлении двух разнонаправленных позиций моделируется исполнение команды закрыть перекрытые. Я делал такие эксперты. Давно правда, кое что уже даже подзабыл. И да, в истории будут отображаться. Там для закрытия разнонаправленных позиций функция OrderCloseBy() используется. Посмотрите учебник, там есть пример кода для закрытия перекрытых. Но я использовал другой, более компактный код.

Причина обращения: