0
скрины
avatar

AM2

  • 15 апреля 2024, 15:08
0
функция шага не работает

ее здесь нет. в настройках только осталась, убрать нужно
avatar

AM2

  • 14 апреля 2024, 10:16
0
сделал большую часть. советник просто набирает кучу ордеров и все. дальше не имеет смысла делать




//+------------------------------------------------------------------+
//|                                                       ProBoy.mq4 |
//|                                              Copyright 2024, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double Profit     = 11;       // профит

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 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,double lot)
  {
   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 CloseAll(int ot=-1)
  {
   bool cl=0;

   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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=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)
               profit+=OrderProfit()+OrderSwap()+OrderCommission();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del=1;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1)
               del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(AllProfit()>Profit && Profit>0)
     {
      CloseAll();
      DelOrder();
     }

   if(t!=Time[0])
     {
      if(Close[1]>Open[1] && Close[2]<Open[2] && Close[3]<Open[3])
        {
         PutOrder(0,Ask,Lots);
         PutOrder(5,Low[1],Lots*2);
        }

      if(Close[1]<Open[1] && Close[2]>Open[2] && Close[3]>Open[3])
        {
         PutOrder(1,Bid,Lots);
         PutOrder(4,High[1],Lots*2);
        }

      t=Time[0];
     }

   Comment("\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+

avatar

AM2

  • 11 апреля 2024, 11:20
0
Андрей я выставляю sl 0 tp 500 а получается на выходе sl 222, tp 333 Я менял и магик и другие значения ставил все равно 222/333 Причем при срабатывание профита eur/usd прибыль — 0,2$ Вот как то так. Помогите, что с ним не так


проверил. все норм:

avatar

AM2

  • 11 апреля 2024, 10:23
0
сейчас если стопы 0, то ставит по разнице, если нет — как в настройках.

вам как нужно?
avatar

AM2

  • 10 апреля 2024, 10:12
0
на 11-е
avatar

AM2

  • 10 апреля 2024, 10:08
0
покажите как даты выставили
avatar

AM2

  • 9 апреля 2024, 10:09
0
в базе смотрели? помню делал подобный
avatar

AM2

  • 8 апреля 2024, 17:11
0
вот набросок:




//+------------------------------------------------------------------+
//|                                                     Prosadka.mq4 |
//|                                              Copyright 2024, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот

extern int StopLoss      = 111;      // лось
extern int TakeProfit    = 222;      // язь

extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

extern datetime T1       = 0;        //
extern datetime T2       = 0;        //

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
   PutButton("B",77,66,"BUY");
   PutButton("S",77,44,"SELL");
   PutButton("C",77,22,"CLOSE");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectDelete(0,"B");
   ObjectDelete(0,"S");
   ObjectDelete(0,"C");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,60);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,10);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl=1;

   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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(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 || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,string(Magic) +" "+ WindowExpertName(),Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Prosadka(datetime t1, datetime t2)
  {
   double p=0;

   for(int i=0; i<OrdersHistoryTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderCloseTime()>t1 && OrderCloseTime()<t2)
            p+=OrderProfit();
        }
     }

   return(NormalizeDouble(p/AccountBalance()*100,2));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string nm,string text,int x,int y)
  {
//--- создадим текстовую метку
   ObjectCreate(0,nm,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,nm,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,nm,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,nm,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,nm,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,nm,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,nm,OBJPROP_COLOR,Aqua);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
     {
      PutOrder(0,Ask);
      ObjectSetInteger(0,"B",OBJPROP_STATE,false);
     }

   if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
     {
      PutOrder(1,Bid);
      ObjectSetInteger(0,"S",OBJPROP_STATE,false);
     }

   if(ObjectGetInteger(0,"C",OBJPROP_STATE)==1)
     {
      CloseAll();
      ObjectSetInteger(0,"C",OBJPROP_STATE,false);
     }

   PutLabel("day","Просадка за сутки: "+string(Prosadka(iTime(NULL,PERIOD_D1,0),TimeCurrent())),333,22);
   PutLabel("per","Просадка за период: "+string(Prosadka(T1,T2)),333,44);

   Comment("\n Prosadka: ",Prosadka(iTime(NULL,PERIOD_D1,0),TimeCurrent()));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 8 апреля 2024, 11:11
0
есть подобные в базе: www.opentraders.ru/downloads/
avatar

AM2

  • 8 апреля 2024, 10:07
0
я могу сделать по сделкам в истории просадку, а как открытые позы мотнуло за период я не определю
avatar

AM2

  • 7 апреля 2024, 15:54
0
Очень нужен индикатор просадки в % от депозита


каким образом определять будем?
avatar

AM2

  • 7 апреля 2024, 13:11
0
скрины
avatar

AM2

  • 6 апреля 2024, 12:37
+2
Собрались люди под постом,
Андрей дар речь потерял


Андрей дар речи потерял
И навсегда из топика пропал :D 

Игрун, пожалуйста пиши ТЗ
А не как всегда ХЗ
avatar

AM2

  • 5 апреля 2024, 09:50
0
для проверки ваших слов написал советник. все подхватывает: www.opentraders.ru/downloads/3815/

avatar

AM2

  • 4 апреля 2024, 09:31
Начать торговлю с Альпари