0
а зачем мой коммент удалили, где я написал что сделал советник?



www.opentraders.ru/downloads/2232/
avatar

AM2

  • 5 февраля 2019, 21:45
0
результате добавления якобы одного параметра пришлось заново писать всю логику, разработать несколько уникальных функций и др. это только кажется что все так просто и еще неизвестно впишутся далее функции которые были в советнике или нет.
avatar

AM2

  • 5 февраля 2019, 20:17
0
доработка в следующем топике
avatar

AM2

  • 5 февраля 2019, 18:28
0
ищите поручителя
avatar

AM2

  • 5 февраля 2019, 17:52
+1
чтобы сделать такой слепой советник, нужно смоделировать ситуацию в тестере. что я и сделал.
avatar

AM2

  • 4 февраля 2019, 19:15
+1
на основе своего кода еще могу что то посмотреть а тот советник оксаны.
avatar

AM2

  • 4 февраля 2019, 19:10
0
посмотрю завтра
avatar

AM2

  • 4 февраля 2019, 19:09
0
я вам еще в прошлый раз писал что не берусь бесконечно дорабатывать и без того непростой советник.
avatar

AM2

  • 4 февраля 2019, 18:26
+1
вот набросок от которого можно оттолкнуться:



1. 1-й лот — 0.5
2. остальные — 0.1
3. как только профит по остальным будет больше половины убытка по 1-му
кроем 0.2.
4. откусываем если ордеров больше 5



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

//--- Inputs
extern double  Lot1        = 0.5;      // лот 1
extern double  Lot2        = 0.1;      // лот 2
extern double  Lot3        = 0.2;      // лот 3
extern double  Loss        = 4500;     // лось в рублях
extern double  Profit      = 50;       // язь в рублях
extern int     Step        = 333;      // шаг ордеров
extern int     Count       = 5;        // количество ордеров
extern int     Slip        = 3;        // проскальзывание
extern int     Exp         = 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,double lot)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   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 || (OrderType()>=0 && type==-1)) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|           Профит всех ордеров по лоту                            |
//+------------------------------------------------------------------+
double AllProfit(double lot)
  {
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderLots()==lot)pr+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   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)
              {
               RefreshRates();
               if(OrderLots()==Lot2) cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
               if(OrderLots()==Lot1) cl=OrderClose(OrderTicket(),Lot3,NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1)
              {
               RefreshRates();
               if(OrderLots()==Lot2) cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
               if(OrderLots()==Lot1) cl=OrderClose(OrderTicket(),Lot3,NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(OrdersTotal()<1)
     {
      PutOrder(0,Ask,Lot1);
      if(CountOrders(2)<1) for(int i=1;i<=Count;i++) PutOrder(2,Bid-Step*Point*i,Lot2);//buylimit
     }
     
   if(CountTrades()>Count  && AllProfit(Lot1)<0 && AllProfit(Lot2)>0 && AllProfit(Lot1)/2+AllProfit(Lot2)>0) CloseAll();
   
   Comment("\n Lot1 Profit: ",AllProfit(Lot1),
           "\n Lot2 Profit: ",AllProfit(Lot2),
           "\n Trades: ",CountTrades());
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 4 февраля 2019, 18:23
0
вот набросок:

1. ставит лок на профите
2. кроет по лосю
3. меняет магик


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

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 300;      // лось
extern int TakeProfit    = 444;      // язь
extern int Slip          = 30;       // реквот
extern int BuySell       = 1;        // 1-бай 2-селл 
int magic                = 1;        // магик
//+------------------------------------------------------------------+
//| 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,Lot(),NormalizeDouble(price,Digits),Slip,0,0,"",magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
        {
         if(OrderProfit()<0) lot=OrderLots()*KLot;
        }
     }

   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Тип последней сделки                                             |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=8;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
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 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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseLast()
  {
   bool cl;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
        {
         if(OrderType()==0)
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
           }
         if(OrderType()==1)
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Points()
  {
   int pr=0;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
        {
         if(OrderType()==0) pr=(int)((Bid-OrderOpenPrice())/_Point);
         if(OrderType()==1) pr=(int)((OrderOpenPrice()-Bid)/_Point);
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Тип последней сделки                                             |
//+------------------------------------------------------------------+
int LastOrderType()
  {
   int type=8;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Points()>TakeProfit)
     {
      if(LastOrderType()==0) PutOrder(1,Bid);magic++;
      if(LastOrderType()==1) PutOrder(0,Ask);magic++;      
     }
     
   if(CountTrades()<1)
     {
      if(BuySell==1) PutOrder(0,Ask);
      if(BuySell==2) PutOrder(1,Bid);
     }

   if(Points()<-StopLoss)
     {
      CloseLast();
     }

   Comment("\n Points: ",Points(),
           "\n Trades: ",CountTrades(),
           "\n Magic: ",magic,
           "\n Last Order Type: ",LastOrderType());
  }
//+------------------------------------------------------------------+


avatar

AM2

  • 4 февраля 2019, 15:14
0
на 11-е
avatar

AM2

  • 4 февраля 2019, 09:37
0
да потому что если возьмусь дальше будет еще больший вынос мозга, в чем я убеждаюсь каждый раз. а мне это не надо. предпочитаю отказаться.
avatar

AM2

  • 3 февраля 2019, 22:41
0
не берусь.
avatar

AM2

  • 3 февраля 2019, 21:55
0
6-й топик за сегодня. до этого были 5 подряд. вы чего добиваетесь?
я в свое время вам ответил.
avatar

AM2

  • 3 февраля 2019, 21:41
0
покажите на скринах что есть и как должно быть.
avatar

AM2

  • 3 февраля 2019, 20:52