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

Рейтинг 2092



РЕКОМЕНДУЮ



Советник МТ4

Здравствуйте Андрей вы уже доделывали данный советник.Можно сделать так чтобы если ордер закрылся по TP или SL то но не открывал бы новых ордеров а ждал нового сигнала.PipsToday.mq4 (5 Kb) 100pipstodayscalper.ex 4 (0 Kb)
  • 0
  • Просмотров: 2552
  • 15 октября 2015, 17:27
  • mim
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
В понедельник уже гляну.
avatar

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

  • 15 октября 2015, 20:49
+
0
Ждет.



//+------------------------------------------------------------------+
//|                                                    PipsToday.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"
#property description "100 Pips Today expert advisor"

#define MAGIC  20141109
//--- Inputs
extern double StopLoss     = 500;
extern double TakeProfit   = 500;
extern double BULevel      = 300;
extern double TrailingStop = 300;
extern int    Slip         = 30;
extern double Lots         = 0.1;
//----
extern int BPeriod        = 34;
extern int APeriod        = 3;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
//--- get indicators value
   double PipsTodayYellow=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,0,1);
   double PipsTodayGreen=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,1,1);

//--- sell conditions
   if(PipsTodayYellow>PipsTodayGreen && (LastDealType()==1 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,fND(Bid),Slip,fND(Bid+StopLoss*Point),fND(Bid-TakeProfit*Point),"",MAGIC,0,Red);
      return;
     }
//--- buy conditions
   if(PipsTodayGreen>PipsTodayYellow  && (LastDealType()==2 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,fND(Ask),Slip,fND(Ask-StopLoss*Point),fND(Ask+TakeProfit*Point),"",MAGIC,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
//--- get indicators value 
   double PipsTodayYellow=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,0,1);
   double PipsTodayGreen=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,1,1);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(PipsTodayYellow>PipsTodayGreen)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(PipsTodayGreen>PipsTodayYellow)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC)
           {
            if(OrderType()==OP_BUY)
              {
               if(TrailingStop>0)
                 {
                  if(Bid-OrderOpenPrice()>TrailingStop*Point)
                    {
                     if(OrderStopLoss()<Bid-TrailingStop*Point)
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(TrailingStop>0)
                 {
                  if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                    {
                     if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+20)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+20)*Point) && OrderOpenPrice()<OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=0;
   if(OrdersHistoryTotal()==0)
     {
      type=0;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderType()==OP_BUY)
        {
         type=1;//buy  
        }
      if(OrderType()==OP_SELL)
        {
         type=2;//sell  
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(OrdersTotal()<1) OpenPos();
   else ClosePos();

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

avatar

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

  • 16 октября 2015, 13:42
+
0
Всё работает огромное спасибо
avatar

  2  mim Автор Сообщений: 36

  • 16 октября 2015, 15:18
+
0
Андрей, не скажите в чем проблема на тестере работает отлично, ставлю на демо счет не открывает сделки выдает данные ошибки?100pipstodayscalper BRN,H1: ArrayInitialize function internal error:NKD,H1: trade operations not allowed by settings

avatar

  2  mim Автор Сообщений: 36

  • 21 октября 2015, 16:23
+
0
разрешите авто-торговлю
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 21 октября 2015, 16:35
+
0
Включено
avatar

  2  mim Автор Сообщений: 36

  • 21 октября 2015, 16:40
+
0
avatar

  2  mim Автор Сообщений: 36

  • 21 октября 2015, 16:48
+
0
Вот он открыл один ордер и всё
avatar

  2  mim Автор Сообщений: 36

  • 21 октября 2015, 16:49
+
0
Поставлю на демо посмотрю.
avatar

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

  • 21 октября 2015, 18:09
+
0
Вот одна из возможных причин:
2015.10.21 19:11:28.508 100pipstodayscalper EURUSD,M1: ArrayInitialize function internal error

В индюке глюк какой то.
avatar

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

  • 21 октября 2015, 18:14
+
0
Вот он открыл один ордер и всё


Можно сделать так чтобы если ордер закрылся по TP или SL то но не открывал бы новых ордеров а ждал нового сигнала.


Судя по скрину, советник ждет противоположного сигнала как в ТЗ, т.е. продажу.
avatar

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

  • 22 октября 2015, 13:14
+
0
Только что закрыл покупку и открыл продажу. Записи со вкладок эксперты и журнал в студию.

avatar

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

  • 21 октября 2015, 18:21
+
0
avatar

  2  mim Автор Сообщений: 36

  • 21 октября 2015, 19:15
+
0
NKD, BRN это какие символы? Какой брокер?
avatar

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

  • 21 октября 2015, 22:30
+
0
NKD индекс никкей BRN-нефть бренд брокер форекс клаб
avatar

  2  mim Автор Сообщений: 36

  • 22 октября 2015, 00:46
+
0
Сейчас скачаю этот терминал, посмотрю.
avatar

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

  • 22 октября 2015, 12:25
+
0
Вот эта версия на минутках работает как положено.




//+------------------------------------------------------------------+
//|                                                    PipsToday.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"
#property description "100 Pips Today expert advisor"

//--- Inputs
extern double StopLoss     = 500;
extern double TakeProfit   = 500;
extern double BULevel      = 0;
extern double TrailingStop = 0;
extern int    Slip         = 30;
extern double Lots         = 0.1;
//----
extern int    BPeriod      = 34;
extern int    APeriod      = 3;
//----
extern int    Magic        = 20151022;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
//--- get indicators value
   double PipsTodayYellow=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,0,1);
   double PipsTodayRed=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,1,1);

//--- sell conditions
   if(PipsTodayYellow>PipsTodayRed && (LastDealType()==1 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,fND(Bid),Slip,fND(Bid+StopLoss*Point),fND(Bid-TakeProfit*Point),"",Magic,0,Red);
      return;
     }
//--- buy conditions
   if(PipsTodayRed>PipsTodayYellow && (LastDealType()==2 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,fND(Ask),Slip,fND(Ask-StopLoss*Point),fND(Ask+TakeProfit*Point),"",Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
//--- get indicators value 
   double PipsTodayYellow=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,0,1);
   double PipsTodayRed=iCustom(Symbol(),0,"100pipstodayscalper",BPeriod,APeriod,1,1);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(PipsTodayYellow>PipsTodayRed)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(PipsTodayRed>PipsTodayYellow)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(TrailingStop>0)
                 {
                  if(Bid-OrderOpenPrice()>TrailingStop*Point)
                    {
                     if(OrderStopLoss()<Bid-TrailingStop*Point)
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(TrailingStop>0)
                 {
                  if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                    {
                     if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+2)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+2)*Point) && OrderOpenPrice()<OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=0;
   if(OrdersHistoryTotal()==0)
     {
      type=0;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
   else ClosePos();

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

avatar

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

  • 22 октября 2015, 13:35
+
0
Спасибо буду тестить
avatar

  2  mim Автор Сообщений: 36

  • 22 октября 2015, 18:39

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