0
одна серия допускается или обе одновременно бай и селл
avatar

AM2

  • 20 марта 2022, 21:33
0
мне си не надо а надо через число баров и т.д.
avatar

AM2

  • 20 марта 2022, 13:33
+1

//+------------------------------------------------------------------+
//|                                                       BBStop.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, 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 MaxLot     = 5;        // максимальный лот

extern int StopLoss      = 5000;     // лось
extern int TakeProfit    = 300;      // язь

extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли

extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // бар индикатора
extern int Magic         = 123;      // магик

extern bool Algo         = 1;        // true-одна серия false-обе

extern string Comm       = "BBS";    // коментарий

extern string IndName    = "BBand-Stop-Alert";

extern int    Length     = 8;        // Bollinger Bands Period
extern int    Deviation  = 1;        // Deviation was 2
extern double MoneyRisk  = 1.00;     // Offset Factor

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;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,0,Comm,Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   
   if(CountTrades()>0)
      lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int PointProfit()
  {
   int pr=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)
               pr=int((Bid-OrderOpenPrice())/_Point);

            if(OrderType()==1)
               pr=int((OrderOpenPrice()-Bid)/_Point);
               
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double lime = iCustom(NULL,0,IndName,Length,Deviation,MoneyRisk,2,Shift);
   double gold = iCustom(NULL,0,IndName,Length,Deviation,MoneyRisk,3,Shift);

   bool buy = lime>0;
   bool sell = gold>0;

   if(PointProfit()>TakeProfit)
      CloseAll();

   if(t!=Time[0] && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
     {
      if(buy)
         PutOrder(0,Ask);
      if(sell)
         PutOrder(1,Bid);

      t=Time[0];
     }

   Comment("\n gold: ",gold,
           "\n lime: ",lime,
           "\n Point: ",PointProfit());
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 марта 2022, 23:07
0
запил такой вот получается:



то что сделал еще нормально идет
avatar

AM2

  • 19 марта 2022, 21:58
0
делаем открытие по стрелке и закрытие по тейку как на скрине или как?
avatar

AM2

  • 19 марта 2022, 21:17
+1
набросал свой вариант:



этот вариант мне намного проще править чем чужой код


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

#property indicator_buffers 3

input int MA1=12;
input int MA2=35;
input int Count=222;

double up[];
double dn[];
double sig[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,up);
   SetIndexStyle(0,DRAW_HISTOGRAM,0,2,Lime);

   SetIndexBuffer(1,dn);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,2,Red);

   SetIndexBuffer(2,sig);
   SetIndexStyle(2,DRAW_LINE,0,1,Gold);

//---
   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=0; i<Count; i++)
     {
      double ao=iAO(NULL,0,i);
      double ma1=iMA(NULL,0,MA1,0,3,0,i);
      double ma2=iMA(NULL,0,MA2,0,3,0,i);

      if(ao<0)
         up[i]=ao;
      if(ao>0)
         dn[i]=ao;

      sig[i]=ma1-ma2;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 марта 2022, 19:39
+1
Привет. А если при подобных суммах, скажем, в 2-10 тысяч баксов покупать доли в битках? В плане комиссий если сравнить с «дорогим вариантом»?
на вебмани доллар биток туда сюда гонять можно. но там сейчас с выводом переводами лицензией не все гладко
avatar

AM2

  • 16 марта 2022, 17:37
0
с чужим кодом не работаю
avatar

AM2

  • 14 марта 2022, 18:04
+1
посмотрю завтра
avatar

AM2

  • 13 марта 2022, 17:12
+1
Можно ли это дописать в уже готовый код, а не отдельным советником?
по тз можно дописать. с чужим кодом не работаю
avatar

AM2

  • 13 марта 2022, 10:02