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

Рейтинг 1061



РЕКОМЕНДУЮ



БЕЗУБЫТОЧНЫЙ МЕТОД ТОРГОВЛИ
[*]

ХОЧУ ЗАКАЗАТЬ СОВЕТНИК КАНАЛЬНЫЙ.У Вас на подобие есть, но не такой.
Вот сайт где есть описание и видео.
forexbid.jimdo.com/strategy/metod/

Выставляются два отложенных ордера, байстоп 0,1 лот и селстоп 0,2 лота, в два раза больше.
При срабатывании бай допустим 0,1 лот ставим тейк профит, работаем без стоплоса.
Если рынок пошёл дальше в бай то стработает тейкпрофит и всё начинаем заново, если после бая рынок пошёл в сел то сработает 0,2 лота сел и если рынок продолжит движение то мы закрываем по обшему профиту в валюте депозита. После срабатывания сел 0,2 тут же выставляется байстоп 0,4 на растоянии где у нас стоит байстоп 0,1 лот, ну и так далее по схеме.



Настройки

extern double Lots = 0.1; // лот
extern double PlusLot = 0.1; // прибавление лота
extern int TakeProfit = 50; // язь
extern int Profit = 100; // Профит в валюте
extern int BULevel = 0; // уровень БУ
extern int BUPoint = 0; // пункты БУ
extern int TrailingStop = 0; // трал
extern int TrailingStep = 0; // шаг трала
extern int Slip = 3; // реквот
extern int StepOrders = 10; // Расстояние от цены в пунктах. Коридор.

extern int Magic = 123; // магик
  • +4
  • Просмотров: 1111
  • 6 января 2017, 19:46
  • cashyra
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Недавно помню делал такой.
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 6 января 2017, 19:49
+
0
там совсем другой я смотрел
avatar

  9  cashyra Автор Сообщений: 207 - Юра

  • 6 января 2017, 19:51
+
0
Не раньше вторника будет, очередь :) 
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 6 января 2017, 20:18
+
0
Этот «безубыточный метод» сливает во флете, и довольно быстро. Прибавьте сюда ещё отрицательные свопы, спреды… Итог ясен, к сожалению.
avatar

  4  seronn Сообщений: 26

  • 6 января 2017, 20:37
+
0
Здесь действительно штуки 4 только моих варианта и у Оксаны еще сколько!
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 6 января 2017, 20:39
+
0
Ну всё равно попробуйте сделать имено такой вариант, думаю на маленьких расстояния в 5-10 пунктов и маленький профит можно что то выкрутить. Таких вариантов у Вас нет. Тем более этот советник можно запустить с другими советниками и они будут друг друга балансировать. Да и вариант с безубытком и тралом думаю никто не расматривал, а это другая стратегия. И ещё центовый счёт и ещё и инстафорекс и ещё и плечо 1000
Редактирован: 6 января 2017, 21:02
avatar

  9  cashyra Автор Сообщений: 207 - Юра

  • 6 января 2017, 21:00
+
0
В середине недели где то начну делать.
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 7 января 2017, 21:53
+
0
Сделал так как понял ваше ТЗ. А что будет делать советник в такой ситуации?



//+------------------------------------------------------------------+
//|                                                     NoLosses.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

