ea scalperautopilot.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea scalperautopilot.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.