Jump to content

Напишу советник, скрипт, индикатор на MQL бесплатно (архив)


muvingman

Recommended Posts

BooGUY

Куда еще внимательнее. Или вы  открытие сделок в обе стороны называете фильтром?

Ещё раз: тренд показывают машки, окончание тренда или коррекцию показывают они же. Машки и есть фильтр длинных безоткатных движений. Например, на новости выстреливает свеча в 200, 300, 400 пунктов и больше (чем больше, тем сливнее, и тем реже бывает), либо плавный рост несколько дней. Стандартный мартин откроет через Step (допустим 20 пунктов) десяток колен и сольёт депозит (небольшой). Машки показывают тренд, они нам и говорят, что нельзя открывать следующее колено. В то же время сделки в обратную сторону возьмут в профит весь тренд, все эти 400 пунктов и больше. А попарное перекрытие ордеров даст заработать и при малейшей коррекции, да ещё и снизит просадку. 

 

Если имели опыт с таким методом, прошу отписаться, как себя ведёт на практике


Пишу на mql5 и mql4. Примеры. Пишите в личку.

Link to post
Share on other sites
  • Replies 2.9k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    364

  • Voldemar227

    263

  • Ugar68

    133

  • cmillion

    99

Top Posters In This Topic

Popular Posts

Есть скрипт на открытие 2х рыночных и/или 2х отложенных ордера по обе стороны от текущей цены со стоп лоссами и тейк профитами. Можно выставлять магик, расстояние от цены и проскальзывание. Скрипт не

Неблагодарное это дело писать тут для кого либо. Я как то, в начале года пытался помочь тут одному персонажу с индикатором, так он потом мне весь мозг, через личные сообщения вынес,  с тех пор пишу т

Posted Images

Circle

Ещё раз: тренд показывают машки, окончание тренда или коррекцию показывают они же. Машки и есть фильтр длинных безоткатных движений. Например, на новости выстреливает свеча в 200, 300, 400 пунктов и больше (чем больше, тем сливнее, и тем реже бывает), либо плавный рост несколько дней. Стандартный мартин откроет через Step (допустим 20 пунктов) десяток колен и сольёт депозит (небольшой). Машки показывают тренд, они нам и говорят, что нельзя открывать следующее колено. В то же время сделки в обратную сторону возьмут в профит весь тренд, все эти 400 пунктов и больше. А попарное перекрытие ордеров даст заработать и при малейшей коррекции, да ещё и снизит просадку. 

 

Если имели опыт с таким методом, прошу отписаться, как себя ведёт на практике

Все понятно, теоретик. Машки показывают только то что было, а не то что будет. :) Ни какой индикатор не может предсказать каким будет и как долго продлится движение. Смотря на график на истории видно, что машка сигналит, что нельзя открывать очередное колено, но в реальном времени пока машка сформирует какой либо сигнал ваш мартин успеет открыть несколько колен на пол депозита.

....

По поводу опыта поинтересуйтесь у трейдера с ником ЖАБА77  https://alpariforum.com/index.php?/topic/116981-evroflud-osen-2016/?p=3943594 она  практикует открытие двух разнонаправленных позиций.  

Edited by Circle

Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
Елена4

Добрый вечер уважаемые программисты нужен советник со следующими торговыми условиями

В настройках указываем:
1. Время формирования коробки.
2. Значения уровней Фибоначчи.
3. Объем первой сделки.

После формирования коробки советник выставляет два стоп-ордера одинакового объема на максимуме и минимуме коробки с учетом спрэда + 1 пункт. Далее допустим открылся ордер бай(например 0.01). В этот момент необходимо удалить сэлл-стоп и выставить новый сэлл-стоп с объемом в три раза больше (если бай был 0.01, то сэлл-стоп должен быть 0.03). Когда в рынок входит ордер сэлл, необходимо выставить бай-стоп, объем увеличивается уже в два раза от противоположного последнего открытого ордера.(т.е. 0.06, 0.12, 0.24, и т.д.). Тейк профит для всех открытых ордеров выставляем на уровнях Фибоначчи. Стоп лосс для всех открытых ордеров ставим на уровне тейк профит +/- спрэд.(Таким образом все ордера закроются в один момент).
Допустим у нас в рынке несколько ордеров, суммарный тейк профит на первом уровне Фибоначчи становится меньше 10 пунктов значит тейк профит и стоп лосс переносим на следующий уровень Фибоначчи (профита).

Если ордера не закрываются до формирования новой коробки, мы продолжаем торговать по уровням той коробки, по которой открылся первый ордер.

 Всем спасибо.

57eb53b12a49c_ScreenShot1.png

Link to post
Share on other sites
Елена4

Добрый вечер. Подскажите функцию, которая выведет на экран объем последней открытой позиции.
Спасибо

Link to post
Share on other sites
Circle

Добрый вечер. Подскажите функцию, которая выведет на экран объем последней открытой позиции.

Спасибо

В mql такой функции нет. Вам надо для начало получить тикет последней открытой позиции,

int LastOpenOrderTicket(void)
{
   datetime tOpen=0;
   int ticket=0;
   for(int i=OrdersTotal()-1; i>=0; i--)         
   {  
      if (!OrderSelect(i, SELECT_BY_TICKET)) continue;
      if (tOpen<OrderOpenTime())
      {
         tOpen=OrderOpenTime();
         ticket=OrderTicket();         
      }
   }
   if (OrderSelect(ticket,SELECT_BY_TICKET)) return(OrderTicket());
   else return(-1);
} 

выбрать его функцией OrderSelect(..)  после чего функцией OrderLots() можно получить объем. Для вывода на экран (самый простой способ) использовать функцию Comment().

Edited by Circle
  • Thanks 1

Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
Ugar68

В mql такой функции нет. Вам надо для начало получить тикет последней открытой позиции,

int LastOpenOrderTicket(void)
{
   datetime tOpen=0;
   int ticket=0;
   for(int i=OrdersTotal()-1; i>=0; i--)         
   {  
      if (!OrderSelect(i, SELECT_BY_TICKET)) continue;
      if (tOpen<OrderOpenTime())
      {
         tOpen=OrderOpenTime();
         ticket=OrderTicket();         
      }
   }
   if (OrderSelect(ticket,SELECT_BY_TICKET)) return(OrderTicket());
   else return(-1);
} 

выбрать его функцией OrderSelect(..)  после чего функцией OrderLots() можно получить объем. Для вывода на экран (самый простой способ) использовать функцию Comment().

Косяк. В цикле, выбираешь по тикету, а подставляешь индекс.

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
Ugar68

Добрый вечер. Подскажите функцию, которая выведет на экран объем последней открытой позиции.

Спасибо

if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))Comment("Lot=",DoubleToString(OrderLots(),2));

else Comment("Нет открытых ордеров");

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
kazakov.v
double foo()
{
 double LastPosLots=0;
 for(int i=OrdersTotal();i-->0;)
   if(OrderSelect(i,SELECT_BY_POS))
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
      //if(OrderMagicNumber()==12345) //Можно добавить например проверку мэджика
      {
         LastPosLots=OrderLots();
         break;
      }
  if(LastPosLots==0) Comment("Нет открытых позиций");
  else               Comment("Объем последней открытой позиции ",DoubleToStr(LastPosLots,2));
  return LastPosLots;
}

Как-нибудь так можно.

Edited by kazakov.v

Никому верить нельзя.

Мне - можно.

 

Link to post
Share on other sites
Circle

Косяк. В цикле, выбираешь по тикету, а подставляешь индекс.

Да, косяк это я переделывал уже готовую функцию предназначенную для других целей, и это момент упустил.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
BooGUY

Все понятно, теоретик. Машки показывают только то что было, а не то что будет. :) Ни какой индикатор не может предсказать каким будет и как долго продлится движение. Смотря на график на истории видно, что машка сигналит, что нельзя открывать очередное колено, но в реальном времени пока машка сформирует какой либо сигнал ваш мартин успеет открыть несколько колен на пол депозита.

....

По поводу опыта поинтересуйтесь у трейдера с ником ЖАБА77  https://alpariforum.com/index.php?/topic/116981-evroflud-osen-2016/?p=3943594 она  практикует открытие двух разнонаправленных позиций.  

Бред. Вы ничего не поняли. На кой чёрт и кто даст разрешение советнику открывать очередное колено, если русским языком ему дано условие в коде: открывать на новой свече при зафиксированном (не плавающем) пересечении машек. На новом(!) баре, т.е., машка на Брексите может пересекаться со старшей в паре десятки раз на одной (текущей) свече, пока её колбасит, но колено не откроется, пока эта психологическая катавасия новостная не кончится. С другой стороны, мы типа можем прозевать выгодную цену для нового колена, если движение так же резко пойдёт в нашу сторону, ведь машка запаздывает. Но тут, логично предположить, нам и не нужно открывать доп колено, ведь цена в нашу(!) сторону идёт, а просто нужно установить порог, переменная МинСтеп в пунктах будет указвать минимальную цену для открытия колена, чтобы у самой цены открытия предыдущего ордера не открывала. Может, и не потребуется открывать, пойдёт волна старшего уровня и "пересидка" сыграет. 

Подчёркиваю, этот сов - мартин(!). Здесь риск и игра вероятностей. И относится к нему нужно, как к мартину. А не как к стоповой стратегии. 

 

Много слов, много объяснений. Видно, что нет желания браться и вникать. Не беритесь. Но и постить обсуждать не нужно, мне нужен результат, этих мусоливаний и на руфоруме полно

 

 

Edited by BooGUY

Пишу на mql5 и mql4. Примеры. Пишите в личку.

Link to post
Share on other sites
Nomid83

Здравствуйте! Помогите пожалуйста, мне нужно добавить в этот индикатор алерт с всплывающим окном где будет название пары, направление "купить, продать" и название потерна.

candlestick.mq4

Link to post
Share on other sites
Circle

............ Но и постить обсуждать не нужно, мне нужен результат, этих мусоливаний и на руфоруме полно

 

 

Простите, больше не буду.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
Елена4

Здравствуйте уважаемые программисты. Пытаюсь модифицировать советник под себя. Сейчас он выставляет только TP для всех ордеров, (хочу еще добавить, чтобы выставлял SL). Подскажите почему он удаляет все стоплоссы, выставленные вручную? Спасибо.

Modify SL & TP.mq4

Link to post
Share on other sites
Ugar68

Здравствуйте уважаемые программисты. Пытаюсь модифицировать советник под себя. Сейчас он выставляет только TP для всех ордеров, (хочу еще добавить, чтобы выставлял SL). Подскажите почему он удаляет все стоплоссы, выставленные вручную? Спасибо.

attachicon.gifModify SL & TP.mq4

Потому что он выставляет нулевой стоп лосс. SL=0

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
YanaGold

Здравствуйте уважаемые программисты. Пытаюсь модифицировать советник под себя. Сейчас он выставляет только TP для всех ордеров, (хочу еще добавить, чтобы выставлял SL). Подскажите почему он удаляет все стоплоссы, выставленные вручную? Спасибо.

attachicon.gifModify SL & TP.mq4

 

 

сделайте проще

void OnTick()
{
   int tip,Ticket;
   double SL,TP;
   double OOP,OSL,OTP;
   for (int i=0; i<OrdersTotal(); i++) 
   {  
      if (OrderSelect(i, SELECT_BY_POS))
      {  
         tip = OrderType();
         if (OrderSymbol()==Symbol())
         {
            OSL = OrderStopLoss();
            OTP = OrderTakeProfit();
            if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0))
            {  
               OOP   = OrderOpenPrice();
               Ticket = OrderTicket();
               if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)             
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;       
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               }                                         
               if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)        
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;             
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               } 
            }
         }
      }
   }
}
Edited by YanaGold
  • Thanks 1
Link to post
Share on other sites
Елена4

 

 

Потому что он выставляет нулевой стоп лосс. SL=0

Дело в том, что если я удаляю SL=0 он вообще ничего не делает

Link to post
Share on other sites
Елена4

 

сделайте проще

void OnTick()
{
   int tip,Ticket;
   double SL,TP;
   double OOP,OSL,OTP;
   for (int i=0; i<OrdersTotal(); i++) 
   {  
      if (OrderSelect(i, SELECT_BY_POS))
      {  
         tip = OrderType();
         if (OrderSymbol()==Symbol())
         {
            OSL = OrderStopLoss();
            OTP = OrderTakeProfit();
            if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0))
            {  
               OOP   = OrderOpenPrice();
               Ticket = OrderTicket();
               if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)             
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;       
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               }                                         
               if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)        
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;             
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               } 
            }
         }
      }
   }
}

Буду пробовать.

Link to post
Share on other sites
ToB. CyxoB

Дело в том, что если я удаляю SL=0 он вообще ничего не делает

мне кажется проблема в этой строке 

(SL != OSL || TP != OTP)
Edited by ToB. CyxoB
Link to post
Share on other sites
Елена4

 

мне кажется проблема в этой строке 

(SL != OSL || TP != OTP)

Тоже есть такое подозрение. Вобщем оставила такую конструкцию: (TP != OTP) Удалила SL=0;TP=0; советник работает. Пойду крутить его дальше. Всем спасибо

Link to post
Share on other sites
ToB. CyxoB

Тоже есть такое подозрение. Вобщем оставила такую конструкцию: (TP != OTP) Удалила SL=0;TP=0; советник работает. Пойду крутить его дальше. Всем спасибо

перемудрила. Не нужно вводить нулевые значения SL && TP. нужно просто было сравнивать сразу с нолем.

  • Thanks 1
Link to post
Share on other sites
Елена4

Подскажите как прилепить линии к цене, чтобы они не прыгали при переключении таймфрейма

Link to post
Share on other sites
ToB. CyxoB

Подскажите как прилепить линии к цене, чтобы они не прыгали при переключении таймфрейма

какие линии? вертикальные, горизонтальные, трендовые, зеленые? 

и как это они прыгают?

Link to post
Share on other sites
Елена4

Я про советник. У него две линии выставляет тейкпрофит для бай и для селл. Я запускаю советник, перетаскиваю линии на нужные уровни, чтобы он проставил профиты всем ордерам. И тут самое интересное, стоит мне переключить таймфрейм линии передвигаются на n-пунктов.(задается в настройках). Вот их я и хочу прилепить к цене.

Link to post
Share on other sites
ToB. CyxoB

Я про советник. У него две линии выставляет тейкпрофит для бай и для селл. Я запускаю советник, перетаскиваю линии на нужные уровни, чтобы он проставил профиты всем ордерам. И тут самое интересное, стоит мне переключить таймфрейм линии передвигаются на n-пунктов.(задается в настройках). Вот их я и хочу прилепить к цене.

не пойму, зачем тут дополнительные линии? у ордера же есть свои линии ТП и СЛ...перетаскивайте их. 

Edited by ToB. CyxoB
Link to post
Share on other sites
Елена4

не пойму, зачем тут дополнительные линии? у ордера же есть свои линии ТП и СЛ...перетаскивайте их. 

Я их и перетаскиваю. Например поставила на 1.50 Переключаюсь с H1 на H4, а эта линия уже на 1.85. Ордера модифицируются. Зачем оно мне надо? Каждый раз двигать эту линию?

Link to post
Share on other sites
  • Capman changed the title to Напишу советник, скрипт, индикатор на MQL бесплатно (архив)
  • Capman locked and unpinned this topic
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...