← К каталогу
Исходный код · ID 72

ea scalperautopilot.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный продукт представляет собой торговый советник для MetaTrader 4, предназначенный для помощи трейдеру в размещении и управлении ордерами через графическую панель на графике. Согласно описанию в исходном коде, это не автоматический торговый бот, а инструмент для ручного открытия и управления позициями.

Советник предоставляет кнопки для открытия рыночных ордеров Buy/Sell, размещения отложенных ордеров Buy Stop/Sell Stop, закрытия позиций и удаления отложенных ордеров. Поддерживаются четыре режима управления ордерами: по ID (Magic Number), все ордера, ручные ордера (Magic Number = 0) и собственные ордера.

Встроена поддержка стоп-лосса, тейк-профита, трейлинг-стопа и безубыточного уровня, а также функция удаления сиротских ордеров и звуковые уведомления. Внешний вид панели и кнопок настраивается через параметры цветов. Все уровни задаются в пунктах (pips), а не в точках.

Настройки программы

НастройкаОписание
WarningMessage WarningMessage — Текстовый параметр с информационным сообщением о единицах измерения (пункты).
PendingOrdersSet PendingOrdersSet — Текстовый разделитель для группы настроек отложенных ордеров.
UseAutoLotSize UseAutoLotSize — Переключатель, определяющий использование автоматического расчёта размера лота.
RiskFactor RiskFactor — Числовой параметр, используемый при автоматическом расчёте размера лота на основе баланса счёта.
LotSizeOrders LotSizeOrders — Числовой параметр, задающий фиксированный размер лота для ордеров.
DistanceOrders DistanceOrders — Числовой параметр, задающий расстояние для размещения отложенных ордеров в пунктах.
DeleteOrphans DeleteOrphans — Переключатель, включающий или отключающий автоматическое удаление сиротских отложенных ордеров.
AddSLTP AddSLTP — Текстовый разделитель для группы настроек установки стоп-лосса и тейк-профита.
PutStopLoss PutStopLoss — Переключатель, определяющий необходимость установки стоп-лосса при открытии ордеров.
StopLossPips StopLossPips — Числовой параметр, задающий расстояние стоп-лосса в пунктах.
PutTakeProfit PutTakeProfit — Переключатель, определяющий необходимость установки тейк-профита при открытии ордеров.
TakeProfitPips TakeProfitPips — Числовой параметр, задающий расстояние тейк-профита в пунктах.
TrailingSL TrailingSL — Текстовый разделитель для группы настроек трейлинг-стопа и безубыточного уровня.
UseTrailingStop UseTrailingStop — Переключатель, включающий или отключающий функцию трейлинг-стопа.
TrailingStop TrailingStop — Числовой параметр, задающий расстояние трейлинг-стопа в пунктах.
UseBreakEven UseBreakEven — Переключатель, включающий или отключающий функцию безубыточного уровня.
BreakEvenAfter BreakEvenAfter — Числовой параметр, определяющий уровень цены после которого активируется безубыточный уровень.
BreakEvenPips BreakEvenPips — Числовой параметр, задающий расстояние безубыточного уровня в пунктах.
DeleteSLTP DeleteSLTP — Текстовый разделитель для группы настроек удаления стоп-лосса и тейк-профита.
DeleteTakeProfit DeleteTakeProfit — Переключатель, определяющий необходимость удаления тейк-профита у управляемых ордеров.
DeleteStopLoss DeleteStopLoss — Переключатель, определяющий необходимость удаления стоп-лосса у управляемых ордеров.
GeneralSettings GeneralSettings — Текстовый разделитель для группы общих настроек.
MagicNumber MagicNumber — Целочисленный идентификатор (Magic Number), используемый для идентификации ордеров, созданных советником.
SoundAlert SoundAlert — Переключатель, включающий или отключающий звуковые уведомления при торговых операциях.
ColorsSettings ColorsSettings — Текстовый разделитель для группы настроек цветов панели.
ColorBackground ColorBackground — Цвет фона панели.
ColorFontScreen ColorFontScreen — Цвет шрифта текстовых элементов панели.
ColorOpenButton ColorOpenButton — Цвет кнопок открытия ордеров.
ColorCloseButton ColorCloseButton — Цвет кнопок закрытия ордеров.
ColorPlaceButton ColorPlaceButton — Цвет кнопок размещения отложенных ордеров.
ColorDeleteButton ColorDeleteButton — Цвет кнопок удаления отложенных ордеров.
ColorCallButton ColorCallButton — Цвет кнопки вызова панели ордеров.
ColorFontButton ColorFontButton — Цвет шрифта на кнопках.
Получить полный код

Поиск по коду файла

#property version     "1.42"
#property description "This Expert Advisor is a tool to help any trader to trade easily and quickly."
#property description "\nThis is not auto trade bot. Is a tool to help place and manage manualy orders."

#property strict

extern string WarningMessage    = "ALL THE SETS ARE IN PIPS, NOT IN POINTS";
extern string PendingOrdersSet  = "||========= Pending/Market Orders Sets =========||";
extern bool   UseAutoLotSize    = false;
extern double RiskFactor        = 1.0;
extern double LotSizeOrders     = 0.01;
extern double DistanceOrders    = 50;
extern bool   DeleteOrphans     = true;
extern string AddSLTP           = "||========= Set stop loss and take profit =========||";
extern bool   PutStopLoss       = true;
extern double StopLossPips      = 20;
extern bool   PutTakeProfit     = true;
extern double TakeProfitPips    = 20;
extern string TrailingSL        = "||========= Set trailing stop loss and break even =========||";
extern bool   UseTrailingStop   = false;
extern double TrailingStop      = 20;
extern bool   UseBreakEven      = false;
extern double BreakEvenAfter    = 20;
extern double BreakEvenPips     = 10;
extern string DeleteSLTP        = "||========= Delete stop loss and take profit =========||";
extern bool   DeleteTakeProfit  = false;
extern bool   DeleteStopLoss    = false;
extern string GeneralSettings   = "||========= General Settings =========||";
extern int    MagicNumber       = 12345;
extern bool   SoundAlert        = true;
extern string ColorsSettings    = "||========= Panel Colors Sets =========||";
extern color  ColorBackground   = clrHoneydew;
extern color  ColorFontScreen   = clrBlack;
extern color  ColorOpenButton   = clrDodgerBlue;
extern color  ColorCloseButton  = clrFireBrick;
extern color  ColorPlaceButton  = clrMediumSeaGreen;
extern color  ColorDeleteButton = clrOrange;
extern color  ColorCallButton   = clrPowderBlue;
extern color  ColorFontButton   = clrBlack;

string SoundModify="tick.wav";
string SoundOpen="alert.wav";
string SoundClose="alert2.wav";
string SoundDelete="stops.wav";
string ExpertName;
double DigitPoint;
double StopLevel;
int MultiplierPoint;
int IDorder;
int TotalOrders;
int CntBuy;
int CntSell;
int CntBuyStop;
int CntSellStop;
int ManageOrders=3;
int SymbolDigits;
color ColorFontDO;
color ColorFontSA;
color ColorFontSL;
color ColorFontTP;
color ColorFontTSL;
color ColorFontBE;
string TP;
string SL;
string TSL;
string MN;
string SA;
string BE;
string DO;
string Button1="ButtonOrdersPanel";
string Button2="ButtonOpenBuy";
string Button3="ButtonOpenSell";
string Button4="PlaceBuyStop";
string Button5="PlaceSellStop";
string Button6="ButtonPlace";
string Button7="ButtonCloseBuy";
string Button8="ButtonCloseSell";
string Button9="ButtonCloseAll";
string Button10="ButtonDeleteBS";
string Button11="ButtonDeleteSS";
string Button12="ButtonDeleteAll";
string Button13="CloseBuyOnPair";
string Button14="CloseBuyOnAcc";
string Button15="CloseSellOnPair";
string Button16="CloseSellOnAcc";
string Button17="DeleteBSonPair";
string Button18="DeleteBSonAcc";
string Button19="DeleteSSonPair";
string Button20="DeleteSSonAcc";
string Button21="ManageID";
string Button22="ManageAll";
string Button23="ManageManual";
string Button24="ManageOwn";
string Box1="LotSizeBox";
string Box2="DistanceBox";
string Box4="TakeProfitBox";
string Box3="StopLossBox";
string Box5="TrailingBox";
string Box6="BreakEvenBox";
bool CallPanel=false;
bool CheckOrphans=true;
double FinalLot;
double FinalDistance;
double FinalTakeProfit;
double FinalStopLoss;
double FinalTrailing;
double FinalBreakEven;
double GetLotFromPanel;
double GetDistanceFromPanel;
double GetTakeProfitFromPanel;
double GetStopLossFromPanel;
double GetTrailingFromPanel;
double GetBreakEvenFromPanel;
double SpreadPair;
double PriceAsk;
double PriceBid;
double OrderLotSize;
double SymbolPoints;
double PriceLastBuyStop;
double PriceLastSellStop;
color ColorButton21;
color ColorButton22;
color ColorButton23;
color ColorButton24;

void init()
  {
      // код доступен только после оплаты
   }

void deinit()
  {

   ObjectDelete("Background1");
   ObjectDelete("Background2");
   ObjectDelete("Background3");
   ObjectDelete("Text1");
   ObjectDelete("Text2");
   ObjectDelete("Text3");
   ObjectDelete("Text4");
   ObjectDelete("Text5");
   ObjectDelete("Text6");
   ObjectDelete("Text7");
   ObjectDelete("Text8");
   ObjectDelete("Text9");
   ObjectDelete("Text10");
   ObjectDelete("Text11");
   ObjectDelete("Text12");
   ObjectDelete("Text13");
   ObjectDelete("Text14");
   ObjectDelete("Text15");
   ObjectDelete("Text16");
   ObjectDelete(Box1);
   ObjectDelete(Box2);
   ObjectDelete(Box4);
   ObjectDelete(Box3);
   ObjectDelete(Box5);
   ObjectDelete(Box6);
   ObjectDelete(Button1);
   ObjectDelete(Button2);
   ObjectDelete(Button3);
   ObjectDelete(Button4);
   ObjectDelete(Button5);
   ObjectDelete(Button6);
   ObjectDelete(Button7);
   ObjectDelete(Button8);
   ObjectDelete(Button9);
   ObjectDelete(Button10);
   ObjectDelete(Button11);
   ObjectDelete(Button12);
   ObjectDelete(Button13);
   ObjectDelete(Button14);
   ObjectDelete(Button15);
   ObjectDelete(Button16);
   ObjectDelete(Button17);
   ObjectDelete(Button18);
   ObjectDelete(Button19);
   ObjectDelete(Button20);
   ObjectDelete(Button21);
   ObjectDelete(Button22);
   ObjectDelete(Button23);
   ObjectDelete(Button24);
   Comment("");

  }

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

   bool selected=false;
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;

      if(clickedChartObject==Button21)
        {
         selected=ObjectGetInteger(0,Button21,OBJPROP_STATE);
         if((selected) && (ManageOrders!=0))
           {
            EventKillTimer();
            ColorButton21=clrForestGreen;
            ColorButton22=clrCrimson;
            ColorButton23=clrCrimson;
            ColorButton24=clrCrimson;
            ObjectDelete(Button2);
            ObjectDelete(Button3);
            ObjectDelete(Button4);
            ObjectDelete(Button5);
            ObjectDelete(Button6);
            ObjectDelete(Button7);
            ObjectDelete(Button8);
            ObjectDelete(Button9);
            ObjectDelete(Button10);
            ObjectDelete(Button11);
            ObjectDelete(Button12);
            ObjectDelete(Button13);
            ObjectDelete(Button14);
            ObjectDelete(Button15);
            ObjectDelete(Button16);
            ObjectDelete(Button17);
            ObjectDelete(Button18);
            ObjectDelete(Button19);
            ObjectDelete(Button20);
            ObjectDelete(Button21);
            ObjectDelete(Button22);
            ObjectDelete(Button23);
            ObjectDelete(Button24);
            ObjectDelete("Text15");
            clickedChartObject=Button1;
            ManageOrdersBox();
            ManageOrders=0;
            MN="With ID: "+StringSubstr(DoubleToStr(MagicNumber,0),0,10);
            if(ObjectFind("Text15")==-1) ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);
            ObjectSetInteger(0,Button21,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button22)
        {
         selected=ObjectGetInteger(0,Button22,OBJPROP_STATE);
         if((selected) && (ManageOrders!=1))
           {
            EventKillTimer();
            ColorButton21=clrCrimson;
            ColorButton22=clrForestGreen;
            ColorButton23=clrCrimson;
            ColorButton24=clrCrimson;
            ObjectDelete(Button2);
            ObjectDelete(Button3);
            ObjectDelete(Button4);
            ObjectDelete(Button5);
            ObjectDelete(Button6);
            ObjectDelete(Button7);
            ObjectDelete(Button8);
            ObjectDelete(Button9);
            ObjectDelete(Button10);
            ObjectDelete(Button11);
            ObjectDelete(Button12);
            ObjectDelete(Button13);
            ObjectDelete(Button14);
            ObjectDelete(Button15);
            ObjectDelete(Button16);
            ObjectDelete(Button17);
            ObjectDelete(Button18);
            ObjectDelete(Button19);
            ObjectDelete(Button20);
            ObjectDelete(Button21);
            ObjectDelete(Button22);
            ObjectDelete(Button23);
            ObjectDelete(Button24);
            ObjectDelete("Text15");
            clickedChartObject=Button1;
            ManageOrdersBox();
            ManageOrders=1;
            MN="All Orders";
            if(ObjectFind("Text15")==-1) ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);
            ObjectSetInteger(0,Button22,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button23)
        {
         selected=ObjectGetInteger(0,Button23,OBJPROP_STATE);
         if((selected) && (ManageOrders!=2))
           {
            EventKillTimer();
            ColorButton21=clrCrimson;
            ColorButton22=clrCrimson;
            ColorButton23=clrForestGreen;
            ColorButton24=clrCrimson;
            ObjectDelete(Button2);
            ObjectDelete(Button3);
            ObjectDelete(Button4);
            ObjectDelete(Button5);
            ObjectDelete(Button6);
            ObjectDelete(Button7);
            ObjectDelete(Button8);
            ObjectDelete(Button9);
            ObjectDelete(Button10);
            ObjectDelete(Button11);
            ObjectDelete(Button12);
            ObjectDelete(Button13);
            ObjectDelete(Button14);
            ObjectDelete(Button15);
            ObjectDelete(Button16);
            ObjectDelete(Button17);
            ObjectDelete(Button18);
            ObjectDelete(Button19);
            ObjectDelete(Button20);
            ObjectDelete(Button21);
            ObjectDelete(Button22);
            ObjectDelete(Button23);
            ObjectDelete(Button24);
            ObjectDelete("Text15");
            clickedChartObject=Button1;
            ManageOrdersBox();
            ManageOrders=2;
            MN="Manual Orders";
            if(ObjectFind("Text15")==-1) ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);
            ObjectSetInteger(0,Button23,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button24)
        {
         selected=ObjectGetInteger(0,Button24,OBJPROP_STATE);
         if((selected) && (ManageOrders!=3))
           {
            EventKillTimer();
            ColorButton21=clrCrimson;
            ColorButton22=clrCrimson;
            ColorButton23=clrCrimson;
            ColorButton24=clrForestGreen;
            ObjectDelete(Button2);
            ObjectDelete(Button3);
            ObjectDelete(Button4);
            ObjectDelete(Button5);
            ObjectDelete(Button6);
            ObjectDelete(Button7);
            ObjectDelete(Button8);
            ObjectDelete(Button9);
            ObjectDelete(Button10);
            ObjectDelete(Button11);
            ObjectDelete(Button12);
            ObjectDelete(Button13);
            ObjectDelete(Button14);
            ObjectDelete(Button15);
            ObjectDelete(Button16);
            ObjectDelete(Button17);
            ObjectDelete(Button18);
            ObjectDelete(Button19);
            ObjectDelete(Button20);
            ObjectDelete(Button21);
            ObjectDelete(Button22);
            ObjectDelete(Button23);
            ObjectDelete(Button24);
            ObjectDelete("Text15");
            clickedChartObject=Button1;
            ManageOrdersBox();
            ManageOrders=3;
            MN="Own Orders";
            if(ObjectFind("Text15")==-1) ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);
            ObjectSetInteger(0,Button24,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button1)
        {
         selected=ObjectGetInteger(0,Button1,OBJPROP_STATE);
         if(selected)
           {
            if(ManageOrders==3) FullOrdersPanel();
            if(ManageOrders!=3) LiteOrdersPanel();
           }
         else
           {
            ObjectDelete(Button2);
            ObjectDelete(Button3);
            ObjectDelete(Button4);
            ObjectDelete(Button5);
            ObjectDelete(Button6);
            ObjectDelete(Button7);
            ObjectDelete(Button8);
            ObjectDelete(Button9);
            ObjectDelete(Button10);
            ObjectDelete(Button11);
            ObjectDelete(Button12);
            ObjectDelete(Button13);
            ObjectDelete(Button14);
            ObjectDelete(Button15);
            ObjectDelete(Button16);
            ObjectDelete(Button17);
            ObjectDelete(Button18);
            ObjectDelete(Button19);
            ObjectDelete(Button20);
           }
        }

      if(clickedChartObject==Button2)
        {
         selected=ObjectGetInteger(0,Button2,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            OpenPosition(OP_BUY);
            ObjectSetInteger(0,Button2,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button3)
        {
         selected=ObjectGetInteger(0,Button3,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            OpenPosition(OP_SELL);
            ObjectSetInteger(0,Button3,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button4)
        {
         selected=ObjectGetInteger(0,Button4,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            OpenOrders(1);
            ObjectSetInteger(0,Button4,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button5)
        {
         selected=ObjectGetInteger(0,Button5,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            OpenOrders(2);
            ObjectSetInteger(0,Button5,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button6)
        {
         selected=ObjectGetInteger(0,Button6,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            OpenOrders(0);
            ObjectSetInteger(0,Button6,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button7)
        {
         selected=ObjectGetInteger(0,Button7,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(1,1);
            ObjectSetInteger(0,Button7,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button8)
        {
         selected=ObjectGetInteger(0,Button8,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(2,1);
            ObjectSetInteger(0,Button8,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button9)
        {
         selected=ObjectGetInteger(0,Button9,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(0,1);
            ObjectSetInteger(0,Button9,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button10)
        {
         selected=ObjectGetInteger(0,Button10,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(1,1);
            ObjectSetInteger(0,Button10,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button11)
        {
         selected=ObjectGetInteger(0,Button11,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(2,1);
            ObjectSetInteger(0,Button11,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button12)
        {
         selected=ObjectGetInteger(0,Button12,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(0,1);
            ObjectSetInteger(0,Button12,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button13)
        {
         selected=ObjectGetInteger(0,Button13,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(1,1);
            ObjectSetInteger(0,Button13,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button14)
        {
         selected=ObjectGetInteger(0,Button14,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(1,0);
            ObjectSetInteger(0,Button14,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button15)
        {
         selected=ObjectGetInteger(0,Button15,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(2,1);
            ObjectSetInteger(0,Button15,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button16)
        {
         selected=ObjectGetInteger(0,Button16,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            ClosePositions(2,0);
            ObjectSetInteger(0,Button16,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button17)
        {
         selected=ObjectGetInteger(0,Button17,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(1,1);
            ObjectSetInteger(0,Button17,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button18)
        {
         selected=ObjectGetInteger(0,Button18,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(1,1);
            ObjectSetInteger(0,Button18,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button19)
        {
         selected=ObjectGetInteger(0,Button19,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(2,1);
            ObjectSetInteger(0,Button19,OBJPROP_STATE,FALSE);
           }
        }

      if(clickedChartObject==Button20)
        {
         selected=ObjectGetInteger(0,Button20,OBJPROP_STATE);
         if(selected)
           {
            EventKillTimer();
            DeleteOrders(2,0);
            ObjectSetInteger(0,Button20,OBJPROP_STATE,FALSE);
           }
        }

      ChartRedraw();
     }

  }

void start()
  {
      // код доступен только после оплаты
   }

void CountOrders()
  {

   TotalOrders=0;
   CntBuy=0;
   CntSell=0;
   CntBuyStop=0;
   CntSellStop=0;
   PriceLastBuyStop=0;
   PriceLastSellStop=0;

   if(OrdersTotal()>0)
     {
      for(int i=0; i<OrdersTotal(); i++)
        {
         if(OrderSelect(i,SELECT_BY_POS)==true)
           {
            if((OrderMagicNumber()==IDorder) && (OrderSymbol()==Symbol()))
              {
               TotalOrders++;
               if(OrderType()==OP_BUY) CntBuy++;
               if(OrderType()==OP_SELL) CntSell++;
               if(OrderType()==OP_BUYSTOP) {CntBuyStop++; PriceLastBuyStop=OrderOpenPrice();}
               if(OrderType()==OP_SELLSTOP) {CntSellStop++; PriceLastSellStop=OrderOpenPrice();}
              }
           }
        }
     }

  }

void OpenPosition(int PositionType)
  {

   double StopLossOrder=0;
   double TakeProfitOrder=0;
   int OpenOrderTicket;
   double OpenPrice=0;
   color OpenColor=clrNONE;
   string TypeOfOrder;
   double LotSize=MathMin(MathMax((MathRound(FinalLot/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)),MarketInfo(Symbol(),MODE_MINLOT)),MarketInfo(Symbol(),MODE_MAXLOT));

   if(PositionType==OP_BUY)
     {
      if(PutStopLoss==true) StopLossOrder=NormalizeDouble(Bid-FinalStopLoss*DigitPoint,Digits);
      if(PutTakeProfit==true)TakeProfitOrder=NormalizeDouble(Ask+FinalTakeProfit*DigitPoint,Digits);
      OpenPrice=NormalizeDouble(Ask,Digits);
      OpenColor=clrBlue;
      TypeOfOrder="Buy";
     }

   if(PositionType==OP_SELL)
     {
      if(PutStopLoss==true) StopLossOrder=NormalizeDouble(Ask+FinalStopLoss*DigitPoint,Digits);
      if(PutTakeProfit==true)TakeProfitOrder=NormalizeDouble(Bid-FinalTakeProfit*DigitPoint,Digits);
      OpenPrice=NormalizeDouble(Bid,Digits);
      OpenColor=clrRed;
      TypeOfOrder="Sell";
     }

   OpenOrderTicket=OrderSend(Symbol(),PositionType,LotSize,OpenPrice,3,StopLossOrder,TakeProfitOrder,ExpertName,IDorder,0,OpenColor);

   if(OpenOrderTicket>0) if(SoundAlert==true) PlaySound(SoundOpen);

   if(GetLastError()==132) Print(ExpertName+": Could not open order, market is closed");

   if(GetLastError()==133) Print(ExpertName+": Could not open order, trade is disabled");

   if(GetLastError()==134) Print(ExpertName+": Could not open order, not enough money");

   if(GetLastError()==137) Print(ExpertName+": Could not open order, broker is busy");

   if(GetLastError()==148) Print(ExpertName+": Could not open order, too many orders");

   if(GetLastError()==4108) Print(ExpertName+": Could not open order, invalid ticket");

   if(GetLastError()==4109) Print(ExpertName+": Could not open order, trade is not allowed");

  }

double CalculateLot()
  {

   double OrdrLot=0;

   if(UseAutoLotSize==true) OrdrLot=(AccountBalance()/MarketInfo(Symbol(),MODE_LOTSIZE))*RiskFactor;
   if(UseAutoLotSize==false) OrdrLot=LotSizeOrders;

   return(MathMin(MathMax((MathRound(OrdrLot/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)),MarketInfo(Symbol(),MODE_MINLOT)),MarketInfo(Symbol(),MODE_MAXLOT)));

  }

void OpenOrders(int TypeOrdersOpen)
  {

   int TicketBuyStop=0;

Показано первые 50% кода (символов: 56599)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
5 659,90₽ ≈ $69.18