Agent_Fx_v07_XZ_d

Author: Voloshin Yuri
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Commodity channel index
Miscellaneous
It issuies visual alerts to the screenIt plays sound alerts
0 Views
0 Downloads
0 Favorites
Agent_Fx_v07_XZ_d
//+------------------------------------------------------------------+
//|                                            Agent_Fx_v07_XZ_d.mq4 |
//|                                                    Voloshin Yuri |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Voloshin Yuri"
#property link      "http://www.metaquotes.net"
#define Magic 3017
extern string block_01 = " îñíîâíûå ïàðàìåòðû äëÿ èíäèêàòîðîâ";
extern double lots = 0.25;                	// Âåëè÷èíà òîðãóåìîãî ëîòà
extern int SL = 180;				    	// ÑòîïËîñ äëÿ îðäåðà, åñëè SL=0 çíà÷åíèå îïðåäåëÿåòñÿ ïî ïåðâîé ñâå÷å
extern int TP = 170;					    // ÒåéêÏðîôèò äëÿ îðäåðà
extern int DistSet = 10;    				// Äèñòàíöèÿ îò öåíû íà êîòîðóþ âûñòàâëÿåì îòëîæåííûé îðäåð
extern int kCCI = 27;    				    // Êîýôôèöèåíò îñíîâíîãî èíäèêàòîðà  
extern string block_02 = " íàñòðîéêà òðàëà ñòîïîâûõ îðäåðîâ";
extern bool UseTrailS = true;				// âêë/âûêë ôóíêöèè òðàëà ñòîïîâûõ îðäåðîâ
bool AllStopOrders = false;    				// Óïðàâëÿòü âñåìè ñòîïîâûìè îðäåðàìè
											// Åñëè ïîñòàâèòü íà îäèí ñ ïàðàìåòðîì AllSymbols=True, ñîâåòíèê áóäåò òðàëèòü âñå ñòîïîâûå îðäåðà. 
											// Íà íåñêîëüêî ãðàôèêîâ ñîâåòíèê íóæíî ñòàâèòü ñ ïàðàìåòðîì AllSymbols=False, ÷òîáû ðàçíûå êîïèè 
											// ñîâåòíèêîâ íå ìåøàëè äðóã äðóãó
extern int   TrailingStop  = 15;       		// Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int   TrailingStep  = 6;       		// Øàã òðàëà
extern bool  TrailSL       = true;
extern bool  TrailTP       = true;
bool  UseSound      = True;     			// Èñïîëüçîâàòü çâóêîâîé ñèãíàë
color clModifyBuy   = Aqua;     			// Öâåò çíà÷êà ìîäèôèêàöèè ïîêóïêè
color clModifySell  = Tomato;   			// Öâåò çíà÷êà ìîäèôèêàöèè ïðîäàæè
//------- Ãëîáàëüíûå ïåðåìåííûå òðàëà -------------------------------------+
string SoundSuccess  = "ok.wav";       		// Çâóê óñïåõà
string SoundError    = "timeout.wav";  		// Çâóê îøèáêè
int    NumberOfTry   = 4;              		// Êîëè÷åñòâî òîðãîâûõ ïîïûòîê
//------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé -----------------------------------------+
#include <stdlib.mqh>             			// Ñòàíäàðòíàÿ áèáëèîòåêà
#include <WinUser32.mqh>
extern string block_03 = " íàñòðîéêà òðàëà ðûíî÷íûõ îðäåðîâ";
extern bool UseTrailM = true;				// âêë/âûêë ôóíêöèè òðàëà ðûíî÷íûõ îðäåðîâ
bool  SymbolsAll = false;					// óïðàâëÿòü ñòîïëîñàìè âñåõ ñèìâîëîâ
extern int MinProfit = 6;					// ïóíêòîâ ïðîôèòà êîãäà òðåéëèíã íà÷èíàåò ðàáîòó
extern int Tr_Stop = 12;					// âåëè÷èíà òðàëà 
extern int Tr_Step = 1;						// øàã òðàëà 
extern string block_04 = " íàñòðîéêà ôóíêöèè óïðàâëåíèÿ êàïèòàëîì";
extern bool uplot = true;					// âêë/âûêë èçìåíåíèå âåëè÷èíû ëîòà
extern double lotmin = 0.1;					// íà÷àëüíîå çíà÷åíèå
extern double lotmax = 0.7;					// ïîòîëîê
extern double lotstep = 0.1;				// ïðèðàùåíèå ëîòà 
extern int lastprofit = 1; 					// ïðèíèìàåò çíà÷åíèÿ -1/1. 
											// -1 - óâåëè÷åíèå ëîòà ïîñëå ìèíóñîâîé ñäåëêè äî ïåðâîé ïëþñîâîé.
											// 1 - óâåëè÷åíèå ëîòà ïîñëå ïëþñîâîé ñäåëêè äî ïåðâîé ìèíóñîâîé.
//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------------+
double cci[10];
datetime LastCheck = 0;
int i, total;
int order_type;
int ticket;
int slip = 3;
double pAsk;
double pBid;
double ldStop;
double ldTake;
string     SMB; 
double     PNT;
int        MinLevel;
int init() {
SMB=Symbol();                                  //Ñèìâîë âàëþòíîé ïàðû
PNT=MarketInfo(SMB,MODE_POINT);                //Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè, 
                                               //äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé ïåðåìåííîé Point
MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);       //Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ
Proverka();
   return(0);
}
int deinit() {
//----
   
//----
   return(0);
}
// ========================================================
// =================== ÍÀ×ÈÍÀÅÌ ÐÀÁÎÒÓ ====================
// ========================================================
int start() { 
RefreshRates();
    // îïðåäåëÿåì íàëè÷èå äîñòàòî÷íûõ ñðåäñòâ íà äåïîçèòå
	if(AccountFreeMargin()<(1000*lots)) 
		{
		Print("We have no money. Free Margin = ", AccountFreeMargin());
		Alert("We have no money. Free Margin = ", AccountFreeMargin());
		}

	// îïðåäåëÿåì âðåìÿ äëÿ ðàñ÷åòîâ è ðàáîòû ýêñïåðòà
	if(DayOfWeek()!=0 || DayOfWeek()!=6)       // íå ðàáîòàåò â âûõîäíûå äíè.
	{	
		double j, swo_L, swo_Y, swo_R;
		int m,s,k;
	m=Time[0]+Period()*60-CurTime();           // îïðåäåëÿåì âðåìÿ íà ñâå÷å
	j=m/60.0;
	s=m%60;
	m=(m-m%60)/60;
	if (m == 00 && s < 20) order();            // óñëîâèå äëÿ ïðèíÿòèÿ ðåøåíèÿ â êîíöå êàæäîé ñâå÷è
	}	
return(0);
}
// ========================================================
// =============== ÔÓÍÊÖÈß ÏÐÎÂÅÐÊÈ ÎÐÄÅÐÎÂ ===============
// ========================================================
void order() {
	total=OrdersTotal();                       // ôóíêöèÿ ïðîâåðÿåò íàëè÷èå îòêðûòûõ îðäåðîâ
							                   // åñëè îðäåðîâ íåò, èùåì âîçìîæíîñòü îòêðûòèÿ
	if(total<1) 
	{
	// ôîðìèðóåì ìàñèâû èíäèêàòîðîâ è îïðåäåëÿåì òðåíä
	for(i=0; i<10; i++)
        {      
		cci[i] = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, i);
		}	
	raschet();  
	}	
	
	for (int i=0; i<OrdersTotal(); i++)        // åñëè îòêðûòûå îðäåðà èìåþòñÿ
	{
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
		{
	// âûáèðàåì ñòîïîâûå îðäåðà è ïåðåõîäèì íà îáðàáîòêó
		if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) 
			{
			if (UseTrailS) Tr_StOrd();
			}
	// âûáèðàåì ðûíî÷íûå îðäåðà è ïåðåõîäèì íà îáðàáîòêó
		if (OrderType() == OP_BUY || OrderType() == OP_SELL) 
			{
			if (UseTrailM) Tr_Mrkt();
			}
		}
	}
return;
} 
// ========================================================
// ============ ÈÙÅÌ ÂÎÇÌÎÆÍÎÑÒÜ ÎÒÊÐÛÒÜ ÎÐÄÅÐ ============
// ========================================================
void raschet() {
Comment("\n"," == ñîâåòíèê ÐÀÁÎÒÀÅÒ ==",
		"\n"," ======================",
		"\n"," ñïðåä = ", MarketInfo(Symbol(),MODE_SPREAD),
		"\n"," óðîâåíü ñòîï = ", MarketInfo(Symbol(),MODE_STOPLEVEL),
		"\n"," ======================",
		"\n"," Àíàëèçèðóþ ÈÍÄÈÊÀÒÎÐÛ ");
	
// óñëîâèå ïîêóïêè íà íèæíåé âåðøèíå
	if(cci[1]<5 && cci[2]<cci[3] && cci[1]<cci[2] && cci[0]>cci[1] && 
	Open[2]>Close[2] && Open[1]>Close[1] && Open[0]<Close[0] && Open[1]<Close[0]) pokypka();  
	  
// óñëîâèå ïðîäàæè íà âåðõíåé âåðøèíå
	if(cci[1]>-5 && cci[2]>cci[3] && cci[1]>cci[2] && cci[0]<cci[1] && 
	Open[2]<Close[2] && Open[1]<Close[1] && Open[0]>Close[0] && Open[1]>Close[0]) prodaza();  

return;
}
// ========================================================
// =================== ÎÒÊÐÛÂÀÅÌ ÎÐÄÅÐÀ ===================
// ========================================================
void pokypka() {                               // îòêðûâàåì ÑÒÎÏÎÂÛÉ îðäåð "ÊÓÏÈÒÜ"
	GetLots();                                 // îïðåäåëÿåì ðàçìåð ëîòà äëÿ òîðãîâëè
 	pAsk = Ask + DistSet*Point; 
 	if (SL!=0) ldStop=pAsk-SL*Point;
	if (SL==0) ldStop=Low[1]-7*Point;
    if (TP!=0) ldTake=pAsk+TP*Point;
ticket = OrderSend(Symbol(), OP_BUYSTOP, lots, pAsk, slip, ldStop, ldTake, NULL, Magic, 0, RoyalBlue);
    if (GetLastError()>0) Alert("îøèáêà ïîêóïêè = ", GetLastError());
	if (ticket>0) 
		{
Comment("\n"," == ñîâåòíèê ÐÀÁÎÒÀÅÒ ==",
		"\n"," ======================",
		"\n"," ñïðåä = ", MarketInfo(Symbol(),MODE_SPREAD),
		"\n"," óðîâåíü ñòîï = ", MarketInfo(Symbol(),MODE_STOPLEVEL),
		"\n"," ======================",
		"\n"," ÎÒÊÐÛË ÎÒËÎÆÅÍÍÛÉ îðäåð <<ÊÓÏÈÒÜ>>");
		}
return;
}
void prodaza() {                               // îòêðûâàåì ÑÒÎÏÎÂÛÉ îðäåð "ÏÐÎÄÀÒÜ"
	GetLots();                                 // îïðåäåëÿåì ðàçìåð ëîòà äëÿ òîðãîâëè 
	pBid=Bid - DistSet*Point;
	if (SL!=0) ldStop=pBid+SL*Point;
	if (SL==0) ldStop=High[1]+7*Point;
    if (TP!=0) ldTake=pBid-TP*Point;
ticket = OrderSend(Symbol(), OP_SELLSTOP, lots, pBid, slip, ldStop, ldTake, NULL, Magic, 0, DeepPink);
    if (GetLastError()>0) Alert("îøèáêà ïðîäàæè = ", GetLastError()); 
	if (ticket>0)
	{
Comment("\n"," == ñîâåòíèê ÐÀÁÎÒÀÅÒ ==",
		"\n"," ======================",
		"\n"," ñïðåä = ", MarketInfo(Symbol(),MODE_SPREAD),
		"\n"," óðîâåíü ñòîï = ", MarketInfo(Symbol(),MODE_STOPLEVEL),
		"\n"," ======================",
		"\n"," ÎÒÊÐÛË ÎÒËÎÆÅÍÍÛÉ îðäåð <<ÏÐÎÄÀÒÜ>>");
	}
return;
}
// ========================================================
// =========== ÐÀÁÎÒÀ Ñ ÎÒËÎÆÅÍÍÛÌÈ ÎÐÄÅÐÀÌÈ ==============
// ========================================================
void Tr_StOrd() {
	for (int i=0; i<OrdersTotal(); i++) 
	{
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
		{
		if (AllStopOrders || OrderSymbol()==Symbol()) 
			{
			TrailingOrders();
			}
		}
	}
return;
}
//+-------------------------------------------------------+
//| Ñîïðîâîæäåíèå îðäåðîâ ïðîñòûì òðàëîì                  |
//+-------------------------------------------------------+
void TrailingOrders() {
  double di, pa, pb, pp, sl, tp;

  pp=MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUYSTOP) 
  {
    pa=MarketInfo(OrderSymbol(), MODE_ASK);
    if (OrderOpenPrice()-pa>(TrailingStop+TrailingStep-1)*pp) 
    {
      di=OrderOpenPrice()-pa-TrailingStop*pp;
      if (TrailSL==true && OrderStopLoss()  >0) sl=OrderStopLoss()  -di; else sl=ldStop;
      if (TrailTP==true && OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=ldTake;
      ModifyOrder(pa+TrailingStop*pp, sl, tp);
    }
  }
  if (OrderType()==OP_SELLSTOP) 
  {
    pb=MarketInfo(OrderSymbol(), MODE_BID);
    if (pb-OrderOpenPrice()>(TrailingStop+TrailingStep-1)*pp) 
    {
      di=pb-OrderOpenPrice()-TrailingStop*pp;
      if (TrailSL==true && OrderStopLoss()  >0) sl=OrderStopLoss()  +di; else sl=ldStop;
      if (TrailTP==true && OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=ldTake;
      ModifyOrder(pb-TrailingStop*pp, sl, tp);
    }
  }
return;
}
//+-------------------------------------------------------+
//| Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ                    |
//|            çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ.          |
//+-------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
  if (condition) return(ifTrue); else return(ifFalse);
}
//+-------------------------------------------------------+
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî                         |
//| 		   ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà.          |
//+-------------------------------------------------------+
//| Ïàðàìåòðû:                                            |
//| pp - öåíà óñòàíîâêè îðäåðà                            |
//| sl - öåíîâîé óðîâåíü ñòîïà                            |
//| tp - öåíîâîé óðîâåíü òåéêà                            |
//| ex - äàòà èñòå÷åíèÿ                                   |
//+-------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
  bool   fm;
  color  cl=IIFc(OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
  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 (pp!=op || sl!=os || tp!=ot) {
    for (it=1; it<=NumberOfTry; it++) {
      RefreshRates();
      fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
      if (fm) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        er=GetLastError();
        if (UseSound) PlaySound(SoundError);
        pa=MarketInfo(OrderSymbol(), MODE_ASK);
        pb=MarketInfo(OrderSymbol(), MODE_BID);
        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);
      }
    }
  }
return;
}
//+-------------------------------------------------------+
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè  |
//+-------------------------------------------------------+
//| Ïàðàìåòðû:                                            |
//| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè                  |
//+-------------------------------------------------------+
string GetNameOP(int op) {
	switch (op) 
	{
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
	}
return;
}
// ========================================================
// =============== ÒÐÀË ÐÛÍÎ×ÍÛÕ ÎÐÄÅÐΠ==================
// ========================================================
void Tr_Mrkt() {  
	for (int i=0; i<OrdersTotal(); i++) 
	{
		if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
		{
		if (SymbolsAll || OrderSymbol()==Symbol()) 
			{
			TrailPositions();
			}
		}
	}
return;
}
void TrailPositions() { 
	int cnt = OrdersTotal();
	for (int i=0; i<cnt; i++) 
	{
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;        
    if (OrderType() == OP_BUY) 
	{
Comment("\n"," == ñîâåòíèê ÐÀÁÎÒÀÅÒ ==",
		"\n"," ======================",
		"\n"," ñïðåä = ", MarketInfo(Symbol(),MODE_SPREAD),
		"\n"," óðîâåíü ñòîï = ", MarketInfo(Symbol(),MODE_STOPLEVEL),
		"\n"," ======================",
		"\n"," Òðàëèì ÐÛÍÎ×ÍÛÉ îðäåð <<ÊÓÏÈÒÜ>>");
    if (Bid-OrderOpenPrice() > MinProfit*Point) 
		{
        if (OrderStopLoss() < Bid-(Tr_Stop+Tr_Step-1)*Point) 
			{
			OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Tr_Stop*Point, OrderTakeProfit(), 0, Blue);
			}
		}
    }

    if (OrderType() == OP_SELL) 
		{
Comment("\n"," == ñîâåòíèê ÐÀÁÎÒÀÅÒ ==",
		"\n"," ======================",
		"\n"," ñïðåä = ", MarketInfo(Symbol(),MODE_SPREAD),
		"\n"," óðîâåíü ñòîï = ", MarketInfo(Symbol(),MODE_STOPLEVEL),
		"\n"," ======================",
		"\n"," Òðàëèì ÐÛÍÎ×ÍÛÉ îðäåð <<ÏÐÎÄÀÒÜ>>");	
		if (OrderOpenPrice()-Ask > MinProfit*Point) 
			{
			if (OrderStopLoss() > Ask+(Tr_Stop+Tr_Step-1)*Point || OrderStopLoss() == 0) 
				{
				OrderModify(OrderTicket(), OrderOpenPrice(), Ask+Tr_Stop*Point, OrderTakeProfit(), 0, Blue);
				}
			}
		}
	}
return;
}
// ========================================================
// ============ ÔÓÍÊÖÈß ÓÏÐÀÂËÅÍÈß ÊÀÏÈÒÀËÎÌ ==============
// ========================================================
double GetLots() { 
  lots = lots;
  if (!uplot) return (lots);
  
  int ticket = GetLastOrderHist();
  if (ticket == -1) return (lots);
  
  if (!OrderSelect(ticket, SELECT_BY_TICKET, MODE_HISTORY)) return (lots);
  if (OrderProfit()*lastprofit < 0) return (lots);
  
  lots = MathMin(OrderLots() + lotstep, lotmax);
  
//Alert("  ÔÓÍÊÖÈß óïðàâëåíèÿ êàïèòàëîì   ");  
return (lots);
}
int GetLastOrderHist(int type = -1) {
  int ticket = -1;
  datetime dt = 0;
  int cnt = HistoryTotal();
    
  for (int i=0; i < cnt; i++) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
//Îïöèîíàëüíî
    if (OrderSymbol() != Symbol()) continue;
//Îïöèîíàëüíî
    if (OrderMagicNumber() != Magic) continue;
    if (type != -1 && OrderType() != type) continue;
    
    if (OrderCloseTime() > dt) {
      dt = OrderCloseTime();
      ticket = OrderTicket();
    }
  }
return (ticket);
}
// ======================= Ïðîâåðêà êîððåêòíîñòè ïîëüçîâàòåëüñêèõ óñòàíîâîê =============================================
void Proverka()
{
if(Tr_Stop<MinLevel && Tr_Stop!=0) {Comment("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Print("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Alert("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          return(0);}                                       
   if(Tr_Step>=MinLevel && Tr_Step==0) {Comment("Îøèáêà! Øàã òðåéëèíãà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          Print("Îøèáêà! Øàã òðåéëèíãà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          Alert("Îøèáêà! Øàã òðåéëèíãà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          return(0);}                                       
   if(TP<MinLevel && TP!=0) {Comment("Îøèáêà! TP íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Print("Îøèáêà! TP íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Alert("Îøèáêà! TP íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          return(0);}
   if(SL<MinLevel && SL!=0) {Comment("Îøèáêà! SL íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Print("Îøèáêà! SL íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Alert("Îøèáêà! SL íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          return(0);}
   if(DistSet<MinLevel && DistSet!=0) {Comment("Îøèáêà! DistSet íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Print("Îøèáêà! DistSet íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Alert("Îøèáêà! DistSet íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          return(0);}
   if(TrailingStop<MinLevel && TrailingStop!=0) {Comment("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
                                          return(0);}
   if(TrailingStep>=MinLevel && TrailingStep==0) {Comment("Îøèáêà! øàã òàðàëà ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
                                          return(0);}
}
// ============================================================================================================================





Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---