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

Рейтинг 2088



РЕКОМЕНДУЮ



Выставление отложенных ордеров

Добрый день. Уважаемый AM2 нужна ваша помощь.Необходим советник для выставления отложенных ордеров Buy Limit,Buy Stop,Sell Limit,Sell Stop.
Суть заключается в следующем. Зажата кнопка на клавиатуре Ctrl + Нажатие на колесик мыши( на графике выходит прекрестие чтоб указать на какую цену выставить отложенный ордер) + Нажатие Левой кнопкой мыши. Открывается окно с выбором отложенного ордера. С Возможность передвигать Ордер,TakeProfit,StopLoss в тестере.
В настройках советника:
Lot — Возможность указывать на графике
StopLoss — Возможность указывать на графике
TakeProfit — Возможность указывать на графике
Slippage

И чтобы это все работало и в тестере.

В идеале было бы не плохо иметь Аналог такого советника как на графике FX Blue — Trading Simulator v3

Скрины с заданием прилагаю





  • 0
  • Просмотров: 1201
  • 1 мая 2021, 18:28
  • rus008
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Советник перевертыш на индикаторе WRB-Hidden-Gap
01 мая 2021
01 мая 2021

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

+
0
такое тз не для бесплатного
avatar

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

  • 2 мая 2021, 20:32
+
0
Сколько такое ТЗ будет стоить?
avatar

  6  rus008 Автор Сообщений: 46

  • 2 мая 2021, 22:49
+
0
вам напишут в личку кто платно делает
avatar

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

  • 3 мая 2021, 07:28
+
0
А если я упрощу задание? НЕ нужно ни какого всплавающего окна. Если выще цены Зажата кнопка на клавиатуре Ctrl + Нажатие на колесик мыши( на графике выходит прекрестие чтоб указать на какую цену выставить отложенный ордер) + Нажатие Левой кнопкой мыши.Выставляется SellLimit Если ниже цены то BuyLimit
Редактирован: 3 мая 2021, 13:52
avatar

  6  rus008 Автор Сообщений: 46

  • 3 мая 2021, 11:56
+
0
зачем нажимать контрол и шифт когда по щелчку можно определить где щелкнули над или под ценой и поставить соответствующий лимитник. такое можно сделать
avatar

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

  • 5 мая 2021, 09:00
+
0
avatar

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

  • 5 мая 2021, 10:04
+
0
Спасибо тебе добрый человек. Это очень удобно в работе. Жаль что в тестере не работает, но попробую сам до этого дойти
avatar

  6  rus008 Автор Сообщений: 46

  • 5 мая 2021, 19:54
+
0
в тестере OnChartEvent не работает, по клику не сделаешь
avatar

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

  • 5 мая 2021, 20:09
+
0
в тестере можно сделать такой вариант:

на графике линии для лимиток и кнопки. щелкаем на кнопку лимитка ставится на линию. линию можно двигать.
avatar

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

  • 5 мая 2021, 20:53
+
0
Это было бы не плохо. А то не могу полноценно стратегию протестировать и настроить ручной помошник для торговли
avatar

  6  rus008 Автор Сообщений: 46

  • 5 мая 2021, 23:01
+
0
это уже на следующий топик пойдет
avatar

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

  • 5 мая 2021, 23:04
+
0
Все таки необходимо чтоб лимитка выставлялась нажатием двумя кнопок зажатая Ctrl + левая кнопка мыши. Во избежание лишних заявок на нажатии графика
avatar

  6  rus008 Автор Сообщений: 46

  • 6 мая 2021, 13:49
+
+1
Во избежание лишних заявок на нажатии графика


отключите автоторговлю и кликайте сколько угодно
avatar

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

  • 6 мая 2021, 19:04
+
0
Спустя долгого времени в поисках своей идеи мне все таки удалось найти что то похожее в интернете. Это подойдет для тех кто хочет проверить свою стратегию в тестере на лимитных ордерах. TakeProfit и StopLoss нужно будет прикрутить сомостоятельно.
Как это работает: Активировать кнопки Buy Sell (двойное нажатие левой кнопкой мыши) Установить на график горизонтальную линию. Если линия выше, то сдвинуть кнопку Sell не много выше и выставится отложенный ордер SellLimit. Если ниже цены линия, то сдвинуть кнопку Buy не много и выставится отложенный ордер BuyLimit. Может кому то пригодится в дальнейшем для своих идей.
avatar

  6  rus008 Автор Сообщений: 46

  • 7 мая 2021, 19:02
