Советники: Endless Possibilities - страница 7

 
Как сделать в моем советнике так что бы лоты уыкличивались как у вас в этом https://www.mql5.com/ru/code/26798 ?
 
Сергей Дыбленко:
 что бы лоты уыкличивались как у вас 

непонятное слово

 
Сергей Дыбленко:
Как сделать в моем советнике так что бы лоты уыкличивались как у вас в этом https://www.mql5.com/ru/code/26798 ?

Лот не только увеличивается - он так же и понижается , зависит какой баланс.  

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вот этот же эксперт - лот задаётся отмеченным жёлтым цветом

//+------------------------------------------------------------------+
//|                                        Endless Possibilities.mq4 |
//|                                               Yuriy Tokman (YTG) |
//|                       https://www.mql5.com/ru/users/satop/seller |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman (YTG)"
#property link      "https://www.mql5.com/ru/users/satop/seller"
#property version   "3.00"
#property strict

//---
enum vol
  {
   lot,//Lot
   risk//Risk
  };
//---
input vol    Volum         = 1;    //
input double Value         = 0.1;  //
//--- indicator parameters
input int    InpFastEMA    = 12;   // Fast EMA Period
input int    InpSlowEMA    = 26;   // Slow EMA Period
input int    InpSignalSMA  = 9;    // Signal SMA Period
//--- indicator parameters
input int    MovingPeriod  = 12;   //
input int    MovingShift   = 6;    //
//---
double price = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,0);
   double ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---
   if(NewBar())
     {
      if(!ExistPositions(Symbol(), OP_SELL))
        {
         if(MacdCurrent<0 && Close[1]<ma)
           {
            ClosePositions(Symbol(),OP_BUY);
            OpenPosition(Symbol(),OP_SELL,GetLot());
            price=0;
           }
        }
      if(!ExistPositions(Symbol(), OP_BUY))
        {
         if(MacdCurrent>0 && Close[1]>ma)
           {
            ClosePositions(Symbol(),OP_SELL);
            OpenPosition(Symbol(),OP_BUY,GetLot());
            price=0;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar(int TF = 0)
  {
   static datetime NewTime=0;
   if(NewTime!=iTime(Symbol(),TF,0))
     {
      if(NewTime==0)
        {
         NewTime=iTime(Symbol(),TF,0);
         return(false);
        }
      NewTime=iTime(Symbol(),TF,0);
      return(true);
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0)
  {
   int i, k=OrdersTotal();
   if(sy=="0")
      sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==sy || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(ot<=OrderOpenTime())
                        return true;
                    }
                 }
              }
           }
        }
     }
   return false;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0)
  {
   double MaxLot = MarketInfo(sy,MODE_MAXLOT);
   double MinLot = MarketInfo(sy,MODE_MINLOT);
   int k = 0;
   double lot, k_lot =0;
   double pp;
   int    err, ticket;
   if(sy=="")
      sy=Symbol();
   if(op==OP_BUY)
      pp=MarketInfo(sy, MODE_ASK);
   else
      pp=MarketInfo(sy, MODE_BID);
   if(ll>MaxLot)
     {
      k = (int)(ll/MaxLot);
      k_lot = ll - MaxLot*k;
      Print("k= ",k+1," k_lot= ",k_lot," MaxLot= ",MaxLot," ll= ",ll);
     }
   for(int i=0; i<=k; i++)
     {
      lot=ll;
      if(k>0)
        {
         if(i==k)
            lot=k_lot;
         else
            lot=MaxLot;
        }
      while(AccountFreeMarginCheck(sy,op, lot)<=0 || GetLastError()==134)
        {
         lot -=MinLot;
         if(lot<=0)
            return(-1);
        }
      Print(i+1," lot= ",lot);
      ticket=OrderSend(sy, op, lot, pp, 30, sl, tp, "", mn, 0, Lime);
      if(ticket<0)
        {
         err=GetLastError();
         Print("Error(",err,") open ",op,": ",err);
         Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",lot," pp=",pp," sl=",sl," tp=",tp," mn=",mn);
        }
     }
   return(-1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1)
  {
   int i, k=OrdersTotal();
   if(sy=="0")
      sy=Symbol();
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(mn<0 || OrderMagicNumber()==mn)
                  ClosePosBySelect();
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePosBySelect()
  {
   bool   fc;
   color  clClose = clrAliceBlue;
   double ll, pa, pb, pp;
   int    err, it;
   if(OrderType()==OP_BUY || OrderType()==OP_SELL)
     {
      for(it=1; it<=1; it++)
        {
         if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
            break;
         while(!IsTradeAllowed())
            Sleep(5000);
         RefreshRates();
         pa=MarketInfo(OrderSymbol(), MODE_ASK);
         pb=MarketInfo(OrderSymbol(), MODE_BID);
         if(OrderType()==OP_BUY)
           {
            pp=pb;
           }
         else
           {
            pp=pa;
           }
         ll=OrderLots();
         fc=OrderClose(OrderTicket(), ll, pp, 30, Red);
         if(fc)
           {
            break;
           }
         else
           {
            err=GetLastError();
            if(err==146)
               while(IsTradeContextBusy())
                  Sleep(1000*11);
            Print("Error(",err,") Close ",OrderType()," ",
                  err,", try ",it);
            Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
            Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
                  "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
            Sleep(1000*5);
           }
        }
     }
   else
      Print("Некорректная торговая операция. Close ",OrderType());
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetLot()
  {
   double MinLot = MarketInfo(Symbol(),MODE_MINLOT);
   double Prots = Value/100;
   double Lotsi=MathFloor(AccountFreeMargin()*Prots/MarketInfo(Symbol(),MODE_MARGINREQUIRED)
                          /MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP);// Лоты
   if(!Volum)
      Lotsi=Value;
   if(Lotsi<MinLot)
      Lotsi=MinLot;
   return(Lotsi);
  }
//+------------------------------------------------------------------+
 
Сергей Дыбленко:
Как сделать в моем советнике так что бы лоты уыкличивались как у вас в этом https://www.mql5.com/ru/code/26798 ?

Это не значит - что твой эксперт заработает. Это значит что рискуешь потерять больше.

= в настройках так и пишется (

   risk//Risk
 
SanAlex:

Это не значит - что твой эксперт заработает. Это значит что рискуешь потерять больше.

= в настройках так и пишется (

почему не заработает?

тест же нормальный

 
Renat Akhtyamov:

почему не заработает?

тест же нормальный

тест с накидыванием скрипта - собрав от зигзага самый смак и отрисовал Грааль 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

в этот файл скрипт записывает High и Low - а эксперт потом читает и красиво открывает позиции

Снимок 

 
SanAlex:

тест с накидыванием скрипта - собрав от зигзага самый смак и отрисовал Грааль 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

в этот файл скрипт записывает High и Low - а эксперт потом читает и красиво открывает позиции

 

в глобальные переменные пишет
там тоже можно посмотреть

цель была посмотреть за сколько времени можно
достичь какой то суммы из 3$
происходило все быстро
когда достигался макс лот, открывал несколько поз, дробил
и все, происходило почти зависание
суммы были астрономические

 
SanAlex:

Лот не только увеличивается - он так же и понижается , зависит какой баланс.  

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вот этот же эксперт - лот задаётся отмеченным жёлтым цветом

Сашка, да это же то, что я ищу уже хз-нает сколько лет! Таки то что мне было нужно!

Выражаю свою безмерную благодарность тебе за этот советник!

 
Сергей Дыбленко:

Сашка, да это же то, что я ищу уже хз-нает сколько лет! Таки то что мне было нужно!

Выражаю свою безмерную благодарность тебе за этот советник

Привет! - это не мне благодарность. Это благодарность Автору советника. я только показал где автор прописал функцию ( риск лотом )

 

Сколько не пытался переделывать переменные ничего не вышло!

В релале этот советник работать не хотит!!!

Причина обращения: