OpenMarketOrder





//+------------------------------------------------------------------+
//|                                   (OpenMarketOrder).mq4 |
//|                                       Copyright © 2006, Yuri2005 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Yuri2005"

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

Ñêðèïò ïðåäíàçíà÷åí äëÿ îòêðûòèÿ ðûíî÷íîãî îðäåðà.

Äëÿ ýòîãî íåîáõîäèìî:

 1) Îçíàêîìèòüñÿ ñ äàííûì ðóêîâîäñòâîì. 
 
 2) Óñòàíîâèòü çíà÷åíèÿ ïåðåìåííûõ ïî óìîë÷àíèþ (íàõîäÿòñÿ ïîä îïèñàíèåì,íà÷èíàþòñÿ è 
    çàêàí÷èâàþòñÿ ñòðîêîé  //+----------------------------------------------+ )
    
 3) Ðàçðåøèòü èìïîðò âíåøíèõ ýêñïåðòîâ ÷åðåç ìåíþ
 	 "Ñåðâèñ" -> "Íàñòðîéêè" -> "Ñîâåòíèêè" -> "Ðàçðåøèòü èìïîðòèðîâàíèå âíåøíèõ ýêñïåðòîâ"
 	 (íåîáõîäèìî äëÿ îïèñàíèÿ îøèáêè, êîòîðàÿ ìîæåò âîçíèêíóòü ïðè óñòàíîâêå îðäåðà).
 	 
 4) Ïåðåòàùèòü ñêðèïò íà ãðàôèê èëè ïðîñòî çàïóñòèòü åãî íà àêòèâíîì ãðàôèêå. 
 
 5) Óïðàâëÿþùèå ëèíèè.
 
 	 Íåîáÿçàòåëüíûå ëèíèè.
 	   
	 - Stop Loss Line (êðàñíàÿ) - óðîâåíü ñòîï-ëîññ
	 - Take Profit Line (ò¸ìíî-ôèîëåòîâàÿ) - óðîâåíü òåéê-ïðîôèò 
	 - Expiration Line (êîðè÷íåâàÿ) - âðåìÿ èñòå÷åíèÿ îðäåðà
	 
	 Íåîáÿçàòåëüíûå ëèíèè ìîæíî íå èñïîëüçîâàòü èëè óäàëÿòü.
		 
	 - "****" - óêàçàòåëü ðàçìåðà ïîçèöèè. Íåîáõîäèìî óñòàíîâèòü íàïðîòèâ íóæíîãî çíà÷åíèÿ. 

 6) Ïåðåìåñòèòü âñå ëèíèè íà íåîáõîäèìûå óðîâíè.
 
    Ïîñëå çàïóñêà ñêðèïòà ïîÿâèòñÿ îêíî ñ âîïðîñîì î ïîäòâåðæäåíèè îòêðûòèÿ ïîçèöèè ïî 
    òåêóùåé ðûíî÷íîé öåíå. Äëÿ ïîäòâåðæäåíèÿ îïåðàöèè íàæìèòå â í¸ì "OK", äëÿ å¸ îòìåíû - 
    "Îòìåíà".
 
 7) Äëÿ ïðåêðàùåíèÿ ðàáîòû ñêðèïòà â ëþáîé ìîìåíò ìîæíî âîñïîëüçîâàòüñÿ êíîïêîé "Îòìåíà".
 
*/


//+------------------------------------------------------------------+
// Âñå íèæåîïèñàííûå ïåðåìåííûå ìîæíî áóäåò èçìåíèòü â îêíå ñâîéñòâ ñêðèïòà,
// êîòîðîå îòêðîåòñÿ ïðè ïðèêðåïëåíèè. 
// Åñëè îêíî ñâîéñòâ íå íóæíî, íàäî çàêîììåíòèðîâàòü ñëåäóþùóþ ñòðîêó (ïîñòàâèòü â íà÷àëî //)

#property show_inputs

// Òèï îðäåðà ïî óìîë÷àíèþ - "Buy" èëè "Sell", òàêæå ìîæíî ââåñòè áóêâû b èëè B, ëþáîå ñëîâî íà b èëè B, 
// ÷èñëî 1 - äëÿ îïåðàöèè Buy; áóêâû s èëè S, ëþáîå ñëîâî íà s èëè S, ÷èñëî -1 - äëÿ îïåðàöèè Sell 

extern string Operation = "Buy"; 

// Îáü¸ì ñäåëêè ïî óìîë÷àíèþ (ìîæíî ìåíÿòü â ïðîöåññå ðàáîòû).
// Äîëæåí áûòü êðàòåí ðàçìåðó ìèíèìàëüíîãî ëîòà (ñìîòðè íèæå). 

extern double Lots = 0.10;

// Âîçìîæíûå âàðèàíòû óñòàíîâêè Stop Loss è Take Profit; åñëè  óñòàíîâêè íå èñïîëüçóþòñÿ, òî óñòàíîâèòå èõ ðàâíûìè 0.

// Attached_Stop_Loss (óñòàíàâëèâàåòñÿ â ïóíêòàõ) - Stop Loss, ïðèâÿçàííûé ê öåíå îòêðûòèÿ îðäåðà. 
// Áóäåò óñòàíîâëåí àâòîìàòè÷åñêè íà óêàçàííîì ðàññòîÿíèè â ïóíêòàõ îò íå¸.
// Ïðè èñïîëüçîâàíèè Attached_Stop_Loss ëèíèÿ óñòàíîâêè Stop Loss îðäåðà íà ãðàôèêå íå ðèñóåòñÿ, 
// òàê êàê åãî çíà÷åíèå æ¸ñòêî çàâèñèò òîëüêî îò öåíû îòêðûòèÿ îðäåðà.

extern int Attached_Stop_Loss = 0;