+
0
//+------------------------------------------------------------------+
//|                                                 Точтонужно.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//+------------------------------------------------------------------+
// задание лота - смещением соответствующих цифр (результирующий лот - это сумма смещённых цифр)
// установка нового лота - смещением "строки лота"
// открытие ордера Buy - установкой "стрелки вверх" или "палец вверх", Sell - "стрелки вниз" или "палец вниз"
// закрытие ордеров и удаление SL, TP и отложенных - перекрытием соответствующих линий прямоугольником
// установка SL и TP с помощью трендовой линии
// трейлинг-стоп и шаг трейлинг-стопа - с помощью цифр (по методу установки лота)
// удаление трейлинг-стопа - установкой его в 0 или удалением
// установка отложенных ордеров с помощью горизонтальных линий и соотв. слов: Buy или Sell
// сдвиг отложенного ордера  - установкой и смещением ценовой метки
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
extern double  Lot         = 0.1;

extern string  s1________  = "--------------------------------------";
extern int     Font        = 10;
extern int     Y_0         = 0;
extern int     Step_Y      = 15;
extern int     Shift_Y     = 10;
extern string  s2________  = "--------------------------------------";
extern int     Magic       = 1423;
extern int     Slippage    = 5;
extern string  pref        = "TR_";
extern string  s3________  = "--------------------------------------";
extern color   col_Buy_Sell= clrRed;
//+------------------------------------------------------------------+
int  kol_ord_BuyLimit, kol_ord_SellLimit; 
      

//+------------------------------------------------------------------+
int OnInit()
{   

   out_str_Sell(20, Y_0+Step_Y*12+Shift_Y, col_Buy_Sell);
   out_str_Buy (70, Y_0+Step_Y*12+Shift_Y, col_Buy_Sell);

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   remove_objects(pref);
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
void OnTick()
{
   //.....................................
      // открыть отложенный ордер
   double pr=Find_Horiz_Line();
   if (pr>0)
   {
      if (!opred_Buy_otl(70,Y_0+Step_Y*12+Shift_Y,pr,Lot))
         opred_Sell_otl(20,Y_0+Step_Y*12+Shift_Y,pr,Lot);
   }
   else
   {
      out_str_Sell(20, Y_0+Step_Y*12+Shift_Y, col_Buy_Sell);
      out_str_Buy (70, Y_0+Step_Y*12+Shift_Y, col_Buy_Sell);
   }
}
//---------------------------------
bool opred_Buy_otl(int X, int Y, double pr, double lot)
{
   bool out=false;
   if (sdvig_str("Buy",X,Y))
   {
      out=true;
      out_str_Buy(X,Y,col_Buy_Sell);
      if (vozvrat_str("Buy",X,Y))
      {
         out_str_Buy(X,Y,col_Buy_Sell);
         if (ust_Buy_otl(pr,Lot))Del_Horiz_Line();
      }
   }
   return(out);
}
//-------------------------------------
bool opred_Sell_otl(int X, int Y, double pr, double lot)
{
   bool out=false;
   if (sdvig_str("Sell",X,Y))
   {
      out=true;
      out_str_Sell(X,Y, col_Buy_Sell);
      if (vozvrat_str("Sell",X,Y))
      {
         out_str_Sell(X,Y, col_Buy_Sell);
         if (ust_Sell_otl(pr,lot))Del_Horiz_Line();
      }
   }
   return(out);
}
//--------------------------------------------
void out_inf(color col)
{
   string str1="Баланс: "+DoubleToStr(AccountInfoDouble(ACCOUNT_BALANCE),2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+
             "  Средства: "+DoubleToStr(AccountInfoDouble(ACCOUNT_EQUITY),2)+
             "  Залог: "+DoubleToStr(AccountInfoDouble(ACCOUNT_MARGIN),2);
   string str2="Свободно: "+DoubleToStr(AccountInfoDouble(ACCOUNT_FREEMARGIN),2)+
             "  Уровень: "+DoubleToStr(AccountInfoDouble(ACCOUNT_MARGIN_LEVEL),2);
   
   put_txt(pref+"inf1", str1, 10, 25, col, Font,2);
   put_txt(pref+"inf2", str2, 10, 10, col, Font,2);
}
//-------------------------------------------
void out_str_Buy(int X, int Y, color col)
{
   put_txt(pref+"Buy", "Buy", X, Y, col, Font,3);
}
//-------------------------------------------
void out_str_Sell(int X, int Y, color col)
{
   put_txt(pref+"Sell", "Sell", X, Y, col, Font,3);
}
//-------------------------------------------
bool vozvrat_str(string NN, int X, int Y)
{
   string name=pref+NN;
   if (ObjectGet(name, OBJPROP_XDISTANCE)==X && ObjectGet(name, OBJPROP_YDISTANCE)==Y)return(true);
      
   return(false);
}
//-------------------------------------------
bool sdvig_str(string NN, int X, int Y)
{
   string name=pref+NN;
   if (ObjectGet(name, OBJPROP_XDISTANCE)!=X)return(true);
   if (ObjectGet(name, OBJPROP_YDISTANCE)!=Y)return(true);
      
   return(false);
}
//-------------------------------------------
bool sdvig_txt(string name,int X,int Y)
{
   if (ObjectGet(name, OBJPROP_XDISTANCE)!=X)return(true);
   if (ObjectGet(name, OBJPROP_YDISTANCE)!=Y)return(true);
   return(false);
}
//-------------------------------------------
void put_txt(string name, string vol, int X,int Y,color col1, int shr, int corn)
{
   if (ObjectFind(name)<0)ObjectCreate(name, OBJ_LABEL, 0,0,0);
   ObjectSet(name, OBJPROP_CORNER, corn);
   ObjectSet(name, OBJPROP_XDISTANCE, X);
   ObjectSet(name, OBJPROP_YDISTANCE, Y);
   ObjectSetText(name, vol, shr, "Arial Black", col1);
}
//-----------------------------------------
bool Del_Horiz_Line()
{
   string Obj_Name;
   for(int k=ObjectsTotal()-1; k>=0; k--)
   {
      Obj_Name=ObjectName(k);
      if (StringSubstr(Obj_Name,0,1)=="#")continue;
      if (ObjectType(Obj_Name)==OBJ_HLINE)ObjectDelete(Obj_Name);
   }
   
   return(false);
}
//-----------------------------------------
double Find_Horiz_Line()
{
   string Obj_Name;
   double pr=0;
   for(int k=ObjectsTotal()-1; k>=0; k--)
   {
      Obj_Name=ObjectName(k);
      if (StringSubstr(Obj_Name,0,1)=="#")continue;
      if (ObjectType(Obj_Name)==OBJ_HLINE)
      {
         pr=ObjectGet(Obj_Name, OBJPROP_PRICE1);
         return(pr);
      }
   }
   return(0);
}
//-------------------------------------------
bool ust_Buy_otl(double pr,double L1)
{
   int ticketbuy=0;
   double Stop_Level=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

   if (ND(pr)<Bid-Stop_Level)
   ticketbuy = OrderSend(Symbol(),OP_BUYLIMIT,L1,ND(pr),0,0,0,"",Magic,0,Blue);  
   return(ticketbuy>0);
}
//-------------------------------------------
bool ust_Sell_otl(double pr,double L1)
{
   int ticketsell=0;
   double Stop_Level=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   
   RefreshRates();
   if (ND(pr)>Ask+Stop_Level)
      ticketsell = OrderSend(Symbol(),OP_SELLLIMIT,L1,ND(pr),0,0,0,"",Magic,0,Blue);

      
  
   
   return(ticketsell>0);
}
//-------------------------------------------

double ND(double n)
{
   return(NormalizeDouble(n,Digits));
}
//---------------------------------------------------------------
void remove_objects(string PreName)
{
   string Obj_Name,Head;
   for(int k=ObjectsTotal()-1; k>=0; k--) 
   {
      Obj_Name=ObjectName(k);
      Head=StringSubstr(Obj_Name,0,StringLen(PreName));
      if (Head==PreName)ObjectDelete(Obj_Name);
   }
}
//----------------------------------------------

avatar

  6  rus008 Автор Сообщений: 46

  • 7 мая 2021, 19:02

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