marik
Марк

 
Уровень 24

  Торгую в компаниях:

  Моя торговля


График торгового счета marik


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

Рейтинг 2089



РЕКОМЕНДУЮ



скрипт для закрытия определенного типа ордеров

Здравствуйте напишите пожалуйста скрипт для закрытия выбранного типа ордеров чтоб работал так при достижение выставленного тейка закрывалась цепочка только открытых ордеров в эту сторону включая отложки.
1. настройка тейка в пунктах
2. выбор работы на продажу на покупку или все вместе.
платформа мт4
  • 0
  • Просмотров: 3700
  • 6 апреля 2016, 22:06
  • marik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Можно все нарисовать на скрине, что будет открываться, сколько и др., т.к. мне нужно будет моделировать все в тестере
avatar

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

  • 6 апреля 2016, 22:12
+
0
я правильно понимаю сделать скрин терминала с открытыми позициями и расписать что куда
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 6 апреля 2016, 22:39
+
0
да как вам будет удобнее, чтобы все понятно было.
avatar

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

  • 7 апреля 2016, 00:16
+
0
1.Я раставляю ордера в покупку и в продажу 10 -20 штук в каждую сторону отложными ордерами.

2.выставляю для каждого ордера в ручную тейк профит.

3.Суть скрипта По достижению выставленного мной тейка Закрыть открытые ордера
включая и отложки которые остались не тронутыми в эту сторону например в покупку
значит закрыть ее а продажи должны висеть до срабатывания тейка выставленного мной
и после срабатывания тейка закрыться включая отложки на продажу.

4.Я буду руками закрывать висящие в минусе сделки но скрипт должен стоять на своем и закрывать всю серию только при сработаевшем тейк профите.
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 7 апреля 2016, 22:19
+
0
Все равно здесь возможны разночтения, все должно быть предельно ясно и наглядно, чтобы мне несколько раз не переделывать. Покажите на скрине с пояснениями как я просил выше.
avatar

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

  • 8 апреля 2016, 07:02
+
0
ок займусь на выходных
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 8 апреля 2016, 07:05
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:04
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:04
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:04
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:05
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:05
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:05
+
0
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 11 апреля 2016, 08:06
+
0
Сделал в виде советника. Может ставить сетку и удаляет ордера после тейка:




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

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 500;      // язь
extern int Step          = 100;      // шаг ордеров
extern int Count         = 5;        // количество ордеров
extern int BuySell       = 0;        // 0-buy 1-sell 2-off
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;
   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,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder(int type)
  {
   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()==type) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int result=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)
           {
            type=1;//buy  
           }
         if(OrderType()==OP_SELL)
           {
            type=2;//sell  
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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 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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(CountOrders(2)<1 && BuySell==0)
        {
         for(int i=1;i<Count;i++)
           {
            PutOrder(2,Ask-Step*Point*i);
           }
        }

      if(CountOrders(3)<1 && BuySell==1)
        {
         for(int i=1;i<Count;i++)
           {
            PutOrder(3,Bid+Step*Point*i);
           }
        }
     }

   if(LastDealResult()==1 && LastDealType()==1) DelOrder(2);
   if(LastDealResult()==1 && LastDealType()==2) DelOrder(3);
  }
//+------------------------------------------------------------------+

avatar

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

  • 11 апреля 2016, 09:47
+
0
добрый вечер подскажите как настроить этот скрипт чтоб он не торговал сам а только закрывал ордера и убирал отложки после тейка В одну сторону в какую закрылся мне с лотом все понятно лот это лот и с лосем и с язем и с шагом в общем со всем кроме профит в валюте т.е. если я поставлю это значение закрываться ордер будет не по язю?

Если я правильно разобрался с этим скриптом то я открываю первую сделку а он просто ее тащит либо до закрытия и не торгует больше или открывает еще колено с удвоением и до тейка сам он не торгует а если торгует то откуда берется сигнал?

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

при открытие сделки номер два я руками закрываю сделку один и также ставлю тейк для скрипта условия теже при профите закрытие ордера- ордеров

Сделки я открываю в две стороны.
avatar

  24  marik Автор Сообщений: 23 - Марк

  • 13 апреля 2016, 23:41
+
0
Смотрите описание настроек:


//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 50;       // язь
extern int Step          = 100;      // шаг ордеров
extern int Count         = 5;        // количество ордеров
extern int BuySell       = 0;        // 0-buy 1-sell 2-off
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик


BuySell = 2; советник не торгует
Magic = 0; советник работает с ордерами открытыми вручную или с магиком 0.
Magic = 123; советник работает с ордерами открытыми с указанным магиком.
avatar

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

  • 14 апреля 2016, 10:17

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