0
Я сделал. Можно ссылку на исходный в базе? Я его просто обновлю.
avatar

AM2

  • 20 мая 2016, 08:38
0
Язь это ТР ))))

С этого момента можно поподробнее и желательно со скринами.
avatar

AM2

  • 20 мая 2016, 07:10
0
Язь по свечам
Что это? Трал наверное?
avatar

AM2

  • 19 мая 2016, 21:52
0
Сейчас закрыл убыток бай и поставил тейк на селл: www.opentraders.ru/downloads/1185/




//+------------------------------------------------------------------+
//|                                                       Shadow.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      = 300;      // лось
extern int TakeProfit    = 400;      // язь
extern int TimeClose     = 1440;     // время закрытия
extern int CloseTake     = 1;        // 1-кроем сначала плюс 0-минус
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,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);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Время открытия позиции                                           |
//+------------------------------------------------------------------+
datetime TimeOrderOpen()
  {
   datetime dt=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()<2) dt=OrderOpenTime();
        }
     }
   return(dt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode()
  {
   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(OrderStopLoss()==0 && Bid>OrderOpenPrice()-StopLoss*Point && CloseTake==1)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }

               if(OrderTakeProfit()==0 && Bid<OrderOpenPrice()+TakeProfit*Point && CloseTake==0)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+TakeProfit*Point,0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderStopLoss()==0 && Ask<OrderOpenPrice()+StopLoss*Point && CloseTake==1)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }

               if(OrderTakeProfit()==0 && Ask>OrderOpenPrice()-TakeProfit*Point && CloseTake==0)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()-TakeProfit*Point,0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseProfit()
  {
   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(Bid-OrderOpenPrice()>=TakeProfit*Point && CloseTake==1)
                 {
                  CloseAll(0);
                 }

               if(OrderOpenPrice()-Bid>=StopLoss*Point && CloseTake==0)
                 {
                  CloseAll(0);
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>=TakeProfit*Point && CloseTake==1)
                 {
                  CloseAll(1);
                 }

               if(Ask-OrderOpenPrice()>=StopLoss*Point && CloseTake==0)
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && t!=Time[0])
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      t=Time[0];
     }

   if(CountTrades()>0) CloseProfit();
   if(TimeCurrent()-TimeOrderOpen()>TimeClose*60) CloseAll(-1);
   if(CountTrades()==1) Mode();

   Comment("\n TimeOrderOpen:  ",TimeOrderOpen(),
           "\n TimeCurrent: ",TimeCurrent(),
           "\n Minus:  ",(int)(TimeCurrent()-TimeOrderOpen()));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 мая 2016, 21:42
0
Cделано:


//+------------------------------------------------------------------+
//|                                                       Shadow.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      = 300;      // лось
extern int TakeProfit    = 400;      // язь
extern int TimeClose     = 1440;     // время закрытия
extern int CloseTake     = 1;        // 1-кроем сначала плюс 0-минус
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,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);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Время открытия позиции                                           |
//+------------------------------------------------------------------+
datetime TimeOrderOpen()
  {
   datetime dt=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()<2) dt=OrderOpenTime();
        }
     }
   return(dt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode()
  {
   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(OrderStopLoss()==0 && Bid>OrderOpenPrice()-StopLoss*Point && CloseTake==1)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }

               if(OrderTakeProfit()==0 && Bid<OrderOpenPrice()+TakeProfit*Point && CloseTake==0)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+TakeProfit*Point,0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderStopLoss()==0 && Ask<OrderOpenPrice()+StopLoss*Point && CloseTake==1)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }

               if(OrderTakeProfit()==0 && Ask>OrderOpenPrice()-TakeProfit*Point && CloseTake==1)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()-TakeProfit*Point,0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseProfit()
  {
   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(Bid-OrderOpenPrice()>=TakeProfit*Point && CloseTake==1)
                 {
                  CloseAll(0);
                 }

               if(OrderOpenPrice()-Bid>=StopLoss*Point && CloseTake==0)
                 {
                  CloseAll(0);
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>=TakeProfit*Point && CloseTake==1)
                 {
                  CloseAll(1);
                 }

               if(Ask-OrderOpenPrice()>=StopLoss*Point && CloseTake==0)
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && t!=Time[0])
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      t=Time[0];
     }

   if(CountTrades()>0) CloseProfit();
   if(TimeCurrent()-TimeOrderOpen()>TimeClose*60) CloseAll(-1);
   if(CountTrades()==1) Mode();

   Comment("\n TimeOrderOpen:  ",TimeOrderOpen(),
           "\n TimeCurrent: ",TimeCurrent(),
           "\n Minus:  ",(int)(TimeCurrent()-TimeOrderOpen()));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 мая 2016, 18:13
