1-___________ _____





//+------------------------------------------------------------------+
//|                                           (SendPendingOrder).mq4 |
//|                                      Copyright © 2005, komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
/*1. Äîáàâëåí êîíòðîëü MagicNumber è ñîîòâåòñòâóþùèé ïàðàìåòð.
Åñëè ïàðàìåòð <= 0, òî ýêñïåðò êàê è ðàíüøå îáðàáàòûâàåò âñå îðäåðà.
Åñëè ïàðàìåòð > 0, òî îí ïîìå÷àåò ñâîè îðäåðà è óïðàâëÿåò òîëüêî èìè.
Ìàäæèê òàêæå ïèøåòñÿ â êîììåíò ê îðäåðó äëÿ êîíòðîëÿ ÷åé îðäåð.

2. Ââåäåí ÒðåéëèíãÑòîï è ñîîòâåòñòâóþùèé ïàðàìåòð.
Òðåéëèíã çàäàåòñÿ â ïèïñàõ.
Åñëè îí <= 10, òî ðàáîòàåò êàê ðàíüøå áåç òðåéëèíãà.
Åñëè îí > 10, òî èñïîëüçóåòñÿ áëèæàéøåå ê öåíå çíà÷åíèå èç òðåéëèíãà è ëèíèè ñòîïà

Ëèíèÿ Buy äîïîëíèòåëüíî âûïîëíÿåò ðîëü SellTake.
Ëèíèÿ Sell äîïîëíèòåëüíî âûïîëíÿåò ðîëü BuyTake.
Ëèíèÿ Stop íèæå öåíû äîïîëíèòåëüíî âûïîëíÿåò ðîëü SellTake.
Ëèíèÿ Stop âûøå öåíû äîïîëíèòåëüíî âûïîëíÿåò ðîëü BuyTake.
Ëèíèÿ Take íèæå öåíû äîïîëíèòåëüíî âûïîëíÿåò ðîëü BuyStop.
Ëèíèÿ Take âûøå öåíû äîïîëíèòåëüíî âûïîëíÿåò ðîëü SellStop.

Ïîëó÷àåòñÿ, ÷òî ëèíèè Stop è Take äóáëèðóþò äðóã äðóãà.
À ëèíèÿ Sell íå òîëüêî îòêðûâàåò øîðò, íî è çàêðûâàåò ëîíãîâóþ ïîçèöèþ.
Ò.å. äåëàåò ïåðåâîðîò.

Ñìûñëîâ òóò íåñêîëüêî.
Îáúÿñíÿòü äîëãî, è íà êàðòèíêàõ íóæíî.
 îáùåì ïîñìîòðèòå ñàìè, åñëè íåïîíðàâèòñÿ, ìîæíî çàêîìåíòèðîâàòü ýòè îïåðàòîðû.

Ïðèìåð äëÿ Buy:


...............
         if (ObjDesc == "Buy")  
         {
            pBuy      = SetLevel(pBuy,  Price, ObjName, 1);  //  <--- îñíîâíîé îïåðàòîð (êàê â 1 âåðñèè)
            pSellTake = SetLevel(pSellTake,  Price);  // <--- âòîðîé ñìûñë, åå ìîæíî çàêîìåíòèðîâàòü
         } else
.............
*/
#property copyright "Copyright © 2005, komposter"
#property link      "mailto:komposterius@mail.ru"

/*
-----------------------------Â-Í-È-Ì-À-Í-È-Å---------------------------------
Ïåðåä çàïóñêîì ñêðèïòà íàñòîÿòåëüíî ðåêîìåíäóþ èçó÷èòü ñëåäóþùåå ðóêîâîäñòâî:

Ñêðèïò ïðåäíàçíà÷åí äëÿ óñòàíîâêè îòëîæåííîãî îðäåðà.
Äëÿ ýòîãî íåîáõîäèìî:
 1) Îçíàêîìèòüñÿ ñ äàííûì ðóêîâîäñòâîì =), !óñòàíîâèòü çíà÷åíèÿ ïî óìîë÷àíèþ! (íàõîäÿòñÿ ïîä îïèñàíèåì,
 	 íà÷èíàþòñÿ è çàêàí÷èâàþòñÿ ñòðîêîé //+----------------------------------------------+ ),
 	 ðàçðåøèòü èìïîðò âíåøíèõ ýêñïåðòîâ ÷åðåç ìåíþ
 	 "Ñåðâèñ" -> "Íàñòðîéêè" -> "Ñîâåòíèêè" -> "Ðàçðåøèòü èìïîðòèðîâàíèå âíåøíèõ ýêñïåðòîâ"
 	 (íåîáõîäèìî äëÿ îïèñàíèÿ îøèáêè, êîòîðàÿ ìîæåò âîçíèêíóòü ïðè óñòàíîâêå îðäåðà)
 2) Ïåðåòàùèòü ñêðèïò íà ãðàôèê. Ïðè ýòîì ó÷èòûâàòü, ÷òî ìåñòî ïðèêðåïëåíèÿ - ýòî áóäóùàÿ
 	 öåíà îòêðûòèÿ (OpenPrice).  ïðîöåññå óñòàíîâêè å¸ ìîæíî áóäåò ìåíÿòü, íî äëÿ óïðîùåíèÿ
 	 ðàáîòû ðåêîìåíäóþ ïåðåòàñêèâàòü ñêðèïò ñðàçó íà íóæíûé óðîâåíü.
 3) Ïåðåìåñòèòü âñå ëèíèè íà íåîáõîäèìûå óðîâíè:
		- Open_Price_Line (ïî óìîë÷àíèþ - áåëàÿ) - öåíà îòêðûòèÿ  (ÎÁßÇÀÒÅËÜÍÀß ëèíèÿ)
		- Stop_Loss_Line (êðàñíàÿ) - óðîâåíü Ñòîï Ëîññ (ÎÁßÇÀÒÅËÜÍÀß)
		- Take_Profit_Line (çåë¸íàÿ) - óðîâåíü Òåéê Ïðîôèò (íåîáÿçàòåëüíàÿ)
		- Expiration_Line (æ¸ëòàÿ) - âðåìÿ èñòå÷åíèÿ (íåîáÿçàòåëüíàÿ)
		(íåîáÿçàòåëüíûå ëèíèè ìîæíî óäàëÿòü)
		- "````" - ðàçìåð ïîçèöèè. Íåîáõîäèìî óñòàíîâèòü íàïðîòèâ íóæíîãî çíà÷åíèÿ (îò 0,1 äî 10 ëîòîâ)
	Â çàâèñèìîñòè îò ðàñïîëîæåíèÿ ëèíèé Open_Price è Stop_Loss âûáèðàåòñÿ òèï îðäåðà:
	Open_Price  >  Bid è Open_Price  >  Stop_Loss  -  BUYSTOP-îðäåð,
	Open_Price  >  Bid è Open_Price  <  Stop_Loss  -  SELLLIMIT-îðäåð,
	Open_Price  <  Ask è Open_Price  >  Stop_Loss  -  BUYLIMIT-îðäåð,
	Open_Price  <  Ask è Open_Price  <  Stop_Loss  -  SELLSTOP-îðäåð.
 4) Êîãäà âñ¸ áóäåò ãîòîâî, â ïîÿâèâøåìñÿ îêíå íàæàòü êíîïêó "ÎÊ".
 
 
 Äëÿ ïðåêðàùåíèÿ ðàáîòû ñêðèïòà â ëþáîé ìîìåíò ìîæíî âîñïîëüçîâàòüñÿ êíîïêîé "Îòìåíà".
 Åñëè Âàìè áóäåò íàéäåíà îøèáêà â êîäå, èëè â ëîãèêå ðàáîòû ñêðèïòà, ïðîñüáà ñîîáùèòü íà komposterius@mail.ru
*/
//+------------------------------------------------------------------+
// Âñå íèæåîïèñàííûå ïåðåìåííûå ìîæíî áóäåò èçìåíèòü â îêíå ñâîéñòâ ñêðèïòà,
// êîòîðîå îòêðîåòñÿ ïðè ïðèêðåïëåíèè. Ýòî ïîëåçíî, íàïðèìåð, ïðè íåîáõîäèìîñòè âûáðàòü
// íåïðåäñòàâëåííûé â ñïèñêå "Lots" ðàçìåð ïîçèöèè. Äëÿ ýòîãî, íàïèñàâ íóæíóþ öèôðó â îêíå ñâîéñòâ (íàïðèìåð, 1.5),
// ÍÅ ÄÂÈÃÀÉÒÅ óêàçàòåëü ðàçìåðà ëîòà ( "````" ).
// Åñëè îêíî ñâîéñòâ íå íóæíî, íàäî çàêîììåíòèðîâàòü ñëåäóþùóþ ñòðîêó (ïîñòàâèòü â íà÷àëî //)
#property show_inputs


// Òèï îðäåðà ïî óìîë÷àíèþ (âëèÿåò íà íà÷àëüíîå ðàñïîëîæåíèå ëèíèé ñòîï-ëîññ è òåéê-ïðîôèò)
extern int _OrderType = 1; //( "1" - BUYSTOP èëè BUYLIMIT, "-1" - SELLSTOP èëè SELLLIMIT )

// Îáü¸ì ñäåëêè ïî óìîë÷àíèþ (ìîæíî ìåíÿòü â ïðîöåññå ðàáîòû)
// îò 0.1 äî 1.0 ñ øàãîì 0.1, îò 1 äî 10 ñ øàãîì 1
extern double Lots = 0.1;

// Ðàññòîÿíèå ìåæäó ëèíèåé Take_Profit/Stop_Loss è ëèíèåé Open_Price â ïóíêòàõ ïî óìîë÷àíèþ.
// Åñëè Take_Profit èñïîëüçîâàòüñÿ íå áóäåò, óñòàíîâèòå 0
extern int Stop_Loss = 50;
extern int Take_Profit = 50;

// Ìàêñèìàëüíîå îòêëîíåíèå îò çàïðîøåííîé öåíû
extern int Slippage = 5;

// Êîììåíòàðèé ê îðäåðó
extern string _Comment = "Opened by script";

// Order ID
extern int MagicNumber = 0;

// Âðåìÿ èñòå÷åíèÿ îðäåðà, âûðàæåííîå â ñâå÷àõ
// Äëÿ ïåðèîäà ãðàôèêà H4 è Expiration_Shift = 3 âðåìÿ èñòå÷åíèÿ íàñòóïèò ÷åðåç 12 ÷àñîâ ïîñëå óñòàíîâêè
// Åñëè íåîáõîäèìî ñòàíäàðòíîå âðåìÿ èñòå÷åíèÿ äëÿ âñåõ ïåðèîäîâ ãðàôèêà, óêàæèòå "0" (áåç êàâû÷åê), è ïåðåõîäèòå ê ñëåäóþùåé íàñòðîéêå
// Åñëè âðåìÿ èñòå÷åíèÿ îðäåðà èñïîëüçîâàòüñÿ íå áóäåò, óñòàíîâèòå 0
extern int Expiration_Shift = 0;
// Âðåìÿ èñòå÷åíèÿ îðäåðà, âûðàæåííîå â ÷àñàõ
// Äëÿ òîãî, ÷òîá èñïîëüçîâàòü ýòó íàñòðîéêó, íåîáõîäèìî óñòàíîâèòü Expiration_Shift (ñì. âûøå íà 2 ñòðîêè) "0" (áåç êàâû÷åê)
// Åñëè âðåìÿ èñòå÷åíèÿ îðäåðà èñïîëüçîâàòüñÿ íå áóäåò, óñòàíîâèòå 0
extern int Expiration_Shift_H = 0;

extern string Order_Color = "----------------------------------------------------------------------------------------";
// Öâåòà îòîáðàæåíèÿ îðäåðîâ íà ãðàôèêå
extern color Buy_Color = Lime; //( äëÿ îðäåðîâ BUYSTOP è BUYLIMIT )
extern color Sell_Color = Red; //( äëÿ îðäåðîâ SELLLIMIT è SELLSTOP )

extern string Line_Color = "----------------------------------------------------------------------------------------";
// Öâåòà ëèíèé:
extern color Open_Price_Line_Color = White;
extern color Stop_Loss_Line_Color = Red;
extern color Take_Profit_Line_Color = Lime;
extern color Expiration_Line_Color = Yellow;

//+------------------------------------------------------------------+

#include <stdlib.mqh>
int first = 1;
int start()
{
// Óñòàíîâêà íà÷àëüíûõ çíà÷åíèé:
double Open_Price_Level, Stop_Loss_Level, Take_Profit_Level;
datetime Expiration_Time;
// ---Open_Price_Level
	Open_Price_Level = PriceOnDropped();
	if ( Open_Price_Level <= 0 )
		{ Open_Price_Level = Bid + MarketInfo( Symbol(), MODE_STOPLEVEL )*Point; }
// ---Stop_Loss_Level
	Stop_Loss_Level = Open_Price_Level - Stop_Loss * Point;
// ---Take_Profit_Level
	if ( Take_Profit > 0 )
	{ Take_Profit_Level = Open_Price_Level + Take_Profit * Point; }

if ( _OrderType == -1 )
{
// ---Open_Price_Level
	Open_Price_Level = PriceOnDropped();
	if ( Open_Price_Level <= 0 )
		{ Open_Price_Level = Ask - MarketInfo( Symbol(), MODE_STOPLEVEL )*Point; }
// ---Stop_Loss_Level
	Stop_Loss_Level = Open_Price_Level + Stop_Loss * Point;
// ---Take_Profit_Level
	if ( Take_Profit > 0 )
	{ Take_Profit_Level = Open_Price_Level - Take_Profit * Point; }
}

// ---Expiration_Time
	if ( Expiration_Shift > 0 )
	{ Expiration_Time = CurTime() + Period()*60*Expiration_Shift; }
	else
	{
		if ( Expiration_Shift_H > 0 )
			{ Expiration_Time = CurTime() + 3600*Expiration_Shift_H; }
	}
// Ñîçäàíèå ëèíèé:
if ( first == 1 )
{
	ObjectCreate( "Open_Price_Line", OBJ_HLINE, 0, 0, Open_Price_Level, 0, 0, 0, 0 );
	ObjectSet( "Open_Price_Line", OBJPROP_COLOR, Open_Price_Line_Color );
	ObjectSetText( "Open_Price_Line", "Open_Price_Line", 6, "Arial", Open_Price_Line_Color );

	ObjectCreate( "Stop_Loss_Line", OBJ_HLINE, 0, 0, Stop_Loss_Level, 0, 0, 0, 0 );
	ObjectSet( "Stop_Loss_Line", OBJPROP_COLOR, Stop_Loss_Line_Color );
	ObjectSetText( "Stop_Loss_Line", "Stop_Loss_Line", 6, "Arial", Stop_Loss_Line_Color );

	if ( Take_Profit_Level > 0 )
	{
		ObjectCreate( "Take_Profit_Line", OBJ_HLINE, 0, 0, Take_Profit_Level, 0, 0, 0, 0 );
		ObjectSet( "Take_Profit_Line", OBJPROP_COLOR, Take_Profit_Line_Color );
		ObjectSetText( "Take_Profit_Line", "Take_Profit_Line", 6, "Arial", Take_Profit_Line_Color );
	}

	if ( Expiration_Time > 0 )
	{
		ObjectCreate( "Expiration_Line", OBJ_VLINE, 0, Expiration_Time, 0, 0, 0, 0, 0 );
		ObjectSet( "Expiration_Line", OBJPROP_COLOR, Expiration_Line_Color );
		ObjectSetText( "Expiration_Line", "Expiration_Line", 6, "Arial", Expiration_Line_Color );
	}
// ñîçäàíèå "Øêàëû ðàçìåðà ëîòà" è óñòàíîâêà íà çíà÷åíèå ïî óìîë÷àíèþ
	int Lots_value_y = 30;
	switch ( Lots )
	{
		case 0.2: Lots_value_y = 45; break;
		case 0.3: Lots_value_y = 60; break;
		case 0.4: Lots_value_y = 75; break;
		case 0.5: Lots_value_y = 90; break;
		case 0.6: Lots_value_y = 105; break;
		case 0.7: Lots_value_y = 120; break;
		case 0.8: Lots_value_y = 135; break;
		case 0.9: Lots_value_y = 150; break;
		case 1.0: Lots_value_y = 165; break;
		case 2.0: Lots_value_y = 180; break;
		case 3.0: Lots_value_y = 195; break;
		case 4.0: Lots_value_y = 210; break;
		case 5.0: Lots_value_y = 225; break;
		case 6.0: Lots_value_y = 240; break;
		case 7.0: Lots_value_y = 255; break;
		case 8.0: Lots_value_y = 270; break;
		case 9.0: Lots_value_y = 285; break;
		case 10.0: Lots_value_y = 300; break;
	}
	if ( Lots > 10.0 ) Lots_value_y = 315;
	int Lots_value_y_start_position = Lots_value_y;
	
	ObjectCreate( "Lots", OBJ_LABEL, 0,0,0,0,0,0,0);
	ObjectSet( "Lots", OBJPROP_CORNER, 1);
	ObjectSet( "Lots", OBJPROP_XDISTANCE, 1);
	ObjectSet( "Lots", OBJPROP_YDISTANCE, 10);
	ObjectSetText(  "Lots", "Lots", 10, "Arial", Open_Price_Line_Color);

	ObjectCreate( "Lots_value", OBJ_LABEL, 0,0,0,0,0,0,0);
	ObjectSet( "Lots_value", OBJPROP_CORNER, 1);
	ObjectSet( "Lots_value", OBJPROP_XDISTANCE, 25);
	ObjectSet( "Lots_value", OBJPROP_YDISTANCE, Lots_value_y);
	ObjectSetText(  "Lots_value", "`````", 10, "Arial", Open_Price_Line_Color);

	int y = 25;
	for ( double z = 0.1; z <= 1; z += 0.1 )
	{
		ObjectCreate( DoubleToStr( z, 1 ), OBJ_LABEL, 0,0,0,0,0,0,0);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_CORNER, 1);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_XDISTANCE, 1);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_YDISTANCE, y);
		ObjectSetText(  DoubleToStr( z, 1 ), DoubleToStr( z, 1 ), 10, "Arial", Open_Price_Line_Color);
		y += 15;
	}
	y = 160;
	for ( z = 1; z <= 10; z ++ )
	{
		ObjectCreate( DoubleToStr( z, 1 ), OBJ_LABEL, 0,0,0,0,0,0,0);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_CORNER, 1);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_XDISTANCE, 1);
		ObjectSet( DoubleToStr( z, 1 ), OBJPROP_YDISTANCE, y);
		ObjectSetText(  DoubleToStr( z, 1 ), DoubleToStr( z, 1 ), 10, "Arial", Open_Price_Line_Color);
		y += 15;
	}
	ObjectCreate( ">", OBJ_LABEL, 0,0,0,0,0,0,0);
	ObjectSet( ">", OBJPROP_CORNER, 1);
	ObjectSet( ">", OBJPROP_XDISTANCE, 1);
	ObjectSet( ">", OBJPROP_YDISTANCE, 310);
	ObjectSetText(  ">", ">10", 10, "Arial", Open_Price_Line_Color);

// âûâîä ìåññåäæáîêñà
	string Question = "Äëÿ óñòàíîâêè îðäåðà ïåðåìåñòèòå ëèíèè íà íåîáõîäèìûå óðîâíè è íàæìèòå \"ÎÊ\".\n" + 
							"×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".";
	int  Answer = MessageBox( Question, "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000001 | 0x00000040 | 0x00040000 );
	first = 0;
	// åñëè íàæàòà ëþáàÿ êðîìå "ÎÊ" êíîïêà - âûõîäèì
	if ( Answer != 1 ) { deinit(); return(0); }
}

// ñ÷èòûâàåì çíà÷åíèÿ ñ îáúåêòîâ è íîðìàëèçóåì:

// ðàçìåð ëîòà
	Lots_value_y = ObjectGet( "Lots_value", OBJPROP_YDISTANCE );
	if ( Lots_value_y_start_position != Lots_value_y )
	{
		Lots = 0.1;
		if ( Lots_value_y >= 35  && Lots_value_y < 50  ) Lots = 0.2;
		if ( Lots_value_y >= 50  && Lots_value_y < 65  ) Lots = 0.3;
		if ( Lots_value_y >= 65  && Lots_value_y < 80  ) Lots = 0.4;
		if ( Lots_value_y >= 80  && Lots_value_y < 95  ) Lots = 0.5;
		if ( Lots_value_y >= 95  && Lots_value_y < 110 ) Lots = 0.6;
		if ( Lots_value_y >= 110 && Lots_value_y < 125 ) Lots = 0.7;
		if ( Lots_value_y >= 125 && Lots_value_y < 140 ) Lots = 0.8;
		if ( Lots_value_y >= 140 && Lots_value_y < 155 ) Lots = 0.9;
		if ( Lots_value_y >= 155 && Lots_value_y < 170 ) Lots = 1.0;
		if ( Lots_value_y >= 170 && Lots_value_y < 185 ) Lots = 2.0;
		if ( Lots_value_y >= 185 && Lots_value_y < 200 ) Lots = 3.0;
		if ( Lots_value_y >= 200 && Lots_value_y < 215 ) Lots = 4.0;
		if ( Lots_value_y >= 215 && Lots_value_y < 230 ) Lots = 5.0;
		if ( Lots_value_y >= 230 && Lots_value_y < 245 ) Lots = 6.0;
		if ( Lots_value_y >= 245 && Lots_value_y < 260 ) Lots = 7.0;
		if ( Lots_value_y >= 260 && Lots_value_y < 275 ) Lots = 8.0;
		if ( Lots_value_y >= 275 && Lots_value_y < 290 ) Lots = 9.0;
		if ( Lots_value_y >= 290 							  ) Lots = 10.0;
	}
	Lots = NormalizeDouble( Lots, 1 );
// Open_Price
	Open_Price_Level = NormalizeDouble( ObjectGet( "Open_Price_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
// Stop_Loss
	Stop_Loss_Level = NormalizeDouble( ObjectGet( "Stop_Loss_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
// Take_Profit
	Take_Profit_Level = NormalizeDouble( ObjectGet( "Take_Profit_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
// Expiration_Time
	Expiration_Time = ObjectGet( "Expiration_Line", OBJPROP_TIME1 );
	
// îïðåäåëÿåì òèï îðäåðà
	if ( Open_Price_Level - Bid >= 0 )
	{
		if ( Open_Price_Level - Stop_Loss_Level > 0 )
		{ _OrderType = OP_BUYSTOP; }
		else
		{ _OrderType = OP_SELLLIMIT; }
	}
	else
	{
		if ( Open_Price_Level - Stop_Loss_Level > 0 )
		{ _OrderType = OP_BUYLIMIT; }
		else
		{ _OrderType = OP_SELLSTOP; }
	}

color _Color;
// ïðîâåðÿåì âñå çíà÷åíèÿ
	if ( _OrderType == OP_BUYLIMIT || _OrderType == OP_BUYSTOP )
	{
		_Color = Buy_Color;
		if ( Open_Price_Level - Stop_Loss_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
		{
			Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåíà Stop_Loss_Line (êðàñíàÿ ëèíèÿ)!\n" + 
					 		 			 "\n" +
					 		 			 "Äëÿ BuyLimit è BuyStop - îðäåðîâ îíà äîëæíà áûòü ÍÈÆÅ ëèíèè Open_Price_Line.	\n" + 
					 		 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 "\n\n" +
					 		 			 "×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 "×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
			if ( Answer == 4 ) { ObjectsRedraw(); start(); }
			deinit();
			return(-1);
		}
		if ( Take_Profit_Level - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level > 0 )
		{
			Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåíà Take_Profit_Line (çåë¸íàÿ ëèíèÿ)!\n" + 
					 		 			 "\n" +
					 		 			 "Äëÿ BuyLimit è BuyStop - îðäåðîâ îíà äîëæíà áûòü ÂÛØÅ ëèíèè Open_Price_Line.	\n" + 
					 		 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 "\n\n" +
					 		 			 "×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 "×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
			if ( Answer == 4 ) { ObjectsRedraw(); start(); }
			deinit();
			return(-1);
		}
		if ( _OrderType == OP_BUYSTOP )
		{
			if ( Open_Price_Level - Bid < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
			{
				Answer = MessageBox( "Íåïðàâèëüíî óñòàíîâëåíà Open_Price_Line (áåëàÿ ëèíèÿ)!\n" + 
					 		 			 	"\n" +
					 		 			 	"Äëÿ BuyStop - îðäåðà îíà äîëæíà áûòü ÂÛØÅ òåêóùåé öåíû.	\n" + 
					 		 			 	"Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 	"\n\n" +
					 		 			 	"×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 	"×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
				if ( Answer == 4 ) { ObjectsRedraw(); start(); }
				deinit();
				return(-1);
			}
		}
		else
		{
			if ( Bid - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
			{
				Answer = MessageBox( "Íåïðàâèëüíî óñòàíîâëåíà Open_Price_Line (áåëàÿ ëèíèÿ)!\n" + 
					 		 			 	"\n" +
					 		 			 	"Äëÿ BuyLimit - îðäåðà îíà äîëæíà áûòü ÍÈÆÅ òåêóùåé öåíû.	\n" + 
					 		 			 	"Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 	"\n\n" +
					 		 			 	"×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 	"×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
				if ( Answer == 4 ) { ObjectsRedraw(); start(); }
				deinit();
				return(-1);
			}
		}
	}
	if ( _OrderType == OP_SELLLIMIT || _OrderType == OP_SELLSTOP )
	{
		_Color = Sell_Color;
		if ( Stop_Loss_Level - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
		{
			Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåíà Stop_Loss_Line (êðàñíàÿ ëèíèÿ)!\n" + 
					 		 			 "\n" +
					 		 			 "Äëÿ SellLimit è SellStop - îðäåðîâ îíà äîëæíà áûòü ÂÛØÅ ëèíèè Open_Price_Line.	\n" + 
					 		 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 "\n\n" +
					 		 			 "×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 "×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
			if ( Answer == 4 ) { ObjectsRedraw(); start(); }
			deinit();
			return(-1);
		}
		if ( Open_Price_Level - Take_Profit_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level > 0 )
		{
			Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåíà Take_Profit_Line (çåë¸íàÿ ëèíèÿ)!\n" + 
					 		 			 "\n" +
					 		 			 "Äëÿ SellLimit è SellStop - îðäåðîâ îíà äîëæíà áûòü ÍÈÆÅ ëèíèè Open_Price_Line.	\n" + 
					 		 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 "\n\n" +
					 		 			 "×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 "×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
			if ( Answer == 4 ) { ObjectsRedraw(); start(); }
			deinit();
			return(-1);
		}
		if ( _OrderType == OP_SELLLIMIT )
		{
			if ( Open_Price_Level - Ask < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
			{
				Answer = MessageBox( "Íåïðàâèëüíî óñòàíîâëåíà Open_Price_Line (áåëàÿ ëèíèÿ)!\n" + 
					 		 			 	"\n" +
					 		 			 	"Äëÿ SellLimit - îðäåðà îíà äîëæíà áûòü ÍÈÆÅ òåêóùåé öåíû.	\n" + 
					 		 			 	"Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 	"\n\n" +
					 		 			 	"×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 	"×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
				if ( Answer == 4 ) { ObjectsRedraw(); start(); }
				deinit();
				return(-1);
			}
		}
		else
		{
			if ( Ask - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point )
			{
				Answer = MessageBox( "Íåïðàâèëüíî óñòàíîâëåíà Open_Price_Line (áåëàÿ ëèíèÿ)!\n" + 
					 		 			 	"\n" +
					 		 			 	"Äëÿ SellStop - îðäåðà îíà äîëæíà áûòü ÂÛØÅ òåêóùåé öåíû.	\n" + 
					 		 			 	"Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 			 	"\n\n" +
					 		 			 	"×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 	"×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
				if ( Answer == 4 ) { ObjectsRedraw(); start(); }
				deinit();
				return(-1);
			}
		}
	}

	if ( Expiration_Time <= CurTime() && Expiration_Time > 0 )
	{
			Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåíà Expiration_Line (æ¸ëòàÿ ëèíèÿ)!\n" + 
					 		 			 "\n" +
					 		 			 "Ñðîê èñòå÷åíèÿ îðäåðà íå ìîæåò áûòü â ïðîøåäøåì âðåìåíè!		\n" + 
					 		 			 "\n\n" +
					 		 			 "×òîáû íà÷àòü óñòàíîâêó ñ íà÷àëà, íàæìèòå \"Ïîâòîð\".\n" +
					 		 			 "×òîá îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Óñòàíîâêà îòëîæåííîãî îðäåðà", 0x00000005 | 0x00000030 | 0x00040000 );
			if ( Answer == 4 ) { ObjectsRedraw(); start(); }
			deinit();
			return(-1);
	}
	
// âûâîäèì èíôó î çàïðîñå è ïûòàåìñÿ óñòàíîâèòü îðäåð
	Print( "Symbol=",Symbol(), ",_OrderType=",_OrderType, ",Lots=",Lots, ",Open_Price_Level=",Open_Price_Level, ",Slippage=", Slippage, ",Stop_Loss_Level=", Stop_Loss_Level, ",Take_Profit_Level=", Take_Profit_Level, ",_Comment=", _Comment, ",MagicNumber=", MagicNumber, ",Expiration_Time=", Expiration_Time, ",_Color=", _Color );
	int ordersend = OrderSend( Symbol(), _OrderType, Lots, Open_Price_Level, Slippage, Stop_Loss_Level, Take_Profit_Level, _Comment, MagicNumber, Expiration_Time, _Color );
	if ( ordersend > 0 )
	{
// åñëè âñ¸ îê, âûâîäèì ëîã è âûõîäèì
		OrderPrint();
		Print( "Îðäåð ¹", ordersend, " óñòàíîâëåí óñïåøíî!");
		return(0);
	}
// åñëè îøèáêà - âûâîäèì ñîîáùåíèå è âûõîäèì
	int error = GetLastError();
	Print("Îøèáêà ïðè óñòàíîâêå! GetLastError = ", error, ", ErrorDescription =  \"", ErrorDescription( error ), "\"" );
	MessageBox( "Îøèáêà ïðè óñòàíîâêå! GetLastError = " + error + ", ErrorDescription = \"" + ErrorDescription( error ) + "\"", 
             	 	"Îøèáêà óñòàíîâêè îðäåðà", 0x00000000 | 0x00000010 | 0x00040000 ); 
return(-1);
}

int deinit()
{
// óäàëåíèå âñåõ îáúåêòîâ, ñîçäàííûõ ñêðèïòîì
	ObjectDelete( "Open_Price_Line" );
	ObjectDelete( "Stop_Loss_Line" );
	ObjectDelete( "Take_Profit_Line" );
	ObjectDelete( "Expiration_Line" );

	for ( double z = 0.1; z <= 1; z += 0.1 )
	{ ObjectDelete( DoubleToStr( z, 1 )); }
	for ( z = 1; z <= 10; z ++ )
	{ ObjectDelete( DoubleToStr( z, 1 )); }
	ObjectDelete( "Lots" );
	ObjectDelete( "Lots_value" );
	ObjectDelete( ">" );
return(0);
}





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
It automatically opens orders when conditions are reached


Other Features:

It opens Message Boxes to the user

BackTest : EURUSD on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for 1-___________ _____


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: