Price Data Components
Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Lock&&PipsingXR_V2_77_Engl_CG
//+------------------------------------------------------------------+
//| Lock&&PipsingXR2.5.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "#Copyright © 2008, XrustSolution.#"
#property link "#http://www.xrust.ucoz.net#"
#include <stdlib.mqh>
//-------------------------------------------------------------------+
extern string a="KEY PARAMETERS OF THE ADVISER";
extern double mno = 2;
extern int Cg1 = 20;
extern int Cg2 = 96;
extern int Cg3 = 288;
extern bool FullAuto=true;
extern string ha="the percentage of risk as% of deposit amount";
extern double Risk=3;
extern string x="Permission to use the dynamic changes in the lot";
extern bool Martin=false;
extern string gb="dynamic change lot factor. if <1 it increases lot , if > 1 it is lot decreases ";
extern double MartinKoff=0.75;
extern string k="Trailing step on equity as% of the deposit";
extern double EqwTralStep=0.03;
extern string í="minimum break between the opening of orders in minutes";
extern int MinTradePause=1;
extern string m="Permission to restrict trade in time";
extern bool TradeTime=false;
extern string n="Hour start of trading";
extern int StartTrade=20;
extern string o="Hour late trade";
extern int EndTrade=8;
extern string p="Permission to display information in the main window";
extern bool ShowComment=true;
extern string r="switch alarm systems and security";
extern bool MargineVarning=false;
extern string ss="switch emergency return";
extern bool EmergencyReturn=false;
extern string rr="the percentage of the deposit for the emergency return";
extern double EmergencyPersent=100;
extern string s="permission for drawing graphic elements";
extern bool SetArrow=true;
extern string t="Key closing level position without loss";
extern bool WithoutLoss=false;
int TotalOrders=50;
//----Variables for KimIV funcions ---------------------------------+
bool NumberOfTry=3,UseSound=false,print=false;
string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
color clOpenBuy = Blue; // Öâåò çíà÷êà îòêðûòèÿ Buy
color clOpenSell = Red; // Öâåò çíà÷êà îòêðûòèÿ Sell
bool MarketWatch=false;
bool gbDisabled = False; // Áëîêèðîâêà
int BuyMagic1=2891;
int SellMagic1=73351;
static int PrevTime=0;double Lot;
double MinLot, MaxLot, MarginMinLot;
int MinLotDgts,period,GrossPeriod,GrossTrand=0;
int Slippage=3;static double prr;
//------------------------------------------------------------------+
static double StartDepo, gEqviti;
static double gPriseAp,gPriseDn,gMidPrise;
int gFrChSize,tP;
static bool asd=false;
int BuySell_1=0,BuySell_2=0,BuySell_3=0;
int gCountBuy_1=1,gCountSell_1=1;
double lot;
static string gTime;
static bool Expdis=false;
int MaxOrd_1;
bool eqvtrade,TradeOfTime;
double Sredstva;
//-----------------
double Ga,Gb;
double dPrice[];
double fx[];
//-----------------
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
void init()
{
MaxOrd_1=TotalOrders;
StartDepo = AccountBalance();
if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}
if(!GlobalVariableCheck("multi")){GlobalVariableSet("multi",1);}else{
double set=GlobalVariableGet("multi");
set++;
GlobalVariableSet("multi",set);
}
if(!GlobalVariableCheck("Risc")){GlobalVariableSet("Risc",Risk);}else{
Risk=GlobalVariableGet("Risc");
}
if(!GlobalVariableCheck("pause")){GlobalVariableSet("pause",MinTradePause);}else{
MinTradePause=GlobalVariableGet("pause");
}
if(!GlobalVariableCheck("disable")){GlobalVariableSet("disable",0);}
if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}
if(GlobalVariableGet("multi")>1){SetArrow=false;}
return;
}
//+------------------------------------------------------------------+
void deinit(){
if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}
Comment(" ");
if(GlobalVariableCheck("multi")){
double set=GlobalVariableGet("multi");
if(set>1){
set--;
GlobalVariableSet("multi",set);
}else{
GlobalVariableDel("multi");
GlobalVariableDel("disable");
if(GlobalVariableCheck("Risc")){
GlobalVariableDel("Risc");
GlobalVariableDel("sredstva");
GlobalVariableDel("pause");
}
}
}
if(Expdis){
double Exdis=GlobalVariableGet("disable");
Exdis--;
GlobalVariableSet("disable",Exdis);
Expdis=false;
}
return(0);} //deinit |
//+------------------------------------------------------------------+
int start()
{
//Bu();
if(GlobalVariableGet("multi")>1){SetArrow=false;TradeOfTime=false;}else{TradeOfTime=TradeTime;}//óäàëÿåì ñòðåëêè â ìóëüòèðåæèìå
if(gEqviti==0){gEqviti=AccountBalance();}//èñïðàâëÿåì ïåðåìåííóþ
// Ðàñ÷åò êîëè÷åñòâà îðäåðîâ îò ðèñêà è êîëè÷åñòâà óñòàíîâëåííûõ ñîâåòíèêîâ
MaxOrd_1=TotalOrders;
if(MargineVarning){
if(MaxOrd_1>AccountBalance()/(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*2*(GlobalVariableGet("multi")-GlobalVariableGet("disable")))){
MaxOrd_1=(AccountBalance()/(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*2*(GlobalVariableGet("multi")-GlobalVariableGet("disable"))));}
}else{
if(MaxOrd_1>AccountBalance()/(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*(GlobalVariableGet("multi")-GlobalVariableGet("disable")))){
MaxOrd_1=(AccountBalance()/(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*(GlobalVariableGet("multi")-GlobalVariableGet("disable"))));}
}
//çàïèñü êîëè÷åñòâà íàëè÷íûõ ñðåäñâ ïîñëå óäàëåíèÿ âñåõ îðäåðîâ
if(OrdersTotal()<1){
Sredstva=AccountBalance();
if(!GlobalVariableCheck("sredstva")){GlobalVariableSet("sredstva",Sredstva);}
else{if(GlobalVariableGet("sredstva")!=Sredstva){GlobalVariableSet("sredstva",Sredstva);}}
}
//îòêëþ÷åíèå îãðàíè÷åíèé ïî âðåìåíè ðàáîòû â ìóëüòèðåæèìå
if((GlobalVariableGet("multi")-GlobalVariableGet("disable"))>2){TradeOfTime=false;}
//ñèñòåìà áåçîïàñíîñòè è îãðàíè÷åíèÿ ïî ñ÷åòó
if(MargineVarning){if(Varning()){Sleep(10000);return(0);}}
//ñèñòåìà áåçîïàñíîñòè è îãðàíè÷åíèÿ ïî ñ÷åòó
if(!IsDemo()&&!IsOptimization()&&!IsTesting()){
//if(AccountNumber()!=74777){
Comment("Bad Account!!!");
Sleep(500);
Comment(" ");
return(0);
//}
}
eqvtrade=false;
//ïðåäîõðàíèòåëüíûé êëàïàí ñáðîñà íà óðîâåíü íà÷àëüíîãî áàëàíñà ïðè ïîæàðå
if(EmergencyReturn){
if(AccountEquity()<=AccountBalance()/100*EmergencyPersent){
CloseAll();
double crash=GlobalVariableGet("disable");
crash++;
GlobalVariableSet("disable",crash);
Expdis=true;
Comment("System crashed! Restart!");
Sleep(500);
Comment(" ");
return(0);
}
}
//óäàëÿåì çàïðåò íà òîðãîâëþ ïîñëå óäàëåíèÿ âñåõ îðäåðîâ
if(OrdersTotal()<1){
if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}
gEqviti=AccountBalance();
}
//òðàëèì ýêâèòè
if(EcvitiTral3(EqwTralStep)){
return(0);}
if(GlobalVariableCheck("stop")){return(0);}
//-----------------------------------------------------------------------------+
// Ðàñ÷åò êîëè÷åñòâà ñîâåòíèêîâ â çàâèñèìîñòè îò ðèñêà íà îäíó ñäåëêó |
//-----------------------------------------------------------------------------+
if(GlobalVariableGet("multi")>1){
if(MaxOrd_1<15){
if(!GlobalVariableCheck("disable")){
GlobalVariableSet("disable",1);
}else{
if(!Expdis){
double dis=GlobalVariableGet("disable");
dis++;
GlobalVariableSet("disable",dis);
Expdis=true;
}
}
Comment("\nMulti Chart Mode \n",
"STOPPED\n",
"Because AccountFreeMargin is few"
);
return(0);
}
if(MaxOrd_1>18){
if(Expdis){
double Exdis=GlobalVariableGet("disable");
Exdis--;
if(Exdis<=0){Exdis=0;}
GlobalVariableSet("disable",Exdis);
Expdis=false;
}
}
}
//----------------------------------------------------------------------------
BuySell_1=0;BuySell_2=0;BuySell_3=0;
//Info();
//DelDamage();
if((CountOpOrd("0")>0)&&(CountOpOrd("1")>0)){
if(GrPorfit()>0){CloseAll();}
}
//Óñòàíîâêà îðäåðîâ-------------------------------------------------------------------------------------
if(!GlobalVariableCheck("stop")){
if(NevBar()){
if(SetArrow){if(CountOpOrd("0")>0){SetArrow("NullProfitDot",4,1,0,NullDot(),White);}}
if(TradeTime()){
IfZZ();
if(BuySell_1>0){
if(CountOpOrd("0")<MaxOrd_1&&TimeOfTrade()){
lot=CalcLotsAuto();
if(CountOpOrd("0")>2){if(Martin){lot=OrdersLot();}}
if(FullAuto){if(CountOpOrd("0")>=MaxOrd_1/2){lot=OrdersLot();}}
if(CountOpOrd("0")<1){OpenPosition("",0,lot,0,0,BuyMagic1);
CG(20);SetTLine(Blue,"CG1",Time[20],Close[20],Time[1],Close[1],false,0,2);
CG(48);SetTLine(Red,"CG2",Time[20],Close[48],Time[1],Close[1],false,0,2);
}
else{
if(PorfitBuySell(0)>PorfitBuySell(1)){OpenPosition("",1,lot,0,0,SellMagic1);}
if(PorfitBuySell(0)<PorfitBuySell(1)){OpenPosition("",0,lot,0,0,BuyMagic1);}
}
}
}
if(BuySell_1<0){
if(CountOpOrd("0")<MaxOrd_1&&TimeOfTrade()){
lot=CalcLotsAuto();
if(CountOpOrd("0")>2){if(Martin){lot=OrdersLot();}}
if(FullAuto){if(CountOpOrd("0")>=MaxOrd_1/2){lot=OrdersLot();}}
if(CountOpOrd("0")<1){OpenPosition("",1,lot,0,0,SellMagic1);
CG(20);SetTLine(Blue,"CG1",Time[20],Close[20],Time[1],Close[1],false,0,2);
CG(48);SetTLine(Red,"CG2",Time[20],Close[48],Time[1],Close[1],false,0,2);
}
else{
if(PorfitBuySell(0)>PorfitBuySell(1)){OpenPosition("",1,lot,0,0,SellMagic1);}
if(PorfitBuySell(0)<PorfitBuySell(1)){OpenPosition("",0,lot,0,0,BuyMagic1);}
}
}
}
}
}
}
//-------------------------------------------------------------------------------------------------------
return(0);
}
int MInProfit=0;
//+----------------------------------------------------------------------------+
//| Center of Gravity |
//+----------------------------------------------------------------------------+
double CG(int bars_back=20){
double ai[10,10], b[10], x[10], sx[20];
double sum;
int ip, p, n, f;
int i = 0,m = 1;
double qq, mm, tt;
int ii, jj, kk, ll, nn;
double sq, std;
ArrayResize(fx,bars_back+1);
nn = m + 1;
int mi;
p = bars_back;
sx[1] = p + 1;
//----------------------sx------------
for(mi = 1; mi <= nn * 2 - 2; mi++)
{
sum = 0;
for(n = i; n <= i + p; n++)
{
sum += MathPow(n, mi);
}
sx[mi + 1] = sum;
}
//----------------------syx-----------
for(mi = 1; mi <= nn; mi++)
{
sum = 0.00000;
for(n = i; n <= i + p; n++)
{
if(mi == 1)
sum += Close[n];
else
sum += Close[n] * MathPow(n, mi - 1);
}
b[mi] = sum;
}
//===============Matrix===========================
for(jj = 1; jj <= nn; jj++)
{
for(ii = 1; ii <= nn; ii++)
{
kk = ii + jj - 1;
ai[ii, jj] = sx[kk];
}
}
//===============Gauss============================
for(kk = 1; kk <= nn - 1; kk++)
{
ll = 0; mm = 0;
for(ii = kk; ii <= nn; ii++)
{
if(MathAbs(ai[ii, kk]) > mm)
{
mm = MathAbs(ai[ii, kk]);
ll = ii;
}
}
if(ll == 0)
return(0);
if(ll != kk)
{
for(jj = 1; jj <= nn; jj++)
{
tt = ai[kk, jj];
ai[kk, jj] = ai[ll, jj];
ai[ll, jj] = tt;
}
tt = b[kk]; b[kk] = b[ll]; b[ll] = tt;
}
for(ii = kk + 1; ii <= nn; ii++)
{
qq = ai[ii, kk] / ai[kk, kk];
for(jj = 1; jj <= nn; jj++)
{
if(jj == kk)
ai[ii, jj] = 0;
else
ai[ii, jj] = ai[ii, jj] - qq * ai[kk, jj];
}
b[ii] = b[ii] - qq * b[kk];
}
}
x[nn] = b[nn] / ai[nn, nn];
for(ii = nn - 1; ii >= 1; ii--)
{
tt = 0;
for(jj = 1; jj <= nn - ii; jj++)
{
tt = tt + ai[ii, ii + jj] * x[ii + jj];
x[ii] = (1 / ai[ii, ii]) * (b[ii] - tt);
}
}
//====================================================
for(n = i; n <= i + p; n++)
{
sum = 0;
for(kk = 1; kk <= m; kk++)
{
sum += x[kk + 1] * MathPow(n, kk);
}
fx[n] = x[1] + sum;
}
Ga=fx[0];Gb=fx[20];
return((fx[0]-fx[20])/Point);
}
//-----------------------------------------------------------------------------+
// Óñëîâèÿ âõîäà â ðûíîê |
//-----------------------------------------------------------------------------+
int IfZZ(){
Comment(CG(48));
//if(iClose(Symbol(),30,1)<iOpen(Symbol(),30,1)){
//if(iClose(Symbol(),15,1)<iOpen(Symbol(),15,1)){
//if(iClose(Symbol(),5,1)<iOpen(Symbol(),5,1)){
//if(iCustom(Symbol(),0,"my_Fractals",1,2)!=0){
//if(CG(20)<CG(48)){
//SetTLine(Blue,"",Time[20],Gb,Time[1],Ga,false,0,1);
if((Close[Cg1]+Close[Cg2])/2<Close[1]){
BuySell_1=-1;
gCountBuy_1++;
gCountSell_1=1;
return(1);}//}}
//if(iClose(Symbol(),30,1)>iOpen(Symbol(),30,1)){
// if(iClose(Symbol(),15,1)>iOpen(Symbol(),15,1)){
// if(iClose(Symbol(),5,1)>iOpen(Symbol(),5,1)){
//if(iCustom(Symbol(),0,"my_Fractals",0,2)!=0){
//if(CG(20)>CG(48)){
//SetTLine(Blue,"",Time[20],Gb,Time[1],Ga,false,0,1);
if((Close[Cg1]+Close[Cg2])/2>Close[1]){
BuySell_1=1;
gCountBuy_1=1;
gCountSell_1++;
return(-1);}//}}
BuySell_1=0;
return(0);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 12.10.2007 |
//| Îïèñàíèå : Óñòàíîâêà îáúåêòà OBJ_TREND òðåíäîâàÿ ëèíèÿ |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| cl - öâåò ëèíèè |
//| nm - íàèìåíîâàíèå ( "" - âðåìÿ îòêðûòèÿ òåêóùåãî áàðà) |
//| t1 - âðåìÿ îòêðûòèÿ áàðà ( 0 - Time[10] |
//| p1 - öåíîâîé óðîâåíü ( 0 - Low[10]) |
//| t2 - âðåìÿ îòêðûòèÿ áàðà ( 0 - òåêóùèé áàð) |
//| p2 - öåíîâîé óðîâåíü ( 0 - Bid) |
//| ry - ëó÷ (False - ïî óìîë÷àíèþ) |
//| st - ñòèëü ëèíèè ( 0 - ïðîñòàÿ ëèíèÿ) |
//| wd - øèðèíà ëèíèè ( 1 - ïî óìîë÷àíèþ) |
//+----------------------------------------------------------------------------+
void SetTLine(color cl, string nm="",
datetime t1=0, double p1=0, datetime t2=0, double p2=0,
bool ry=False, int st=0, int wd=1) {
nm=StringConcatenate(nm,DoubleToStr(Time[0], 0));
if (t1<=0) t1=Time[10];
if (p1<=0) p1=Low[10];
if (t2<=0) t2=Time[0];
if (p2<=0) p2=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, 0, 0,0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_TIME2 , t2);
ObjectSet(nm, OBJPROP_PRICE2, p2);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_RAY , ry);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//-----------------------------------------------------------------------------+
// Ñòàâèò äâà îòëîæåííèêà |
//-----------------------------------------------------------------------------+
void SetOpd(){
OrderSend(Symbol(),4,CalcLotsAuto(),Bid+20*Point,0,0,0,"",0,0,CLR_NONE);
OrderSend(Symbol(),5,CalcLotsAuto(),Bid-20*Point,0,0,0,"",0,0,CLR_NONE);
return;
}
//-----------------------------------------------------------------------------+
// Òèò ïîñëåäíåãî óñòàíîâëåííîãî îðäåðà |
//-----------------------------------------------------------------------------+
double LastOrderdPrise(){int time=0;double pri=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderOpenTime()>time){
time=OrderOpenTime();
pri=OrderOpenPrice();
}
}
}
}
return(pri);
}
//-----------------------------------------------------------------------------+
// Òî÷êà ðàâíîâåñèÿ |
//-----------------------------------------------------------------------------+
double NullDot(){double prise=0;int count=0,countlot=0;
if(OrdersTotal()<1){return(Bid);}
double MinLot=MarketInfo(Symbol(),MODE_MINLOT);
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
countlot=(OrderLots()/MinLot);
count=count+countlot;
prise=prise+(OrderOpenPrice()*countlot);
}
}
}
prise=prise/count;
return(prise);
}
//+----------------------------------------------------------------------------+
// Ïîäñ÷èòûâàåò Îáùóþ íå ðåàëèçîâàííóþ ïðèáûëü íà äàííîì èíñòðóìåíòå +
//-----------------------------------------------------------------------------+
double GrPorfit(){double grpr=0;
for(int n=0;n<OrdersTotal();n++){
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
grpr=grpr+OrderProfit()+OrderSwap()+OrderCommission();
}
}
}
return(grpr);
}
//-----------------------------------------------------------------------------+
// Ñðåäíåå àðèôìåòè÷åñêîå ëîòà óñòàíîâëåííûõ îðäåðîâ |
//-----------------------------------------------------------------------------+
double OrdersLot(){int count=0;double Lt=0;
double StepLot=MarketInfo(Symbol(),MODE_LOTSTEP);
if(StepLot==0.01){int step=2;}else{step=1;}
//if(OrdersTotal()<5){return(CalcLotsAuto());}
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderCloseTime()==0){
Lt=Lt+OrderLots();
count++;
}
}
}
}
return(NormalizeDouble((Lt/(count*MartinKoff)),step));
}
//+------------------------------------------------------------------+
//| Ðàñ÷åò ëîòà ñîîòâ ðèñêó è áàëàíñó |
//+------------------------------------------------------------------+
double CalcLotsAuto(){double LotOpt,LotNeOpt,Zalog;
RefreshRates();
double Set=GlobalVariableGet("multi")-GlobalVariableGet("disable");
double Sredstwa =GlobalVariableGet("sredstva");
double lott=MarketInfo(Symbol(),MODE_MARGINREQUIRED)/1000;
double Marga=AccountFreeMargin();
double Balans=AccountBalance();
double LotMin=MarketInfo(Symbol(),MODE_MINLOT);
double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);
double StepLot=MarketInfo(Symbol(),MODE_LOTSTEP);
double StopLv=AccountStopoutLevel();
int PrsMinLot=1000*LotMin;
if(Sredstwa==0){Sredstwa=AccountBalance();GlobalVariableSet("sredstva",Balans);}
if(GlobalVariableGet("multi")>1){Risk=GlobalVariableGet("Risc");}
if(Risk<0)Risk=0;
if(Risk>100)Risk=100;
if(StepLot==0.01){int step=2;}else{step=1;}
if(Set<1){Set=1;}
//---------------------------
Zalog=(Sredstwa*(Risk/100))/Set;
LotOpt=NormalizeDouble((Zalog/1000),step);
if(LotOpt>LotMax)LotOpt=LotMax;
if(LotOpt<LotMin)LotOpt=LotMin;
//if(Marga<Sredstva/2){return(0);}
return(LotOpt);
}
//+------------------------------------------------------------------+
//| Óñòàíîâêà ñòðåëîê |
//+------------------------------------------------------------------+
void SetArrow(string nm,int kod,int razm,int bar,double prs,color col){
//if(!DriveArrow)return;
string Name=StringConcatenate(nm,TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));
ObjectCreate(Name,OBJ_ARROW,0,0,0,0,0,0,0);
ObjectSet(Name,OBJPROP_ARROWCODE,kod);
ObjectSet(Name,OBJPROP_STYLE,DRAW_ARROW);
ObjectSet(Name,OBJPROP_TIME1,Time[bar]);
ObjectSet(Name,OBJPROP_PRICE1,prs);
ObjectSet(Name,OBJPROP_WIDTH,razm);
ObjectSet(Name,OBJPROP_COLOR,col);
return;}
//-----------------------------------------------------------------------------+
// Äåòåêòîð ìóëüòè ðåæèìà ñ÷åò÷èê óñòàíîâëåííûõ ñîâåòíèêîâ |
//-----------------------------------------------------------------------------+
string MutiDet(){
double set =GlobalVariableGet("multi")-GlobalVariableGet("disable");
string mode=StringConcatenate("MULTI CHART MODE \n",DoubleToStr(set,0)," EXPERT ENABLES");
string mode2="SINGLE CHART MODE";
if(GlobalVariableGet("multi")<2){return(mode2);}
if(GlobalVariableGet("multi")>1){return(mode);}
}
//-----------------------------------------------------------------------------+
// Âûâîäèò èíôîðìàöèþ íà ýêðàí |
//-----------------------------------------------------------------------------+
void Info(){
Comment(
"ACCOUNT BALANSE ="+(DoubleToStr(AccountBalance()+PorfitBuySell(0)+PorfitBuySell(1),1))+"$\n"+
"ACCOUNT FREE MARGIN ="+(DoubleToStr(AccountFreeMargin(),1))+"$\n"+
"CURRENT PROFIT ="+(DoubleToStr(GrPorfit(),1))+"$\n"+
"PROFIT FROM THE START OF TRADING ="+(DoubleToStr(AccountBalance()-StartDepo,1))+"$\n"+
"ALOVED ORDERS FOR THE OPENING ="+MaxOrd_1+"Pc.\n"+
"OPEN ORDERS ="+CountOpOrd("0")+"Pc.\n"+
gTime,"\n",
MutiDet(),"\n",
"Risk = ",GlobalVariableGet("Risc")," %"
);
return;
}
//-----------------------------------------------------------------------------+
// Âûâîäèò ïðåäóïðåæäàþùåå ñîîáùåíèå |
//-----------------------------------------------------------------------------+
bool Varning(){int ord;double depo,rick;
double Set2=GlobalVariableGet("multi")-GlobalVariableGet("disable");
if(Set2<1){Set2=1;}
if(MaxOrd_1<15){
depo=MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*30;
ord=AccountBalance()/(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*CalcLotsAuto()*2);
rick=NormalizeDouble((AccountBalance()/Set2/15/MarketInfo(Symbol(),MODE_MARGINREQUIRED)*10),1);
Alert("THERE IS NOT ENOUGH MEANS FOR THE ACCOUNT"+"\n"+
"For such quantity of warrants it is necessary"+"\n"+
"The starting Deposit ="+depo+" $\n"+
"On your means it is possible to open "+ord+" Orders"+"\n"+
"Fill up your account please"+"\n"+
"Or reduce quantity of warrants"+"\n"+
"Or reduce the Risk of lower ="+DoubleToStr(rick,2)+" % \n"+
"Or disconnect the alarm system");
return(true);
}
return(false);
}
//-----------------------------------------------------------------------------+
// Ôóíêöèÿ êîíòðîëÿ âðåìåíè òîðãîâëè |
//-----------------------------------------------------------------------------+
bool TradeTime(){
int StartTradeHour=StartTrade;
int EndTradeHour=EndTrade;
if(!TradeOfTime){
gTime=StringConcatenate("the end of trading on Friday in ",DoubleToStr(EndTradeHour,0),":00 am");
if(DayOfWeek()==5){if(TimeHour(TimeCurrent())>EndTradeHour){return(false);}}
if(DayOfWeek()==1){if(TimeHour(TimeCurrent())<2){return(false);}}
if(DayOfWeek()==6||DayOfWeek()==0){return(false);}
return(true);}
if(DayOfWeek()==5){StartTradeHour=0;if(TimeHour(TimeCurrent())>EndTradeHour){return(false);}}else{StartTradeHour=StartTrade;}
if(DayOfWeek()==1){if(TimeHour(TimeCurrent())<2){gTime="Start tarde in 01:00 am";return(false);}}
if(DayOfWeek()==6||DayOfWeek()==0){return(false);}
if(StartTradeHour<EndTradeHour){
if(TimeHour(TimeCurrent())>=StartTradeHour&&TimeHour(TimeCurrent())<EndTradeHour
||CountOpOrd("0")>0){
gTime=StringConcatenate("By the end of trading session :",DoubleToStr((EndTradeHour-TimeHour(TimeCurrent())),0)," hours");
return(true);}}
if(StartTradeHour>EndTradeHour){
if(TimeHour(TimeCurrent())>=StartTradeHour||TimeHour(TimeCurrent())<EndTradeHour
||CountOpOrd("0")>0){
gTime=StringConcatenate("By the end of trading session :",DoubleToStr((EndTradeHour-TimeHour(TimeCurrent())),0)," hours");
return(true);}}
gTime=StringConcatenate("resting to : ",StartTradeHour,": 00");
return(false);
}
//+------------------------------------------------------------------+
//| Ïîäñ÷èòûâàåò êîëè÷åñòâî îòêðûòûõ îðäåðîâ ñîãëàñíî óñëîâèÿì |
//+------------------------------------------------------------------+
int CountOpOrd(string Sy="",int Typ=-1,int Magik=-1){int count=0;
if(Sy=="0"){Sy=Symbol();}
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Sy||Sy==""){
if(OrderType()==Typ||Typ==(-1)){
if(OrderMagicNumber()==Magik||Magik==(-1)){
if(OrderCloseTime()==0){
count++;
}
}
}
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//|Òðàë ïî ýêâèòè |
//+------------------------------------------------------------------+
bool EcvitiTral3(double EqStep){static double EqvTralStep=0.01;
if(OrdersTotal()<1){gEqviti=AccountBalance();if(FullAuto){EqvTralStep=CalcLotsAuto();}else{EqvTralStep=EqStep;}return(false);}
if(FullAuto){
if(EqvTralStep<CalcLotsAuto()*(GlobalVariableGet("multi")-GlobalVariableGet("disable"))){
EqvTralStep=CalcLotsAuto()*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
}
}else{
if(EqvTralStep<EqStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"))){
EqvTralStep=EqStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
}
}
//EqvTralStep=EqvTralStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
if(CountOpOrd("0")>1||WithoutLoss){
if(AccountEquity()>=AccountBalance()){
if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*((EqvTralStep*2)+EqvTralStep))){EqvTralStep=EqvTralStep*2;eqvtrade=true;}
if(AccountEquity()>(gEqviti+(gEqviti/100*EqvTralStep))){
gEqviti=gEqviti+(gEqviti/200*EqvTralStep);
if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
}
if(NormalizeDouble(AccountEquity(),1)>=NormalizeDouble(gEqviti,1)){CloseAll();GlobalVariableDel("stop");return(false);}
else{Comment(
"EQUITY TRALING MODE\n",
"EQUITY TRALING STEP =",EqvTralStep," %",
"\nACCOUNT BALANS = ",AccountBalance(),
"\nCLOSE LEVEL = ",gEqviti,
"\nACCOUNT EQUITY = ",AccountEquity(),
"\nNEXT STEP = ",gEqviti+(gEqviti/100*EqvTralStep));
return(true);
}
}else{GlobalVariableDel("stop");if(FullAuto){EqvTralStep=CalcLotsAuto();}else{EqvTralStep=EqStep;}}
}else{
if(AccountEquity()>AccountBalance()){
if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*((EqvTralStep*2)+EqvTralStep))){EqvTralStep=EqvTralStep*2;eqvtrade=true;}
if(AccountEquity()>(gEqviti+(gEqviti/100*EqvTralStep))){
gEqviti=gEqviti+(gEqviti/200*EqvTralStep);
if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
}
if(AccountEquity()<=gEqviti){CloseAll();GlobalVariableDel("stop");return(false);}
else{Comment(
"EQUITY TRALING MODE\n",
"EQUITY TRALING STEP =",EqvTralStep," %",
"\nACCOUNT BALANS = ",AccountBalance(),
"\nCLOSE LEVEL = ",gEqviti,
"\nACCOUNT EQUITY = ",AccountEquity(),
"\nNEXT STEP = ",gEqviti+(gEqviti/100*EqvTralStep));
return(true);
}
}else{GlobalVariableDel("stop");if(FullAuto){EqvTralStep=CalcLotsAuto();}else{EqvTralStep=EqStep;}}
}
return(false);
}
//+------------------------------------------------------------------+
//| ïðîâåðÿåò ðûíî÷íûé îðäåð íà ïðèíàäëåæíîñòü ñîãëàñíî óñëîâèÿì |
//+------------------------------------------------------------------+
bool IfOrder(string Sy="",int Typ=-1,int Magik=-1){
if(Sy=="0"){Sy=Symbol();}
if(OrderSymbol()==Sy||Sy==""){
if(OrderType()==Typ||Typ==(-1)){
if(OrderMagicNumber()==Magik||Magik==(-1)){
return(true);
}
}
}
return(false);
}
//+----------------------------------------------------------------------------+
// Ïîäñ÷èòûâàåò Îáùóþ íå ðåàëèçîâàííóþ ïðèáûëü íà äàííîì èíñòðóìåíòå +
//-----------------------------------------------------------------------------+
double PorfitBuySell(int tip){double grpr=-1;
if(OrdersTotal()<1){return(-1);}
for(int n=OrdersTotal()+1;n>=0;n--){
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){
if(IfOrder("0",tip)){grpr=grpr+OrderProfit()+OrderSwap()+OrderCommission();}
}
}
return(grpr);
}
//+----------------------------------------------------------------------------+
// Ïîäñ÷èòûâàåò Îáùóþ íå ðåàëèçîâàííóþ ïðèáûëü íà äàííîì èíñòðóìåíòå +
//-----------------------------------------------------------------------------+
double GlobalProfitBuySell(int tip){double grpr=0;
if(OrdersTotal()<1){return(-1);}
for(int n=OrdersTotal()+1;n>=0;n--){
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){
grpr=grpr+OrderProfit()+OrderSwap()+OrderCommission();
}
}
return(grpr);
}
//+----------------------------------------------------------------------------+
// Çàêðûâàåò âñå îðäåðà íà äàííîì èíñòðóìåíòå +
//-----------------------------------------------------------------------------+
void CloseAll(){
while(OrdersTotal()>0){
double profit=1000000;
for(int n=OrdersTotal()+1;n>=0;n--){
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){
if(OrderProfit()<profit){
profit=OrderProfit();
}
}
}
del(OrderTicket());
}
return;
}
//+----------------------------------------------------------------------------+
// Çàäàåò ïàóçó ìåæäó óñòàíîâêàìè îðäåðîâ +
//-----------------------------------------------------------------------------+
bool TimeOfTrade(){int count=0,typ,hc=0;double OpPrs=0,distanse=0,shir;
if(OrdersHistoryTotal()<2&&CountOpOrd("0")<1){return(true);}
double a=iCustom(Symbol(),0,"Center_of_Gravity",10,0,10);
double b=iCustom(Symbol(),0,"Center_of_Gravity",10,0,0);
if(GlobalVariableCheck("pause")){int pause=GlobalVariableGet("pause");}
else{pause=MinTradePause;GlobalVariableSet("pause",MinTradePause);}
for(int n=0;n<OrdersTotal();n++){
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderOpenTime()>count){count=OrderOpenTime();OpPrs=OrderOpenPrice();typ=OrderType();}
}
}
}
double forse=Volume[1]*(MathAbs(iMA(NULL,0,12,0,0,0,1)-iMA(NULL,0,12,0,1,0,2))
+MathAbs(iMA(NULL,0,48,0,0,0,1)-iMA(NULL,0,48,0,1,0,2)))*20000;
if(CountOpOrd("0")<1){
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)){
if(TimeCurrent()-OrderCloseTime()>forse){
Print(forse);
return(true);
}else{return(false);}
}
}
shir=((a-b)/Point)*((typ*2-1)*(-1));
if((MathAbs(OpPrs-Bid)/Point)<10){return(false);}
if(OpPrs!=0){distanse=(MathAbs(OpPrs-Bid)/Point)/((Bid*4/Digits));}
if((TimeCurrent()-count)>((MinTradePause*distanse+1+shir+(Volume[1]/(GlobalVariableGet("multi")-GlobalVariableGet("disable"))))*60)){return(true);}
return(false);
}
//-----------------------------------------------------------------------------+
// Ôóíêöèÿ êîíòðîëÿ íîâîãî áàðà |
//-----------------------------------------------------------------------------+
bool NevBar(){
static int PrevTime=0;
if (PrevTime==Time[0]) return(false);
PrevTime=Time[0];
return(true);}
//-----------------------------------------------------------------------------+
//Óäàëÿåò ðûíî÷íûé îðäåð ñ óêàçàííûì åé òèêåòîì |
//+----------------------------------------------------------------------------+
void del(int ticket){int err;
for(int i=0;i<1;i++){
GetLastError();//îáíóëÿåì îøèêó
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
string symbol = OrderSymbol();
if(OrderType()==OP_BUY){RefreshRates();
double prise = MarketInfo(symbol,MODE_BID);
if(!OrderClose(ticket,OrderLots(),prise,3,Green)){err = GetLastError();}}
if(OrderType()==OP_SELL){RefreshRates();
prise = MarketInfo(symbol,MODE_ASK);
if(!OrderClose(ticket,OrderLots(),prise,3,Green)){err = GetLastError();}}
if(err == 0){PlaySound("expert.wav");break;}
if(err != 0){PlaySound("timeout.wav");Print("Error for Close Funtion =",err);}
while(!IsTradeAllowed()){Sleep(5000);}// åñëè ðûíîê çàíÿò òî ïîäîæäåì 5 ñåê
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
}
}
//-----------------------------------------------------------------------------+
//___________________ÊÈÌÓ_______ÐÅÑÏÅÊÒ________È_____ÓÂÀÆÓÕÀ___________________|
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âûâîä ñîîáùåíèÿ â êîììåíò è â æóðíàë |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| m - òåêñò ñîîáùåíèÿ |
//+----------------------------------------------------------------------------+
void Message(string m) {
//Comment(m);
if (StringLen(m)>0) Print(m);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 28.11.2006 |
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| pp - öåíà óñòàíîâêè îðäåðà |
//| sl - öåíîâîé óðîâåíü ñòîïà |
//| tp - öåíîâîé óðîâåíü òåéêà |
//| ex - äàòà èñòå÷åíèÿ |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=White;
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
//if(OrderType()==0||OrderType()==2||OrderType()==4){if(Ask-stoplevel<sl||Bid+stoplevel>tp){return;}}
//if(OrderType()==1||OrderType()==3||OrderType()==5){if(Bid+stoplevel>sl||Ask-stoplevel<tp){return;}}
//if(MathAbs(sl-Ask)<stoplevel||MathAbs(tp-Ask)<stoplevel){return;}
if(pp==op&&sl==os&&tp==ot){return;}
if ((sl==os&&(os!=0||sl!=0))&& (tp==ot&&(ot!=0||tp!=0))) {return;}
for (it=1; it<=NumberOfTry; it++) {
//if ((!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
er=GetLastError();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
if(print){Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);}
Sleep(1000*10);
//if(er==130){del(OrderTicket());}
}
}
//}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 06.03.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ îòêðûòèÿ) |
//+----------------------------------------------------------------------------+
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);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 10.04.2008 |
//| Îïèñàíèå : Îòêðûâàåò ïîçèöèþ ïî ðûíî÷íîé öåíå. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà (NULL èëè "" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ |
//| ll - ëîò |
//| sl - óðîâåíü ñòîï |
//| tp - óðîâåíü òåéê |
//| mn - MagicNumber |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double Sl=0, double Tp=0, int mn=0) {
color clOpen;
datetime ot;
double pp, pa, pb, tp ,sl;
int dg, err, it, ticket=0;
string lsComm="";
if (sy=="" || sy=="0") sy=Symbol();
int stoplevel=MarketInfo(sy,MODE_STOPLEVEL);
int spread=MarketInfo(sy,MODE_SPREAD);
if(Tp!=0&&Tp<stoplevel+spread){Tp=stoplevel;}
if (op<1){
if (Sl>0) {sl=MarketInfo(Symbol(),MODE_ASK)-Sl*Point; }else {sl=0;}
if (Tp>0) {tp=MarketInfo(Symbol(),MODE_ASK)+Tp*Point; }else{ tp=0;}
}else{
if (Sl>0) {sl=MarketInfo(Symbol(),MODE_BID)+Sl*Point; }else{ sl=0;}
if (Tp>0) {tp=MarketInfo(Symbol(),MODE_BID)-Tp*Point;} else {tp=0;}}
if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
for (it=1; it<=NumberOfTry; it++) {
if (IsStopped()) {
Print("OpenPosition(): Îñòàíîâêà ðàáîòû ôóíêöèè");
break;}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
dg=MarketInfo(sy, MODE_DIGITS);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
if (op==OP_BUY) pp=pa; else pp=pb;
pp=NormalizeDouble(pp, dg);
ot=TimeCurrent();
if (MarketWatch)
ticket=OrderSend(sy, op, ll, pp, Slippage, 0, 0, lsComm, mn, 0, clOpen);
else
ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen);
if (ticket>0) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
err=GetLastError();
if (pa==0 && pb==0) Message("Ïðîâåðüòå â Îáçîðå ðûíêà íàëè÷èå ñèìâîëà "+sy);
// Âûâîä ñîîáùåíèÿ îá îøèáêå
if(print){
Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);}
// Áëîêèðîâêà ðàáîòû ñîâåòíèêà
if (err==2 || err==64 || err==65 || err==133) {
gbDisabled=True; break;
}
// Äëèòåëüíàÿ ïàóçà
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
if (err==128 || err==142 || err==143) {
Sleep(1000*66.666);
if (ExistPositions(sy, op, mn, ot)) {
if (UseSound) PlaySound(NameFileSound); break;
}
}
if (err==140 || err==148 || err==4110 || err==4111) break;
if (err==141) Sleep(1000*100);
if (err==145) Sleep(1000*17);
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
if (err!=135) Sleep(1000*7.7);
}
}
if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
}
}
//+----------------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---