0
Так примерно? :) 




//+------------------------------------------------------------------+
//|                                                       Shadow.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      = 300;      // лось
extern int TakeProfit    = 400;      // язь
extern int TimeClose     = 1440;     // время закрытия
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,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);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Время открытия позиции                                           |
//+------------------------------------------------------------------+
datetime TimeOrderOpen()
  {
   datetime dt=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()<2) dt=OrderOpenTime();
        }
     }
   return(dt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode()
  {
   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(OrderStopLoss()==0 && Bid>OrderOpenPrice()-StopLoss*Point)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderStopLoss()==0 && Ask<OrderOpenPrice()+StopLoss*Point)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseProfit()
  {
   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(Bid-OrderOpenPrice()>=TakeProfit*Point)
                 {
                  CloseAll(0);
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>=TakeProfit*Point)
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && t!=Time[0])
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      t=Time[0];
     }

   if(CountTrades()>0) CloseProfit();
   if(TimeCurrent()-TimeOrderOpen()>TimeClose*60) CloseAll(-1);
   if(CountTrades()==1) Mode();

   Comment("\n TimeOrderOpen:  ",TimeOrderOpen(),
           "\n TimeCurrent: ",TimeCurrent(),
           "\n Minus:  ",(int)(TimeCurrent()-TimeOrderOpen()));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 мая 2016, 11:38
0
Набросок есть но мне нужно понимать что я делаю и для чего все это:


//+------------------------------------------------------------------+
//|                                                       Shadow.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      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TimeClose     = 30;       // время закрытия
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,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);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Время открытия позиции                                           |
//+------------------------------------------------------------------+
datetime TimeOrderOpen()
  {
   datetime t=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) t=OrderOpenTime();
           }
        }
     }
   return(t);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode()
  {
   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(OrderStopLoss()==0 && OrderProfit()<0)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderStopLoss()==0 && OrderProfit()<0)
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseProfit()
  {
   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(Bid-OrderOpenPrice()>=TakeProfit*Point)
                 {
                  CloseAll(0);
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>=TakeProfit*Point)
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
     }
   else CloseProfit();

   if(TimeCurrent()-TimeOrderOpen()>TimeClose*60) CloseAll();
   if(CountTrades()==1) Mode();
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 18 мая 2016, 21:11
+1
Можно. Вот ссылка: www.opentraders.ru/downloads/1179/
avatar

AM2

  • 18 мая 2016, 18:18
0
Посмотрю сегодня.
avatar

AM2

  • 18 мая 2016, 18:07
0
Можно смотреть пункты прибыли или профит в валюте ордера, закрывать прибыльный а с убытком дальше что то делать. Надо набросок сделать посмотреть вместе и затем дальше согласовывать.
avatar

AM2

  • 18 мая 2016, 18:06
+1
Хороший результат *good*  *bravo* 
Ждем продолжения банкета *girlcry*  :) 
avatar

AM2

  • 18 мая 2016, 08:45
0
До следующего месяца вам можно не торопиться :) 
avatar

AM2

  • 18 мая 2016, 08:26
0
Нет не берусь слишком работы много для бесплатного. Я несколько раз пробовал делать все с очень большим скрипом продвигается, обратитесь лучше к платному.
avatar

AM2

  • 18 мая 2016, 07:27
+1
Т.к. сколько нибудь внятное ТЗ практически отсутствует пришлось придумать и написать самому :D 

Режим флет: Trend=0

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

Стохастик и рси находятся выше уровней перекупленности и макди выше нуля рисуем красный столбик, т.е. сигнал на продажу.



Режим тренд: Trend=1

Цена закрытия ниже МА и макди меньше нуля, зона продаж, рисуем красные столбики.

Цена закрытия выше МА и макди больше нуля, зона покупок, рисуем зеленые столбики.




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

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 100.0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime

input int BarsCount=500;
input int Trend=0; //0-Flat. 1-Trend

input string MA_Inputs="---------------";
input int MAPeriod=30;
input int MAShift=0;
input int MAMethod=0;
input int MAPrice=0;

input string MACD_Inputs="---------------";
input int FastPeriod=12;
input int SlowPeriod=26;
input int SignalPeriod=9;
input int MACDPrice=0;

input string Stochastic_Inputs="---------------";
input int Kperiod = 5;
input int Dperiod = 3;
input int Slowing = 3;
input int StLevel = 30;

input string RSI_Inputs="---------------";
input int RSIPeriod=14;
input int RSIPrice=0;
input int RSILevel=30;

double up[];
double dn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,5);
   SetIndexBuffer(0,up);
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,5);
   SetIndexBuffer(1,dn);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=1;i<BarsCount;i++)
     {
      double st1 = iStochastic(NULL,0,Kperiod,Dperiod,Slowing,0,0,0,i);
      double st2 = iStochastic(NULL,0,Kperiod,Dperiod,Slowing,0,0,0,i+1);
      double ma = iMA(NULL,0,MAPeriod,MAShift,MAMethod,MAPrice,i);
      double macd = iMACD(NULL,0,FastPeriod,SlowPeriod,SignalPeriod,MACDPrice,0,i);
      double rsi = iRSI(NULL,0,RSIPeriod,RSIPrice,i);
                 
      if(Trend==0)
        {
         if(st1<StLevel && macd<0 && rsi<RSILevel)         dn[i] = 100;
         if(st1>100-StLevel && macd>0 && rsi>100-RSILevel) up[i] = 100;
        }
        
      if(Trend==1)
        {
         if(macd<0 && close[i]<ma) up[i] = 100;
         if(macd>0 && close[i]>ma) dn[i] = 100;
        }        
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 18 мая 2016, 06:50
0
Нашли, нет четкого ТЗ.
avatar

AM2

  • 17 мая 2016, 18:45
0
Здесь когда гоняешь по контролькам и тикам результаты одинаковые примерно:

avatar

AM2

  • 17 мая 2016, 17:59
0
Оформите надлежащим образом ТЗ. Вот нашел подобный пример:

Индикатор должен показывать стрелками то направление куда показывают два из трёх индикаторов (Heiken_Ashi_Smoothed, 3colormacd, Accelerator).

Стрелка индикатора должна находиться над или под нулевым баром (она может то появляться, то исчезать, т.к. индикатор 3colormacd может менять
цвета на нулевом баре несколько раз).

Если стрелка на покупку, то она должна находиться под свечей и сдвигаться в низ если цена идёт в низ т.е. не заползать на свечу, если сигнал на продажу, то стрелка должна находиться выше свечи и сдвигаться в верх если цена идёт в верх т.е. не заползать на свечу.

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

Например мы установили параметры для 3colormacd 0.01 и -0.02 т.е. если поступит сигнал БАЙ и значение индикатора на предыдущем баре находилось
ниже -0.02, то индикатор должен выставить большую стрелку, и если поступил сигнал СЕЛЛ и значение индикатора на предыдущем баре находилось выше 0.01,
то индикатор тоже должен выставить большую стрелку.

Сигналом смены тренда для индикатора (Heiken_Ashi_Smoothed) считать только когда индикатор полностью поменяет цвет (а то бывает так что он
одновременно бывает красно-зелёным, пример на скрине).

Нужно сделать чтоб на основе индикатора можно было бы написать советник. Индикатор должен быть на протяжении всей доступной истории, а то на
некоторых индикаторах есть ограничения по истории.

Во входных параметрах должны быть настройки индикатора (Heiken_Ashi_Smoothed), уровни индикатора 3colormacd (для увеличения стрелки), размеры и цвета
стрелок.
avatar

AM2

  • 17 мая 2016, 10:54
+2
Только что оптимизировал минимум параметров, исправил ошибки. Видно по тесту что есть определенная закономерность: www.opentraders.ru/downloads/1176/


avatar

AM2

  • 17 мая 2016, 07:49