// Exact_Stop_Loss (óñòàíàâëèâàåòñÿ â àáñîëþòíîì âûðàæåíèè) - Stop Loss, óñòàíàâëèâàåìûé íåçàâèñèìî îò öåíû îòêðûòèÿ îðäåðà.
// Íà÷àëüíîå ðàñïîëîæåíèå ëèíèè Exact_Stop_Loss óñòàíàâëèâàåòñÿ íà ãðàôèêå òî÷íî â óêàçàííîé òî÷êå è íå çàâèñèò îò ïîñëåäóþùèõ
// ïåðåìåùåíèé îò ïîñëåäóþùèõ èçìåíåíèé çíà÷åíèÿ Open Price.

extern double Exact_Stop_Loss = 0;

// Fixed_Stop_Loss (óñòàíàâëèâàåòñÿ â ïóíêòàõ) - Stop Loss, óñòàíàâëèâàåìûé íåçàâèñèìî îò öåíû îòêðûòèÿ îðäåðà.
// Íà÷àëüíîå ðàñïîëîæåíèå óðîâíÿ Fixed_Stop_Loss óñòàíàâëèâàåòñÿ íà óêàçàííîì ðàññòîÿíèè â ïóíêòàõ îò íà÷àëüíîãî 
// çíà÷åíèÿ Open Price è íå çàâèñèò îò ïîñëåäóþùèõ èçìåíåíèé çíà÷åíèÿ Open Price. 

extern int Fixed_Stop_Loss = 50;

// Attached_Take_Profit (óñòàíàâëèâàåòñÿ â ïóíêòàõ) - Take Profit, ïðèâÿçàííûé ê öåíå îòêðûòèÿ îðäåðà. 
// Áóäåò óñòàíîâëåí àâòîìàòè÷åñêè íà óêàçàííîì ðàññòîÿíèè â ïóíêòàõ îò íå¸.
// Ïðè èñïîëüçîâàíèè Attached_Take_Profit ëèíèÿ óñòàíîâêè Take Profit îðäåðà íà ãðàôèêå íå ðèñóåòñÿ, 
// òàê êàê åãî çíà÷åíèå æ¸ñòêî çàâèñèò òîëüêî îò öåíû îòêðûòèÿ îðäåðà.

extern int Attached_Take_Profit = 0;

// Exact_Take_Profit (óñòàíàâëèâàåòñÿ â àáñîëþòíîì âûðàæåíèè) - Take Profit, óñòàíàâëèâàåìûé íåçàâèñèìî 
// îò öåíû îòêðûòèÿ îðäåðà. Íà÷àëüíîå ðàñïîëîæåíèå ëèíèè Exact_Take_Profit óñòàíàâëèâàåòñÿ íà ãðàôèêå 
// òî÷íî â óêàçàííîé òî÷êå è íå çàâèñèò îò ïîñëåäóþùèõ èçìåíåíèé çíà÷åíèÿ Open Price. 

extern double Exact_Take_Profit = 0;

// Fixed_Take_Profit (óñòàíàâëèâàåòñÿ â ïóíêòàõ) - Take Profit, óñòàíàâëèâàåìûé íåçàâèñèìî îò öåíû îòêðûòèÿ îðäåðà.
// Íà÷àëüíîå ðàñïîëîæåíèå ëèíèè Fixed_Take_Profit óñòàíàâëèâàåòñÿ íà óêàçàííîì ðàññòîÿíèè â ïóíêòàõ îò íà÷àëüíîãî 
// çíà÷åíèÿ Open Price è íå çàâèñèò îò ïîñëåäóþùèõ èçìåíåíèé çíà÷åíèÿ Open Price.

extern int Fixed_Take_Profit = 50;

// Ìàêñèìàëüíîå îòêëîíåíèå îò çàïðîøåííîé öåíû

extern int Slippage = 1;

// Êîììåíòàðèé ê îðäåðó

extern string _Comment = " ";

// "Ìàãè÷åñêèé íîìåð" îðäåðà

extern int MagicNumber = 1;

// Ìèíèìàëüíûé ðàçìåð ëîòà. Îïðåäåëÿåòñÿ òîðãîâûìè óñëîâèÿìè êîíêðåòíîé êîìïàíèè è ìîæåò
// ïðèíèìàòü òîëüêî îäíî èç 3 âîçìîæíûõ çíà÷åíèé: 0.01, 0.1 èëè 1.
// Îò äàííîé ïåðåìåííîé çàâèñèò îòðèñîâêà øêàëû óñòàíîâêè ðàçìåðà òîðãîâîãî ëîòà è åù¸ ðÿä íàñòðîåê.

extern double Min_Lot_Size = 0.1;

// Óñòàíàâëèâàåòñÿ, áóäåò ëè èñïîëüçîâàòüñÿ óïðàâëÿþùèé ôàéë äëÿ óñòàíîâêè ïàðàìåòðîâ îðäåðîâ.
// True - èñïîëüçóåòñÿ, False - íåò.
// Â óïðàâëÿþùåì ôàéëå ìîãóò õðàíèòüñÿ è èçìåíÿòüñÿ äàííûå î ðàçìåðå ëîòà, ñïðåäå, Attached_Stop_Loss,
// Attached_Take_Profit è Indent_From_Level ïî êàæäîìó êîíêðåòíîìó òîðãîâîìó èíñòðóìåíòó. Î ôîðìàòå 
// óïðàâëÿþùåãî ôàéëà ñìîòðèòå íèæå.

extern bool Read_From_File = True;

// Íàçâàíèå óïðàâëÿþùåãî ôàéëà. Ôàéë äîëæåí íàõîäèòñÿ â ïàïêå experts\files, íàõîäÿùåéñÿ 
// â ïàïêå ñ óñòàíîâëåííîé ïðîãðàììîé Metatrader. Â äàííîì ôàéëå ìîãóò õðàíèòñÿ è èçìåíÿòüñÿ
// âðó÷íóþ èëè èç äðóãèõ ýêñïåðòîâ/ ñêðèïòîâ/ èíäèêàòîðîâ/ ïðîãðàìì ðàçìåð òîðãîâîé îïåðàöèè, 
// ñòîï ëîññà, òåéê-ïðîôèòà è ðÿä äðóãèõ ïàðàìåòðîâ, ïîçâîëÿþùèõ àâòîìàòè÷åñêè èñïîëüçîâàòü 
// îïðåäåë¸ííûå òðåéäåðîì ïðàâèëà óïðàâëåíèÿ êàïèòàëîì.

/* Ôîðìàò óïðàâëÿþùåãî ôàéëà

EURUSD;51;102;14;38;2;13
USDJPY;52;104;17;39;3;13
GBPUSD;72;142;10;54;3;18
USDCAD;51;102;15;38;4;13
AUDUSD;35;70;22;26;2;9

Äëÿ âñåõ ñêðèïòîâ èñïîëüçóåòñÿ îäèí è òîò æå óïðàâëÿþùèé ôàéë, îäíàêî ÷àñòü ïàðàìåòðîâ èç ôàéëà â îòäåëüíûõ 
ñêðèïòàõ ìîæåò íå èñïîëüçîâàòüñÿ.

Ôàéë äîëæåí ïðåäñòàâëÿòü ñîáîé ñïèñîê ñòðîê, ïàðàìåòðû â êàæäîé ñòðîêå ðàçäåëåíû ";"
Ïîñëå ïîñëåäíåé ñòðîêè ôàéëà îáÿçàòåëüíî íåîáõîäèìî ñäåëàòü ïåðåâîä ñòðîêè (ïðè ðó÷íîì íàáîðå íàæàòü "Enter"

Çíà÷åíèÿ ïàðàìåòðîâ â ñòîëáöàõ:

1 - Íàçâàíèå òîðãîâîãî èíñòðóìåíòà. Äîëæíî òî÷íî ñîâïàäàòü ñ íàçâàíèåì äàííîãî òîðãîâîãî èíñòðóìåíòà â Ìåòàòðåéäåðå. 
  Âñå ñëåäóþùèå ïàðàìåòðû èç äàííîé ñòðîêè áóäóò èñïîëüçîâàòüñÿ òîëüêî äëÿ ñîâåðøåíèÿ òîðãîâûõ îïåðàöèé ïî ýòîìó òîðãîâîìó
  èíñòðóìåíòó.  ñëó÷àå îòñóòñòâèÿ â ôàéëå íàçâàíèÿ èíñòðóìåíòà, ïî êîòîðîìó âû ïðåäïîëàãàåòå ñîâåðøèòü îïåðàöèþ, áóäóò
  èñïîëüçîâàòüñÿ çíà÷åíèÿ èç íàñòðîåê èëè âõîäíûõ ïàðàìåòðîâ ñêðèïòà.
  
2 - Attached Stop Loss (ïðèêðåïë¸ííûé ñòîï ëîññ). Äàííûé ïàðàìåòð ïðè ÷òåíèè èç ôàéëà çàïèñûâàåòñÿ â ïåðåìåííóþ Stop_From_File. 
  Íàçíà÷åíèå è èñïîëüçîâàíèå äàííîãî ïàðàìåòðà ïîëíîñòüþ àíàëîãè÷íî èñïîëüçîâàíèÿþ ïðåäîïðåäåë¸ííîé ïåðåìåííîé Attached_Stop_Loss 
  (ñìîòðè âûøå). Ïðè íàëè÷èè â ôàéëå äàííîãî ïàðàìåòðà îí çàìåíÿåò ïåðåìåííóþ Attached_Stop_Loss. Åñëè çíà÷åíèå Attached_Stop_Loss 
  áûëî ââåäåíî â íàñòðîéêàõ ñêðèïòà èëè åãî âõîäíûõ ïàðàìåòðàõ, òî îíî èãíîðèðóåòñÿ, îäíàêî åñëè çíà÷åíèå â ñòîëáöå ðàâíî 0, 
  òî èñïîëüçóåòñÿ çíà÷åíèå, ââåä¸ííîå â ñêðèïòå.
  
3 - Attached Take Profit (ïðèêðåïë¸ííûé òåéê ïðîôèò). Äàííûé ïàðàìåòð ïðè ÷òåíèè èç ôàéëà çàïèñûâàåòñÿ â ïåðåìåííóþ Take_Profit_From_File. 
  Íàçíà÷åíèå è èñïîëüçîâàíèå äàííîãî ïàðàìåòðà ïîëíîñòüþ àíàëîãè÷íî èñïîëüçîâàíèþ ïðåäîïðåäåë¸ííîé ïåðåìåííîé Attached_Take_Profit 
  (ñìîòðè âûøå). Ïðè íàëè÷èè â ôàéëå äàííîãî ïàðàìåòðà îí çàìåíÿåò ïåðåìåííóþ Attached_Take_Profit. Åñëè çíà÷åíèå Attached_Take_Profit 
  áûëî ââåäåíî â íàñòðîéêàõ ñêðèïòà èëè åãî âõîäíûõ ïàðàìåòðàõ, òî îíî èãíîðèðóåòñÿ, îäíàêî åñëè çíà÷åíèå â ñòîëáöå ðàâíî 0, 
  òî èñïîëüçóåòñÿ çíà÷åíèå, ââåä¸ííîå â ñêðèïòå.
  
4 - Îáú¸ì òîðãîâîé îïåðàöèè. Äàííûé ïàðàìåòð ïðè ÷òåíèè èç ôàéëà çàïèñûâàåòñÿ â ïåðåìåííóþ Lots_From_File. Çíà÷åíèå â ýòîì ñòîëáöå
  äîëæíî áûòü óêàçàíî â ÅÄÈÍÈÖÀÕ ÌÈÍÈÌÀËÜÍÛÕ ËÎÒΠÌÅÒÀÒÐÅÉÄÅÐÀ è áûòü îáÿçàòåëüíî öåëûì ÷èñëîì. Òî åñòü, åñëè óêàçàíî çíà÷åíèå 14,
  òî ýòî îçíà÷àåò "14 ìèíèìàëüíûõ ëîòîâ Ìåòàòðåéäåðà". Òàêèì îáðàçîì, åñëè ìèíèìàëüíûé ëîò Ìåòàòðåéäåðà (ïåðåìåííàÿ Min_Lot_Size) 
  ðàâåí 0.01, òî îáú¸ì îïåðàöèè, ïåðåäàâàåìûé â îðäåð, áóäåò ðàâåí 14 * Min_Lot_Size (0.01) = 0.14 ëîòà, ïðè ìèíèìàëüíîì ëîòå 0.1 -
  14 * Min_Lot_Size (0.1) = 1.4, ïðè ìèíèàëüíîì ëîòå 1 = 14 * Min_Lot_Size (1) = 14. Ýòî ïîçâîëÿåò èñïîëüçîâàòü îäèí è òîò æå 
  óïðàâëÿþùèé ôàéë äëÿ ðàáîòû ñ ðàçíûìè íàñòðîéêàìè èëè â ðàçíûõ ÄÖ ñ ðàçíûìè ðàçìåðàìè ìèíèìàëüíîãî ëîòà. Ïðè íàëè÷èè â óïðàâëÿþùåì 
  ôàéëå äàííîãî ïàðàìåòðà ëþáûå íàñòðîéêè ðàçìåðå ëîòà â ñàìîì ñêðèïòå èëè åãî âõîäíûõ ïàðàìåòðàõ èãíîðèðóþòñÿ, îäíàêî åñëè çíà÷åíèå 
  â ñòîëáöå ðàâíî 0, òî èñïîëüçóåòñÿ çíà÷åíèå, ââåä¸ííîå â ñêðèïòå.
   
5 - Indent From Level (îòñòóï îò óðîâíÿ). Äàííûé ïàðàìåòð â òåêóùåì ñêðèïòå íå èñïîëüçóåòñÿ, çíà÷åíèÿ èç äàííîãî ñòîëáöà èãíîðèðóþòñÿ. 
  Îïèñàíèå åãî íàçíà÷åíèÿ ñìîòðèòå â èíñòðóêöèÿõ ê äðóãèì ñêðèïòàì.
  
6 - Âåëè÷èíà ñïðåäà ïî èíñòðóìåíòó. Äàííûé ïàðàìåòð â òåêóùåì ñêðèïòå íå èñïîëüçóåòñÿ, çíà÷åíèÿ èç äàííîãî ñòîëáöà èãíîðèðóþòñÿ. 
  Îïèñàíèå åãî íàçíà÷åíèÿ ñìîòðèòå â èíñòðóêöèÿõ ê äðóãèì ñêðèïòàì.
  
7 - Indent From Level2 (îòñòóï îò óðîâíÿ 2). Äàííûé ïàðàìåòð ÈÑÏÎËÜÇÓÅÒÑß ÒÎËÜÊÎ Â ÑÊÐÈÏÒÅ ModifyStopLoss, à â òåêóùåì ñêðèïòå íå 
  èñïîëüçóåòñÿ. Åñëè â ýòîì ñòîëáöå åñòü êàêèå-ëèáî çíà÷åíèÿ, òî îíè â òåêóùåì ñêðèïòå èãíîðèðóþòñÿ. Î íàçíà÷åíèè äàííîãî ïàðàìåòðà 
  ñìîòðèòå â îïèñàíèè ñêðèïòà ModifyStopLoss. Åñëè âû íå ïëàíèðóòå èñïîëüçîâàíèå ñêðèïòà ModifyStopLoss èëè äàííîãî ïàðàìåòðà âîîáùå, 
  òî ìîæåòå íå ñîçäàâàòü äàííûé ñòîëáåö ïðè ñîçäàíèè óïðàâëÿþùåãî ôàéëà.
 
Åñëè âû íå ïëàíèðóåòå èñïîëüçîâàíèå ëþáîãî èç âûøåóêàçàííûõ ïàðàìåòðîâ, òî â ñîîòâåòñòâóþùåì ñòîëáöå óêàæèòå 0 - ïðè ÷òåíèè èç ôàéëà
îí áóäåò èãíîðèðîâàòüñÿ, à â ðàáîòå áóäåò èñïîëüçîâàòüñÿ ñîîòâåòñòâóþùåå çíà÷åíèå èç íàñòðîåê èëè âõîäíûõ ïàðàìåòðîâ ñêðèïòà. Îäíàêî 
ñòîëáåö íåëüçÿ ïðîïóñêàòü. Êðîìå òîãî, ìîæíî ïîëíîñòüþ óäàëÿòü ñòîëáåö, åñëè îí â äàííîì ôàéëå ÿâëÿåòñÿ ïîñëåäíèì, åñëè âû íå ïëàíèðóåòå
èñïîëüçîâàòü ýòîò ïàðàìåòð.

  
  Ïðèîðèòåò ïàðàìåòðîâ îðäåðà. 
  
Íàèâûñøèì ïðèîðèòåòîì îáëàäàþò çíà÷åíèÿ èç âõîäíûõ ïàðàìåòðîâ ñêðèïòà Attached_Stop_Loss, Attached_Take_Profit, Spread è Indent_From_Level,
òî åñòü åñëè îíè íå ðàâíû 0, ëþáûå äðóãèå íàñòðîéêè ñòîï-ëîññà, òåéê-ïðîôèòà è àíàëîãè÷íûå ïàðàìåòðû, ïåðåäàâàåìûå èç óïðàâëÿþùåãî ôàéëà, 
áóäóò èãíîðèðîâàòüñÿ. Åñëè âûøåóêàçàííûå ïàðàìåòðû ðàâíû 0, òî èñïîëüçóþòñÿ àíàëîãè÷íûå ïàðàìåòðû, ïåðåäàâàåìûå èç óïðàâëÿþùåãî ôàéëà. Åñëè 
ïåðåäàâàåìûå èç ôàéëà ïàðàìåòðû òàêæå ðàâíû 0, èëè åñëè ôàéë íå èñïîëüçóåòñÿ, òî áóäóò èñïîëüçîâàòüñÿ ñíà÷àëà ïåðåìåííûå Exact_Stop_Loss è 
Exact_Take_Profit, è òîëüêî åñëè è îíè ðàâíû 0, èñïîëüçóþòñÿ ïåðåìåííûå Fixed_Stop_Loss è Fixed_Take_Profit, ïîýòîìó åñëè Âû ïëàíèðóåòå 
èñïîëüçîâàòü Exact_Stop_Loss, Exact_Take_Profit, Fixed_Stop_Loss èëè Fixed_Take_Profit, òî óáåäèòåñü, ÷òî âûøåóêàçàííûå ïàðàìåòðû èç ôàéëà
íå ïåðåäàþòñÿ èëè ïåðåìåííàÿ Read_From_File = False (ýòî çàïðåùàåò èñïîëüçîâàíèå óïðàâëÿþùåãî ôàéëà). 

*/

extern string FileName = "Raschet.csv";

extern string Line_Color = "----------------------------------------------------------------------------------------";

// Öâåòà óïðàâëÿþùèé ëèíèé  è òåêñòà ïî óìîë÷àíèþ

extern color Open_Price_Color = Blue;
extern color Stop_Loss_Line_Color = Red;
extern color Take_Profit_Line_Color = DarkViolet;

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

// Âêëþ÷åíèå áèáëèîòåêè îáðàáîòêè îøèáîê

#include <stdlib.mqh>

// Îáúÿâëåíèå ïåðåìåííûõ

int first = 1, stroka = 1, stolbec = 1, _OrderType, dig, Stop_From_File,Take_Profit_From_File ;
double Lots_Scale, Open_Price, Lots_From_File = 0;

// Íà÷àëî ñêðèïòà

int start()
{

// Îáúÿâëåíèå è óñòàíîâêà íà÷àëüíûõ çíà÷åíèé ïåðåìåííûõ

double Open_Price_Level, Stop_Loss_Level, Take_Profit_Level;

// Îïðåäåëåíèå òèïà îðäåðà

if (StringSubstr( Operation, 0, 1) == "b" || StringSubstr( Operation, 0, 1) == "B" || Operation == "1" ) 
   {
   _OrderType = OP_BUY;
   Operation = "ÏÎÊÓÏÊÈ";
   }
else 
   if (StringSubstr( Operation, 0, 1) == "s" || StringSubstr( Operation, 0, 1) == "S" || Operation == "-1" )
      {
      _OrderType = OP_SELL;
      Operation = "ÏÐÎÄÀÆÈ";
      }
   else
      {
      string Question = "Óñòàíîâèòå âî âõîäíûõ ïàðàìåòðàõ ñêðèïòà \n" 
                      + "òèï òîðãîâîé îïåðàöèè buy èëè sell";
	   int Answer = MessageBox( Question, "Íå îïðåäåë¸í òèï òîðãîâîé îïåðàöèè", 0x00000000 | 0x00000030);
      deinit(); 
      return(0);
      }

if (Lots == 0) Lots = Min_Lot_Size;

if (Min_Lot_Size == 0.01)
   dig = 2;
else
   if (Min_Lot_Size == 0.1)
      dig = 1;
   else
      if (Min_Lot_Size == 1.0)
         dig = 0;
      else
      {
      Question = "Óñòàíîâèòå âî âõîäíûõ ïàðàìåòðàõ ñêðèïòà \n" 
              +  "çíà÷åíèå Min_Lot_Size = 0.01, 0.1 èëè 1.0";
	   Answer = MessageBox( Question, "Íåêîððåêòíàÿ óñòàíîâêà ìèíèìàëüíîãî ëîòà", 0x00000000 | 0x00000030);
      deinit(); 
      return(0);
      }

if (Lots != 0 && Lots < Min_Lot_Size)
   {
   Question = "Óñòàíîâèòå âî âõîäíûõ ïàðàìåòðàõ ñêðèïòà \n" 
           +  "ðàçìåð ëîòà íå ìåíüøå ìèíèìàëüíîãî";
	Answer = MessageBox( Question, "Íåêîððåêòíàÿ óñòàíîâêà ðàçìåðà ëîòà", 0x00000000 | 0x00000030);
   deinit(); 
   return(0);
   }

// ×òåíèå ïàðàìåòðîâ óñòàíîâêè îðäåðà èç ôàéëà

if (Read_From_File)
   {
   string Info[120][20];
   int FileHandle = FileOpen(FileName, FILE_CSV|FILE_READ, ";");
   if (FileHandle == -1)   
     { 
     Print("Îøèáêà=",GetLastError());
     Read_From_File = False;
     }
   if (FileHandle>0)
      {
      while(!FileIsEnding(FileHandle))
         {
         Info[stroka,stolbec] = FileReadString(FileHandle); 
         stolbec++;
         if (FileIsLineEnding(FileHandle)) 
            {
            stroka++; 
            stolbec = 1;
            }
         }
      }
   }         
 
// Çàïèñü ñ÷èòàííûõ èç ôàéëà ïàðàìåòðîâ óñòàíîâêè îðäåðà â ïåðåìåííûå äëÿ èõ äàëüíåéøåãî èñïîëüçîâàíèÿ         

if (Read_From_File)
   {
   for (int i = 1; i < stroka; i++)
      {
      if (Symbol() == Info[i,1])
          {
          Read_From_File = True;
          Stop_From_File = StrToInteger(Info[i,2]); 
          Take_Profit_From_File = StrToInteger(Info[i,3]);
          Lots_From_File = NormalizeDouble(StrToDouble(Info[i,4]),0) * Min_Lot_Size;
          break;
          }
      Read_From_File = False;
      }
   }

if (Stop_From_File != 0 && Attached_Stop_Loss == 0)
   Attached_Stop_Loss = Stop_From_File;

if (Take_Profit_From_File != 0 && Attached_Take_Profit == 0 )
   Attached_Take_Profit = Take_Profit_From_File;
   
if (Lots_From_File != 0)
   Lots = Lots_From_File;
   
if (Attached_Stop_Loss > 0 && _OrderType == OP_BUY)
   string Description2 = "\n\nÑ îðäåðîì àâòîìàòè÷åñêè áóäåò óñòàíîâëåí Attached Stop Loss íà\n" + Attached_Stop_Loss 
                 +" ïóíêòîâ íèæå öåíû îòêðûòèÿ îðäåðà.";
                 
if (Attached_Stop_Loss > 0 && _OrderType == OP_SELL)
   Description2 = "\n\nÑ îðäåðîì àâòîìàòè÷åñêè áóäåò óñòàíîâëåí Attached Stop Loss íà\n" + Attached_Stop_Loss 
                 +" ïóíêòîâ âûøå öåíû îòêðûòèÿ îðäåðà.";
                 
if (Attached_Take_Profit > 0 && _OrderType == OP_BUY)
   string Description3 = "\n\nÑ îðäåðîì àâòîìàòè÷åñêè áóäåò óñòàíîâëåí Attached Take Profit íà\n" + Attached_Take_Profit 
                 +" ïóíêòîâ âûøå öåíû îòêðûòèÿ îðäåðà.";
                 
if (Attached_Take_Profit > 0 && _OrderType == OP_SELL)
   Description3 = "\n\nÑ îðäåðîì àâòîìàòè÷åñêè áóäåò óñòàíîâëåí Attached Take Profit íà\n" + Attached_Take_Profit 
                 +" ïóíêòîâ íèæå öåíû îòêðûòèÿ îðäåðà.";
      
// Îïðåäåëåíèå íà÷àëüíîãî çíà÷åíèÿ Open_Price (öåíû îòêðûòèÿ îðäåðà), Stop Loss è Take Profit

if ( _OrderType == OP_BUY )
   {  
   
   // ---Open_Price_Level
   
   Open_Price_Level = Ask;
	
   // ---Stop_Loss_Level
   
	if ( Fixed_Stop_Loss > 0 )
	   Stop_Loss_Level = Open_Price_Level - Fixed_Stop_Loss * Point; 
	
	if (Exact_Stop_Loss > 0)
      Stop_Loss_Level = NormalizeDouble(Exact_Stop_Loss,Digits);

   // ---Take_Profit_Level
	
	if ( Fixed_Take_Profit > 0 )
	   Take_Profit_Level = Open_Price_Level + Fixed_Take_Profit * Point;
	   
   if (Exact_Take_Profit > 0)
      Take_Profit_Level = NormalizeDouble(Exact_Take_Profit,Digits);
   }

if ( _OrderType == OP_SELL )
   {
   
   // ---Open_Price_Level
   
   Open_Price_Level = Bid;
   
   // ---Stop_Loss_Level
   
   if ( Fixed_Stop_Loss > 0 )
	   Stop_Loss_Level = Open_Price_Level + Fixed_Stop_Loss * Point;
	   
   if (Exact_Stop_Loss > 0)
      Stop_Loss_Level = NormalizeDouble(Exact_Stop_Loss,Digits);
   
   // ---Take_Profit_Level
	
	if ( Fixed_Take_Profit > 0 )
		Take_Profit_Level = Open_Price_Level - Fixed_Take_Profit * Point;
		
   if (Exact_Take_Profit > 0)
      Take_Profit_Level = NormalizeDouble(Exact_Take_Profit,Digits);
   }


// Ñîçäàíèå ëèíèé:

int Lots_value_y = 30;

if ( first == 1 )
   {
	if ( Stop_Loss_Level > 0 && Attached_Stop_Loss == 0 )
	   {
		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 );
	   }
	if ( Take_Profit_Level > 0 && Attached_Take_Profit == 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 );
	   }
	
   int y = 25;
	
	if (Lots - 7 * Min_Lot_Size >= Min_Lot_Size)
	   Lots_Scale = Lots - 7 * Min_Lot_Size;
	else
	   Lots_Scale = Min_Lot_Size;
	  
   for ( double z = Lots_Scale; z < Lots_Scale + 20 * Min_Lot_Size; z += Min_Lot_Size )
	   {
	   if (NormalizeDouble(z,dig) - NormalizeDouble( Lots,dig) == 0)
	      int y_pos = y;
	      
		ObjectCreate( DoubleToStr( z, dig ), OBJ_LABEL, 0,0,0,0,0,0,0);
		ObjectSet( DoubleToStr( z, dig ), OBJPROP_CORNER, 1);
		ObjectSet( DoubleToStr( z, dig ), OBJPROP_XDISTANCE, 1);
		ObjectSet( DoubleToStr( z, dig ), OBJPROP_YDISTANCE, y);
		ObjectSetText( DoubleToStr( z, dig ), DoubleToStr( z, dig ), 10, "Arial", Open_Price_Color);
		y += 15;
      }
	   
	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_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, y_pos + 5);
	ObjectSetText( "Lots value", "****", 14, "Arial", Open_Price_Color);
	
   ObjectsRedraw();
	
   // Âûâîä îêíà ïîäòâåðæäåíèÿ îïåðàöèè
   
   if (_OrderType == OP_BUY)
      string Price_Type = "Ask";
   else
      Price_Type = "Bid";
      
	Question = "Âû óâåðåíû, ÷òî õîòèòå ñîâåðøèòü îïåðàöèþ " + Operation + " ïî òåêóùåé \n"
	         + "ðûíî÷íîé öåíå " + Price_Type + "? \n\n" 
	         + "Óêàæèòå ïðè íåîáõîäèìîñòè ðàçìåð ëîòà è íàæìèòå \"ÎÊ\".\n\n" 
	         + "×òîáû îòêàçàòüñÿ îò îïåðàöèè, íàæìèòå \"Îòìåíà\"." + Description2 + Description3;
	Answer = MessageBox( Question, "Îòêðûòèå îðäåðà ïî ðûíêó", 0x00000001 | 0x00000020 | 0x00040000 );
	first = 0;
	
	// Åñëè íàæàòà ëþáàÿ êðîìå "ÎÊ" êíîïêà - âûõîäèì
	
	if ( Answer != 1 ) 
	   { 
	   deinit(); 
	   return(0); 
	   }
   }

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

// Ðàçìåð ëîòà

Lots_value_y = ObjectGet( "Lots value", OBJPROP_YDISTANCE );
		
if ( Lots_value_y < 35)  Lots = Lots_Scale;
if ( Lots_value_y >= 35  && Lots_value_y < 50  ) Lots = Lots_Scale + Min_Lot_Size;
if ( Lots_value_y >= 50  && Lots_value_y < 65  ) Lots = Lots_Scale + 2 * Min_Lot_Size;
if ( Lots_value_y >= 65  && Lots_value_y < 80  ) Lots = Lots_Scale + 3 * Min_Lot_Size;
if ( Lots_value_y >= 80  && Lots_value_y < 95  ) Lots = Lots_Scale + 4 * Min_Lot_Size;
if ( Lots_value_y >= 95  && Lots_value_y < 110 ) Lots = Lots_Scale + 5 * Min_Lot_Size;
if ( Lots_value_y >= 110 && Lots_value_y < 125 ) Lots = Lots_Scale + 6 * Min_Lot_Size;
if ( Lots_value_y >= 125 && Lots_value_y < 140 ) Lots = Lots_Scale + 7 * Min_Lot_Size;
if ( Lots_value_y >= 140 && Lots_value_y < 155 ) Lots = Lots_Scale + 8 * Min_Lot_Size;
if ( Lots_value_y >= 155 && Lots_value_y < 170 ) Lots = Lots_Scale + 9 * Min_Lot_Size;
if ( Lots_value_y >= 170 && Lots_value_y < 185 ) Lots = Lots_Scale + 10 * Min_Lot_Size;
if ( Lots_value_y >= 185 && Lots_value_y < 200 ) Lots = Lots_Scale + 11 * Min_Lot_Size;
if ( Lots_value_y >= 200 && Lots_value_y < 215 ) Lots = Lots_Scale + 12 * Min_Lot_Size;
if ( Lots_value_y >= 215 && Lots_value_y < 230 ) Lots = Lots_Scale + 13 * Min_Lot_Size;
if ( Lots_value_y >= 230 && Lots_value_y < 245 ) Lots = Lots_Scale + 14 * Min_Lot_Size;
if ( Lots_value_y >= 245 && Lots_value_y < 260 ) Lots = Lots_Scale + 15 * Min_Lot_Size;
if ( Lots_value_y >= 260 && Lots_value_y < 275 ) Lots = Lots_Scale + 16 * Min_Lot_Size;
if ( Lots_value_y >= 275 && Lots_value_y < 290 ) Lots = Lots_Scale + 17 * Min_Lot_Size;
if ( Lots_value_y >= 290 && Lots_value_y < 305 ) Lots = Lots_Scale + 18 * Min_Lot_Size;
if ( Lots_value_y >= 305 							  ) Lots = Lots_Scale + 19 * Min_Lot_Size;

Lots = NormalizeDouble( Lots, dig );

//Open Price

RefreshRates();

if ( _OrderType == OP_BUY )
    Open_Price_Level = Ask;	

if ( _OrderType == OP_SELL )
    Open_Price_Level = Bid;	

// Stop_Loss

if (Attached_Stop_Loss != 0 && _OrderType == OP_BUY )
   Stop_Loss_Level = Open_Price_Level - Attached_Stop_Loss * Point;
else
   if (Attached_Stop_Loss != 0 && _OrderType == OP_SELL )
      Stop_Loss_Level = Open_Price_Level + Attached_Stop_Loss * Point;
   else
	   Stop_Loss_Level = NormalizeDouble( ObjectGet( "Stop Loss Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
	
// Take_Profit

if (Attached_Take_Profit != 0 && _OrderType == OP_BUY )
   Take_Profit_Level = Open_Price_Level + Attached_Take_Profit * Point;
else
   if (Attached_Take_Profit != 0 && _OrderType == OP_SELL )
      Take_Profit_Level = Open_Price_Level - Attached_Take_Profit * Point;
   else
	   Take_Profit_Level = NormalizeDouble( ObjectGet( "Take Profit Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) );
	

// Ïðîâåðÿåì âñå çíà÷åíèÿ

if ( _OrderType == OP_BUY )
	{
	if ( Open_Price_Level - Stop_Loss_Level < MarketInfo( Symbol(), MODE_STOPLEVEL ) * Point )
		{
		Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåí óðîâåíü Stop Loss!\n" + 
					 	 			 "\n" +
					 		 		 "Äëÿ îðäåðîâ íà ïîêóïêó îí äîëæåí áûòü ÍÈÆÅ òåêóùåé ðûíî÷íîé öåíû.\n" + 
					 	 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\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!\n" + 
					 	 			 "\n" +
					 	 			 "Äëÿ îðäåðîâ íà ïîêóïêó îí äîëæåí áûòü ÂÛØÅ òåêóùåé ðûíî÷íîé öåíû.\n" + 
					 	 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\n" + 
					 		 		 "\n" +
					 				 "Óñòàíîâèòå ïðàâèëüíîå çíà÷åíèå è íàæìèòå \"Ïîâòîð\".\n" +
					 	 			 "×òîáû îòêàçàòüñÿ îò óñòàíîâêè, íàæìèòå \"Îòìåíà\".", "Îòêðûòèå îðäåðà ïî ðûíêó", 0x00000005 | 0x00000030 | 0x00040000 );
		if ( Answer == 4 ) 
		   { 
		   ObjectsRedraw(); 
		   start(); 
		   }
		deinit();
		return(-1);
		}
	}

if ( _OrderType == OP_SELL )
	{
	if ( Stop_Loss_Level - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL ) * Point )
		{
		Answer = MessageBox(  "Íåïðàâèëüíî óñòàíîâëåí óðîâåíü Stop Loss!\n" + 
				 		 			 "\n" +
					 	 			 "Äëÿ îðäåðîâ íà ïðîäàæó îí äîëæåí áûòü ÂÛØÅ òåêóùåé ðûíî÷íîé öåíû.\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!\n" + 
						 			 "\n" +
					 	 			 "Äëÿ îðäåðîâ íà ïðîäàæó îí äîëæåí áûòü ÍÈÆÅ òåêóùåé ðûíî÷íîé öåíû.\n" + 
					 	 			 "Ìèíèìàëüíûé îòñòóï (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " ïóíêòîâ.\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);
int ordersend = OrderSend( Symbol(), _OrderType, Lots, Open_Price_Level, Slippage, Stop_Loss_Level, Take_Profit_Level, _Comment, MagicNumber);

if ( ordersend > 0 )
	{
   
   // åñëè âñ¸ îê, âûâîäèì ëîã è âûõîäèì
	
	OrderPrint();
	Print( "Îðäåð #", ordersend, " óñòàíîâëåí óñïåøíî!");
	
	OrderSelect(ordersend, SELECT_BY_TICKET);
	double _OrderOpenPrice = OrderOpenPrice();
  
	ObjectCreate("Îðäåð # " + DoubleToStr(ordersend,0), OBJ_TEXT, 0, iTime(NULL,0,0), _OrderOpenPrice);
   ObjectSetText("Îðäåð # " + DoubleToStr(ordersend,0), DoubleToStr(_OrderOpenPrice, Digits), 8,"Times New Roman", Open_Price_Color );
   
   if (Stop_Loss_Level != 0)
     {
     ObjectCreate("Îðäåð # " + DoubleToStr(ordersend,0) + " Stop Loss", OBJ_TEXT, 0, iTime(NULL,0,0), Stop_Loss_Level);
     ObjectSetText("Îðäåð # " + DoubleToStr(ordersend,0) + " Stop Loss", DoubleToStr(Stop_Loss_Level, Digits), 8,"Times New Roman", Stop_Loss_Line_Color );
	  }
	
	if (Take_Profit_Level != 0)
	  {
	  ObjectCreate("Îðäåð # " + DoubleToStr(ordersend,0) + " Take Profit", OBJ_TEXT, 0, iTime(NULL,0,0), Take_Profit_Level);
     ObjectSetText("Îðäåð # " + DoubleToStr(ordersend,0) + " Take Profit", DoubleToStr(Take_Profit_Level, Digits), 8,"Times New Roman", Take_Profit_Line_Color );
     }	
	
	ObjectsRedraw();
	return(0);
	}

// Åñëè îøèáêà - âûâîäèì ñîîáùåíèå è âûõîäèì
	
int error = GetLastError();
Print("Îøèáêà ïðè óñòàíîâêå! GetLastError = ", error, ", ErrorDescription =  \"", ErrorDescription( error ), "\"" );
MessageBox( "Îøèáêà ïðè óñòàíîâêå! GetLastError = " + error + ", ErrorDescription = \"" + ErrorDescription( error ) + "\"", 
             	 	"Îøèáêà óñòàíîâêè îðäåðà", 0x00000000 | 0x00000010 | 0x00040000 ); 

ObjectsRedraw();
return(-1);
}

// Çàâåðøåíèå ðàáîòû ñêðèïòà

int deinit()
{

// Óäàëåíèå âñåõ îáúåêòîâ, ñîçäàííûõ ñêðèïòîì

ObjectDelete( "Open Price Line" );
ObjectDelete( "Stop Loss Line" );
ObjectDelete( "Take Profit Line" );

for ( double z = Lots_Scale; z < Lots_Scale + 20 * Min_Lot_Size; z += Min_Lot_Size )
	ObjectDelete( DoubleToStr( z, dig )); 
	
ObjectDelete( "Lots" );
ObjectDelete( "Lots value" );
ObjectsRedraw();		

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
Uses files from the file system

It reads information from a file

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-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 : 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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 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 : USDCHF on H1

From 2009-12-01 to 2010-01-01 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

Request Backtest for OpenMarketOrder


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

Pair: Period: