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

Рейтинг 2146



РЕКОМЕНДУЮ



поправить советник

Андрей, добрый вечер! А можешь сделать, чтобы был код доступен для редактирования?Pivot.ex4 (9 Kb)
  • 0
  • Просмотров: 1767
  • 28 марта 2016, 21:44
  • PetrovMaxim
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Я кряканьем не занимаюсь.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 28 марта 2016, 23:20
+
0
Понятно, но все же спасибо!!!
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 29 марта 2016, 07:59
+
0
Напишите алгоритм как он работает, тогда написать с нуля можно будет.
Редактирован: 29 марта 2016, 10:06
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 29 марта 2016, 08:37
+
+3
*wizard*  *pardon*  :D 



extern double Lot=0.0;
extern int MaxRisk=2;
extern bool TakeProfit=FALSE;
extern int NoLoss= 0;
extern int Trall = 0;
extern bool DivLot=TRUE;
extern bool OneOrderDay=FALSE;
extern int ShiftTime=1;
extern int ExtFormula=0;
string Gs_pivot_116="Pivot";
bool Gi_124=TRUE;
int G_day_128=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init() 
  {
   double icustom_0=iCustom(NULL,0,"DailyPivot_Ind2",ShiftTime,ExtFormula,0,0);
   if(ObjectFind("R0.5_Line")<0 || ObjectFind("S0.5_Line")<0 || ObjectFind("R1.0_Line")<0 || ObjectFind("S1.0_Line")<0 || ObjectFind("R2.0_Line")<0 || ObjectFind("S2.0_Line")<0) 
     {
      Alert("Не найден индикатор: DailyPivot_Ind2");
      Gi_124=FALSE;
     }
   return (0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit() 
  {
   return (0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start() 
  {
   double Ld_84;
   double Ld_92;
   double Ld_100;
   if(!Gi_124) 
     {
      Comment("Ошибка в параметрах! Советник остановлен.");
      return (0);
     }
   if(DayOfWeek() == 0 || DayOfWeek() == 6) return (0);
   if(!IsTradeAllowed()) return (0);
   Comment("http://strategy4you.ru");
   double icustom_0=iCustom(NULL,0,"DailyPivot_Ind2",ShiftTime,ExtFormula,0,0);
   double Ld_8=NormalizeDouble(Ask,Digits);
   double Ld_16 = NormalizeDouble(Bid, Digits);
   double Ld_24 = ObjectGet("R0.5_Line", OBJPROP_PRICE1);
   double Ld_32 = ObjectGet("S0.5_Line", OBJPROP_PRICE1);
   double Ld_40 = ObjectGet("R1.0_Line", OBJPROP_PRICE1);
   double Ld_48 = ObjectGet("S1.0_Line", OBJPROP_PRICE1);
   double Ld_56 = ObjectGet("R2.0_Line", OBJPROP_PRICE1);
   double Ld_64 = ObjectGet("S2.0_Line", OBJPROP_PRICE1);
   int count_72 = 0;
   int count_76 = 0;
   for(int pos_80 = 0; pos_80 < OrdersTotal(); pos_80++) 
     {
      if(OrderSelect(pos_80,SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==20100321) 
           {
            if(OrderType()==OP_BUY) 
              {
               if(NoLoss<0) 
                 {
                  if(Ld_16>Ld_40 && OrderStopLoss()<OrderOpenPrice()) 
                    {
                     EditOrder(OrderOpenPrice(),OrderTakeProfit(),OrderOpenPrice()+Point);
                     if(DivLot) CloseOrder(OrderLots()/2.0);
                    }
                 }
               if(NoLoss>0) 
                 {
                  if(Ld_16>OrderOpenPrice()+NoLoss*Point) 
                    {
                     EditOrder(OrderOpenPrice(),OrderTakeProfit(),OrderOpenPrice()+Point);
                     if(DivLot) CloseOrder(OrderLots()/2.0);
                    }
                 }
               if(Trall>0) 
                 {
                  if(Ld_16-OrderOpenPrice()>Trall*Point)
                     if(OrderStopLoss()<Ld_16 -(Trall+2)*Point) EditOrder(OrderOpenPrice(),OrderTakeProfit(),Ld_16-Trall*Point);
                 }
               G_day_128=TimeDay(OrderOpenTime());
               count_72++;
              }
            if(OrderType()==OP_SELL) 
              {
               if(NoLoss<0) 
                 {
                  if(Ld_8<Ld_48 && OrderStopLoss()>OrderOpenPrice()) 
                    {
                     EditOrder(OrderOpenPrice(),OrderTakeProfit(),OrderOpenPrice()-Point);
                     if(DivLot) CloseOrder(OrderLots()/2.0);
                    }
                 }
               if(NoLoss>0) 
                 {
                  if(Ld_8<OrderOpenPrice()-NoLoss*Point) 
                    {
                     EditOrder(OrderOpenPrice(),OrderTakeProfit(),OrderOpenPrice()-Point);
                     if(DivLot) CloseOrder(OrderLots()/2.0);
                    }
                 }
               if(Trall>0) 
                 {
                  if(OrderOpenPrice()-Ld_8>Trall*Point)
                     if(OrderStopLoss()>Ld_8+(Trall+2)*Point || OrderStopLoss()==0.0) EditOrder(OrderOpenPrice(),OrderTakeProfit(),Ld_8+Trall*Point);
                 }
               G_day_128=TimeDay(OrderOpenTime());
               count_76++;
              }
           }
        }
     }
   if(OneOrderDay && G_day_128 == TimeDay(TimeCurrent())) return (0);
   if(count_72+count_76==0 && Open[0]<Ld_24 && Open[0]>Ld_32) 
     {
      Ld_84=GetOptimalLot(MaxRisk,Lot);
      if(Ld_84==0.0) 
        {
         Alert("Недостаточно средств для торговли!");
         return (0);
        }
      Ld_92=Ld_40;
      if(TakeProfit) Ld_92=Ld_56;
      Ld_100=Ld_48;
      if(TakeProfit) Ld_100=Ld_64;
      if(Ld_8>Ld_24  &&  Ld_8<Ld_24+5.0*Point) NewOrder(OP_BUY,Ld_84,Ld_8,Ld_92,Ld_32);
      if(Ld_16<Ld_32 && Ld_16>Ld_32-5.0*Point) NewOrder(OP_SELL,Ld_84,Ld_16,Ld_100,Ld_24);
     }
   return (0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetOptimalLot(int Ai_0,double Ad_4) 
  {
   double Ld_12=Ad_4;
   double free_magrin_20=AccountFreeMargin();
   double marginrequired_28=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double lotstep_36=MarketInfo(Symbol(),MODE_LOTSTEP);
   double Ld_44 = MarketInfo(Symbol(), MODE_MINLOT);
   double Ld_52 = MarketInfo(Symbol(), MODE_MAXLOT);
   if(Ad_4==0.0) Ld_12=free_magrin_20*Ai_0/100.0/marginrequired_28;
   if(Ld_12 < Ld_44) Ld_12 = Ld_44;
   if(Ld_12 > Ld_52) Ld_12 = Ld_52;
   if(Ld_12 * marginrequired_28 > free_magrin_20) return (0.0);
   return (MathFloor(Ld_12 / lotstep_36) * lotstep_36);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int NewOrder(int A_cmd_0,double A_lots_4,double A_price_12,double A_price_20=0.0,double A_price_28=0.0) 
  {
   int ticket_36=0;
   for(int count_40=0; count_40<3; count_40++) 
     {
      while(!IsTradeAllowed()) Sleep(100);
      ticket_36=OrderSend(Symbol(),A_cmd_0,A_lots_4,A_price_12,3,A_price_28,A_price_20,Gs_pivot_116,20100321,0,CLR_NONE);
      if(ticket_36>0) break;
      while(!IsTradeAllowed()) Sleep(100);
      ticket_36=OrderSend(Symbol(),A_cmd_0,A_lots_4,A_price_12,3,0,0,Gs_pivot_116,20100321,0,CLR_NONE);
      if(ticket_36>0) 
        {
         if(OrderSelect(ticket_36,SELECT_BY_TICKET)) 
           {
            EditOrder(A_price_12,A_price_20,A_price_28);
            break;
           }
        }
      Print("#",ticket_36,"  Error: ",GetLastError()," Function: NewOrder(",A_cmd_0,",",A_lots_4,",",A_price_12,",",A_price_20,",",A_price_28,") №",count_40);
      Sleep(1000);
     }
   return (ticket_36);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void EditOrder(double A_price_0,double A_price_8,double A_price_16) 
  {
   for(int count_24=0; count_24<3; count_24++) 
     {
      while(!IsTradeAllowed()) Sleep(100);
      if(OrderModify(OrderTicket(),A_price_0,A_price_16,A_price_8,0,CLR_NONE)) break;
      Print("#",OrderTicket(),"  Error: ",GetLastError()," Function: EditOrder(",A_price_0,",",A_price_8,",",A_price_16,") №",count_24);
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseOrder(double Ad_0=0.0) 
  {
   double price_8= 0;
   double ask_16 = 0;
   double bid_24 = 0;
   double lots_32= 0;
   double lotstep_40=MarketInfo(Symbol(),MODE_LOTSTEP);
   for(int count_48=0; count_48<3; count_48++) 
     {
      while(!IsTradeAllowed()) Sleep(100);
      ask_16 = MarketInfo(Symbol(), MODE_ASK);
      bid_24 = MarketInfo(Symbol(), MODE_BID);
      if(OrderType() == OP_BUY) price_8 = NormalizeDouble(bid_24, Digits);
      if(OrderType() == OP_SELL) price_8 = NormalizeDouble(ask_16, Digits);
      if(Ad_0==0.0) lots_32=OrderLots();
      else lots_32=MathFloor(Ad_0/lotstep_40)*lotstep_40;
      if(OrderClose(OrderTicket(),lots_32,price_8,3,CLR_NONE)) break;
      Print("#",OrderTicket(),"  Error: ",GetLastError()," Function: CloseOrder(",Ad_0,") №",count_48);
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 29 марта 2016, 10:17
+
+1
Телепатией занимаешься? :D 
avatar

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

  • 29 марта 2016, 11:17
+
+1
Чуфыр чуфыр :D 
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 29 марта 2016, 12:08
+
0
Вот держи

https://yadi.sk/d/z4d6Dz7tqbkeA
avatar

  15  cashyra Сообщений: 392 - Юра

  • 30 марта 2016, 19:02

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