extern int    StopLoss     = 0;        // лось
extern int    TakeProfit   = 0;        // язь
extern int    BULevel      = 0;        // уровень БУ
extern int    BUPoint      = 30;       // пункты БУ
extern int    TrailingStop = 0;        // трал
extern int    TrailingStep = 20;       // шаг трала
extern int    Profit       = 20;       // профит в валюте
extern int    Delta        = 200;      // расстояние для отложек
extern int    Slip         = 3;        // реквот
extern double Lots         = 0.1;      // лот
extern double PlusLot      = 0.1;      // прибавление лота
extern int    Magic        = 111;      // магик 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot)
  {
   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+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>TrailingStop*Point)
              {
               if(OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point)
                 {
                  mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }

         if(OrderType()==OP_SELL)
           {
            if((OrderOpenPrice()-Ask)>TrailingStop*Point)
              {
               if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0)
                 {
                  mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(CountOrders(4)<1) PutOrder(4,Bid+Delta*Point,Lots);
      if(CountOrders(5)<1) PutOrder(5,Bid-Delta*Point,Lots+PlusLot);
     }

   if(AllProfit()>Profit && Profit>0)
     {
      CloseAll();
      DelOrder();
     }

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
  }
//+------------------------------------------------------------------+

Редактирован: 11 января 2017, 20:42
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 11 января 2017, 19:15
+
0
не то. Выставляет допустим 0,5 лота в бай, а потом выставляет 1 лот в сел и если пойдёт в сел то норма он закроет профит так как в сел лотов больше, а если пойдёт в бай то там лотов меньше и надо долго ждать закрытия. Там всё не так, надо чтобы выставлялось как в стратегии и на картинке, чтобы лоты увеличивались. А тут ордер сработал а лот баевский не увеличился или надо бобавить может ешё отложку на том же месте где бай ордер


Редактирован: 11 января 2017, 20:57
avatar

  9  cashyra Автор Сообщений: 207 - Юра

  • 11 января 2017, 20:55
+
0
Попрошу еще раз дать ссылку на советник который больше всего соответствует ТЗ? С нуля долго.
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 11 января 2017, 22:01
+
+1
Вот хедж мартин 2017. Эту версию я уже могу править:


//+------------------------------------------------------------------+
//|                                                  HedgeMartin.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                             www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Loss           = 9000;      // убыток в валюте
extern double Profit         = 10;        // профит в валюте
extern double Lots           = 0.1;       // лот
extern double KLot           = 2;         // увеличение лота
extern double MaxLot         = 10;        // максимальный лот
extern int    Delta          = 100;       // дельта
extern int    Slip           = 30;        // проскальзывание
extern int    Magic          = 123;       // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastOrderType()
  {
   int type=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)  type=1; //buy
         if(OrderType()==OP_SELL) type=2; //sell
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LastOrderOpenPrice()
  {
   double pr=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==0))
        {
         if(OrderType()<2) pr=OrderOpenPrice();
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==0))
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==0))
           {
            if(OrderType()<2) profit+=OrderProfit()+OrderSwap()+OrderCommission();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(CountTrades()>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==0))
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// открытие первого ордера 
   if(CountTrades()<1)
     {
      PutOrder(0,Ask);
     }

// открытие последующих ордеров
   if(CountTrades()>0)
     {
      if(LastOrderType()==1)
        {
         if(CountOrders(5)<1) PutOrder(5,LastOrderOpenPrice()-Delta*Point);
        }

      if(LastOrderType()==2)
        {
         if(CountOrders(4)<1) PutOrder(4,LastOrderOpenPrice()+Delta*Point);
        }
     }

   if(AllProfit()>Profit || AllProfit()<-Loss)
     {
      CloseAll();
      DelOrder();
     }

   Comment("\n Profit: ",DoubleToString(AllProfit(),2),
           "\n Last Order Type: ",LastOrderType(),
           "\n Count Trades: ",CountTrades());
  }
//+------------------------------------------------------------------+

avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 11 января 2017, 22:19
+
0
Доработайте этот, вот так, и будет то, что тут запрашивалось и надо.
zakaz.opentraders.ru/36573.html

Можно добавить выбор:
— срабатывать от 1го рыночного ордера открытого в МТ4
— выводить 2 стоп-ордера (только их надо мочь перетаскивать под свои уровни, пока не сработали, и так, чтобы канал после меж сработавшими выстраивался, а не по жёсткой Дельте).
Редактирован: 11 января 2017, 23:29
avatar

  8  preasto Сообщений: 313

  • 11 января 2017, 23:25
+
0
Я что то запутался. Вам проще смотреть с какого можно править, на Ваш выбор. Или может кто в студии подскажет. Потому что я сколько не смотрел даже блиско нет такой системы.
avatar

  9  cashyra Автор Сообщений: 207 - Юра

  • 12 января 2017, 01:01
+
0
С нуля я пробовал делать, нет за такой алгоритм я не берусь. А то что написано немного могу поправить.
avatar

  25  AM2 Сообщений: 6013 - Андрей

  • 12 января 2017, 05:32
+
0
Норма, я посмотрел HedgeMartin, он вроде делает тоже самое. Сейчас поставил на демо, посмотрим. Тем более у меня останется право зсказать что то другое.
avatar

  9  cashyra Автор Сообщений: 207 - Юра

  • 12 января 2017, 08:16
+
+1
Смотрите. Придёте к тому же: при достижении ограничения колен (лота) нужно выставлять запирающую отложку объёмом на сумму разницы лотностей обоих направлений.
Если повезёт и до нее не дойдёт — профит, не повезёт — лок, к-й после самому разруливать.
Но это лучше, чем гарантированный слив, при правильном направлении начального ордера от уровней мат. ожидание выигрыша всё равно выше. Поднаторев и набравшись терпения до ключевых разворотов — и локи разруливаются к тому же. Полностью в прибыль, либо частично — снижая убыток более чем на половину, как минимум.
Редактирован: 12 января 2017, 09:37
avatar

  8  preasto Сообщений: 313

  • 12 января 2017, 09:17

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

 
Как начать: открываем первую торговую сделку за 7 шагов →