Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
t9emyk44s63r7czp1dr5ryrg8soas5_wkcitx4a7vwpabrlsve
//+------------------------------------------------------------------+
//| Ñàìîîáó÷àþùèéñÿ ÝÊÑÏÅÐÒ(lsv).mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//| Èçìåíèë: Ëûæèí Ñåðãåé 03.09.2006 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
// <Ðàáîòà ñ ïðîãðàììîé.Îáó÷åíèå.>
// Ïðè çàäàííîì íàáîðå âíåøíèõ (âõîäíûõ) ïàðàìåòðîâ îáó÷åíèå ïðîãðàììû
// ìîæíî ïðîâîäèòü äâóìÿ ñïîñîáàìè:
// À) Â ðåçóëüòàòå ïðåäâàðèòåëüíîãî òåñòèðîâàíèÿ íà Òåñòåðå Ñòðàòåãèé.
// Äëÿ ýòîãî íóæíî ïðåäâàðèòåëüíî çàãðóçèòü äîñòàòî÷íûé îáúåì èñòîðèè,
// õîòÿ áû çà ãîä, ÷òî ìîæíî ñäåëàòü, îòêðûâ ãðàôèê íóæíîé âàëþòíîé
// ïàðû è óäåðæèâàÿ êëàâèøó Home. Çàòåì îòêðûâàåì ìåíþ Âèä/Òåñòåð
// Ñòðàòåãèé, è çàïóñêàåì òåñò ñ âûáîðîì òî÷íîé ìîäåëè òåñòèðîâàíèÿ
// ïî âñåì òèêàì (ïîäðîáíåå î ðàáîòå ñ Òåñòåðîì ñì. âñòðîåííóþ
// èíñòðóêöèþ ïëàòôîðìû ÌÒ4).
// Â ïðîöåññå òåñòà ôàéëû ñòàòèñòèêè ñäåëîê ñîçäàþòñÿ Òåñòåðîì è
// çàïèñûâàþòñÿ â ïàïêó Tester/files. Äëÿ ðàáîòû ñ ðåàëüíûì ñ÷åòîì
// èõ äîñòàòî÷íî ïåðåíåñòè â ïàïêó Experts/files.
// Á) Îáó÷åíèå ìîæåò áûòü òàêæå ïðîâåäåíî ïðè çàïóñêå ïðîãðàììû â
// ðåæèìå ðåàëüíîãî âðåìåíè.  ýòîì ñëó÷àå ôàéëû ñòàòèñòèêè ñäåëîê
// ñîçäàþòñÿ ñðàçó â ïàïêå Experts/files. Íàêîïëåíèå ñòàòèñòèêè
// ôèêòèâíûõ ñäåëîê â ðåàëüíîì âðåìåíè ïðîèñõîäèò íå áûñòðî. Ìîæåò
// ïîòðåáîâàòüñÿ íåäåëÿ èëè áîëüøå, ïðåæäå ÷åì ñîâåòíèê ñîáåðåò
// äîñòàòî÷íûé îáúåì èíôîðìàöèè è îòêðîåò ïåðâóþ ïîçèöèþ.  òî æå
// âðåìÿ, ôàéëû ñòàòèñòèêè, áûñòðî ñîçäàâàåìûå Òåñòåðîì Ñòðàòåãèé,
// íå âïîëíå óäîâëåòâîðèòåëüíû, òàê êàê îíè íåñêîëüêî èñêàæåíû
// ïîãðåøíîñòÿìè, âîçíèêàþùèìè ïðè ìîäåëèðîâàíèè Òåñòåðîì äâèæåíèÿ
// öåíû âíóòðè áàðà. Ýòîãî äîñòàòî÷íî äëÿ äåìîíñòðàöèè
// ðàáîòîñïîñîáíîñòè àëãîðèòìà è ïðåçåíòàöèè ïðîãðàììû, îäíàêî çàïóñê
// ñîâåòíèêà íà ðåàëüíîì ñ÷åòå ñ ýòèìè ôàéëàìè ñòàòèñòèêè ñîïðÿæåí ñ
// îïðåäåëåííûì ðèñêîì. Ïîýòîìó îïòèìàëüíûì ñïîñîáîì îáó÷åíèÿ
// ïðåäñòàâëÿåòñÿ ñëåäóþùèé. Ôàéëû îáó÷åíèÿ ñîçäàííûå Òåñòåðîì ïîñëå
// òåñòèðîâàíèÿ íà èñòîðè÷åñêèõ äàííûõ, ñëåäóåò ðàññìàòðèâàòü êàê
// ïåðâîå ïðèáëèæåíèå. Èõ ñëåäóåò ïåðåíåñòè â ïàïêó Experts/files
// è çàïóñòèòü ñîâåòíèêà â ðåæèìå ðåàëüíîãî âðåìåíè íà äåìî-ñ÷åòå.
// Ñîâåòíèê ñðàçó ìîæåò ñîâåðøàòü ñäåëêè. Îäíàêî îáíîâëåííûå ôàéëû
// ñòàòèñòèêè ñäåëîê ïîÿâÿòñÿ ñïóñòÿ íåêîòîðîå âðåìÿ (îêîëî íåäåëè-
// äëÿ ïàðàìåòðîâ ïðèíÿòûõ ïî óìîë÷àíèþ). Ïðîùå ãîâîðÿ, ïîñëå ïåðåõîäà
// ñ Òåñòåðà íà ðåàëüíûé ñ÷åò ñîâåòíèêó íåîáõîäèìî ðàñòîðãîâàòüñÿ.
// Çà ýòî âðåìÿ îí êîððåêòèðóåò ôàéëû ñòàòèñòèêè, ñîçäàííûå ðàíåå
// Òåñòåðîì.
// <Ïåðåîáó÷åíèå. Ïàðàìåòð ReadHistory.>
// Åñëè ïðîãðàììà áûëà ðàíåå õîòÿ áû ðàç ïðîòåñòèðîâàíà íà äàííîì
// ñèìâîëå, îíà ñ÷èòàåòñÿ îáó÷åííîé ðàáîòàòü íà ýòîì ñèìâîëå, à
// ïàïêà Tester/files ñîäåðæèò ôàéëû ñòàòèñòèêè. Ïðè ïîâòîðíîì
// çàïóñêå íà Òåñòåðå ïðîãðàììà ïî óìîë÷àíèþ ñ÷èòûâàåò èíôîðìàöèþ
// èç ôàéëîâ ñòàòèñòèêè. Ïîýòîìó ïðè èçìåíåíèè çíà÷åíèé êàêèõ ëèáî
// âõîäíûõ ïàðàìåòðîâ íåîáõîäèìî çàïðåòèòü ÷òåíèå äàííûõ èç ôàéëîâ
// ñòàòèñòèêè.  ïðîòèâíîì ñëó÷àå âîçíèêíåò íåñîîòâåòñòâèå ñòàðûõ
// ðåçóëüòàòîâ îáó÷åíèÿ è íîâûõ âõîäíûõ ïàðàìåòðîâ, â ðåçóëüòàòå
// ÷åãî ïðîãðàììà ìîæåò äàæå ïðîäåìîíñòðèðîâàòü îòðèöàòåëüíûé
// ðåçóëüòàò. Çà ïåðåîáó÷åíèå ïðîãðàììû îòâå÷àåò ïàðàìåòð
// ReadHistory. Åñëè ïðè çàïóñêå ïðîãðàììû ReadHistory=0, ïðîãðàììà
// ñòèðàåò ïðåæíèé ôàéë ñòàòèñòèêè è ïèøåò íà åãî ìåñòî íîâûé,
// îòâå÷àþùèé íîâûì âõîäíûì ïàðàìåòðàì. Åñëè ReadHistory=1,
// ïðîãðàììà ñ÷èòûâàåò ðåçóëüòàòû ïðåæíåãî îáó÷åíèÿ è èñïîëüçóåò
// èõ â ðàáîòå. Eñëè ReadHistory=1, à ôàéëà ñòàòèñòèêè íå
// îáíàðóæåíî, ïðîãðàììà ïðîïèñûâàåò â æóðíàë îøèáêó ÷òåíèÿ ôàéëà
// (ýòî íîðìàëüíî), ñîçäàåò íóæíûå ôàéëû è çàïèñûâàåò â íèõ
// èíôîðìàöèþ àíàëîãè÷íî çàïóñêó c âûáîðîì ReadHistory=0.
// <Ïðî÷èå ïàðàìåòðû.>
// - Probab òðåáóåìàÿ âåðîÿòíîñòü âûèãðûøà, íà îñíîâàíèè
// ñòàòèñòè÷åñêèõ äàííûõ. ×åì áëèæå Probab ê åäèíèöå, òåì áîëåå
// âåðîÿòíî äîñòèæåíèå âûèãðûøà â ñëó÷àå îòêðûòèÿ ïîçèöèè. Îäíàêî
// ðûíî÷íûå ñèòóàöèè ñ ãàðàíòèðîâàííûì âûèãðûøåì ðåàëèçóþòñÿ ðåäêî.
// Ïîýòîìó äëÿ ôàêòè÷åñêîãî äîñòèæåíèÿ âûèãðûøà ïîëüçîâàòåëü îáÿçàí
// ðàçðåøèòü îïðåäåëåííûé ðèñê. Òàêèì îáðàçîì, ñîâåòíèê íå ÿâëÿåòñÿ
// ìàøèíîé ïî ñòàáèëüíîìó ïðîèçâîäñòâó äåíåã. Ïîëüçîâàòåëü
// îñîçíàåò íàëè÷èå èíâåñòèöèîííîãî ðèñêà è ñàìîñòîÿòåëüíî íàçíà÷àåò
// âåðîÿòíîñòü ïðîèãðûøà. Óêàçàííàÿ âåðîÿòíîñòü ïðîèãðûøà ðàâíà íóëþ
// ïðè âûáîðå Probab=1, â ýòîì ñëó÷àå ñîâåòíèê íèêîãäà íå îòêðîåò
// ïîçèöèþ;
// - forg ñêîðîñòü çàáûâàíèÿ ðåçóëüòàòîâ îáó÷åíèÿ. Îò 1 (çàáûâàíèÿ
// íåò) äî 1.1 (ñèëüíîå çàáûâàíèå). Ïàðàìåòð ïîëåçåí, åñëè íåîáõîäèìî
// ïðèäàòü ïîñëåäíèì ñäåëêàì áîëüøèé ñòàòèñòè÷åñêèé âåñ. Èçâåñòíî,
// ÷òî ðûíîê ñî âðåìåíåì èçìåíÿåòñÿ. Ýòî âûðàæàåòñÿ, ê ïðèìåðó â òîì,
// ÷òî ðûíî÷íûå ñèòóàöèè, êîòîðûå â ïðîøëîì ãîäó òðàäèöèîííî áûëè
// áëàãîïðèÿòíûìè äëÿ ïîçèöèè Buy, â íîâîì ãîäó ìîãóò îêàçàòüñÿ
// áëàãîïðèÿòíûìè äëÿ ïîçèöèè Sell. Åñëè ïîñòàâëåíî forg=1,
// ïðîãðàììà ñ÷èòàåò âïîëíå ðàâíîïðàâíûìè ðûíî÷íûå ñèòóàöèè,
// ðåàëèçîâàííûå â ïðîøëîì è â íîâîì ãîäó. Ñ ó÷åòîì òðåáóåìîé
// âåðîÿòíîñòè ïîëîæèòåëüíîãî çàêðûòèÿ (Probab) ýòî ïðèâîäèò ê òîìó,
// ÷òî ïðîãðàììà èùåò äîëãîñðî÷íûå ñòàáèëüíûå òðåíäû.  òî æå âðåìÿ,
// îíà èãíîðèðóåò ÿâíûå ïðèçíàêè ïîÿâëåíèÿ íîâûõ òðåíäîâ. Íàïðîòèâ,
// ïðè âûáîðå forg>1 ïðîãðàììà, íàðÿäó ñ äîëãîñðî÷íûìè òðåíäàìè,
// êîòîðûå äåéñòâîâàëè íà âñåé äîñòóïíîé èñòîðèè, îòñëåæèâàåò òàêæå
// ïîÿâëåíèå íîâûõ òðåíäîâ. Ïðè ïîÿâëåíèè î÷åðåäíîé ðûíî÷íîé ñèòóàöèè
// ñòàòèñòè÷åñêèé âåñ ïðåäûäóùèõ àíàëîãè÷íûõ ðûíî÷íûõ ñèòóàöèè
// ïîíèæàåòñÿ â forg ðàç. Èíà÷å ãîâîðÿ, ïðè forg=1.05 çàáûâàíèå
// èñòîðèè íàïîëîâèíó ïðîèñõîäèò ïðè ïîÿâëåíèè 10-15 àíàëîãè÷íûõ
// öåíîâûõ êîìáèíàöèé;
// - dstop =TakeProfit=StopLoss. Â òåêóùåé âåðñèè ïðîãðàììû âñåãäà
// âûñòàâëÿåòñÿ îãðàíè÷åíèå ïðèáûëè, ðàâíîå îãðàíè÷åíèþ ïîòåðü.
// Îäíàêî, ïðîãðàììà ìîæåò çàêðûâàòü ïîçèöèè, íå äîæèäàÿñü
// äîñòèæåíèÿ ñòîïîâ.
// - delta ìèíèìàëüíûé øàã, ïðè êîòîðîì öåíà ñ÷èòàåòñÿ
// íåòîæäåñòâåííà ïðåäûäóùåé, è ïðîèñõîäèò îáíîâëåíèå öåíîâûõ
// ïàòòåðíîâ. Ïðè îáó÷åíèè íà êîðîòêèõ ïåðèîäàõ ýòîò ïàðàìåòð ìîæíî
// âçÿòü 1-2 (îáíîâëåíèå ïàòòåðíîâ íà êàæäûé òèê), áîëüøèå ïåðèîäû
// ìîãóò áûòü àäåêâàòíî âîñïðèíÿòû Òåñòåðîì òîëüêî ïðè áîëåå ãðóáîì
// ðàçðåøåíèè, delta=3-5. Ôàêòè÷åñêè, ïðîãðàììà àíàëèçèðóåò òèêè,
// à ïàðàìåòð delta çàìåíÿåò ñîáîé âûáîð òàéìôðåéìà;
// - Nidelt ÷èñëî òèïîâ öåíîâûõ ïàòòåðíîâ (÷èñëî øàãîâ ïî èçìåíåíèþ
// øàãà). Ýòî íåïðîñòîé ïàðàìåòð, çíà÷åíèå êîòîðîãî ìîæíî îñòàâèòü
// ðàâíûì ïî óìîë÷àíèþ. Ïðè êàæäîì èçìåíåíèè öåíû ïðîãðàììà
// àíàëèçèðóåò öåíû, çàïèñàííûå â íàáîðå èç Nidelt òèïîâ ïàòòåðíîâ
// èç NN ýëåìåíòîâ êàæäûé. Öåíû ñîñåäíèõ ýëåìåíòîâ idelt ïàòòåðíà
// îòëè÷àþòñÿ íà âåëè÷èíó delta*idelt, ãäå 1<idelt<Nidelt.
// Òàêèì îáðàçîì, íàáîð ïàòòåðíîâ öåí ïðåäñòàâëÿåò èíôîðìàöèþ î ðûíêå
// â ðàçëè÷íûõ ñòåïåíÿõ îãðóáëåíèÿ. Ïðè î÷åðåäíîì îáíîâëåíèè öåíû
// îáíîâëÿåòñÿ âåñü íàáîð öåíîâûõ ïàòòåðíîâ, òàê ÷òî ïåðâûé ýëåìåíò â
// êàæäîì ïàòòåðíå ðàâåí òåêóùåé öåíå (ñ òî÷íîñòüþ äî delta*idelt),
// çíà÷åíèÿ âñåõ ýëåìåíòîâ ïåðåïèñûâàþòñÿ íà îäèí íîìåð ñïðàâà íàëåâî,
// à ïîñëåäíèå ýëåìåíòû ñòèðàþòñÿ.
// - NN ðàçìåð ïàòòåðíà. Ýòî âàæíûé ïàðàìåòð, óêàçûâàþùèé íà ÷èñëî
// ýëåìåíòîâ â ïàòòåðíå. Åñëè ÷èñëî ýëåìåíòîâ ìàëî, òî ñòàòèñòèêà
// áóäåò çíà÷èìà (ñäåëîê ìíîãî), íî ïàòòåðíû ñëèøêîì ïðîñòû è ãðóáû,
// è íå îáÿçàòåëüíî îáíàðóæàòñÿ ïàòòåðíû, îáåñïå÷èâàþùèå âûèãðûø ñ
// âåðîÿòíîñòüþ âûøå çàäàííîé. Åñëè ýëåìåíòîâ ìíîãî, çíà÷èò
// ðàññìàòðèâàþòñÿ äëèííûå ïàòòåðíû, ñàìèõ ïàòòåðíîâ ìíîãî, è çíà÷èò
// ñòàòèñòèêà ïî êàæäîìó ïàòòåðíó íå íàêîïèòñÿ, à òåñòèðîâàíèå áóäåò
// ïðîõîäèòü äîëãî. Âðåìÿ òåñòèðîâàíèÿ ìíîãîêðàòíî âîçðàñòàåò ñ ðîñòîì
// NN! Ðåêîìåíäóåòñÿ NN=10 ïðè òåñòèðîâàíèè ïî äàííûì çà ãîä;
// - Lots - ÷èñëî ëîòîâ (íà÷àëüíîå);
// - Nstop â òåêóùåé âåðñèè ïðîãðàììû íå èñïîëüçóåòñÿ è îñòàåòñÿ
// ðàâíûì ïðèíÿòîìó ïî óìîë÷àíèþ.
//---- input parameters
extern double Lots = 0.1;
extern int ReadHistory = 1; //×òåíèå èñòîðèè (1) èëè ïåðåçàïèñü èñòîðèè (0)
extern double Probab = 0.8; //òðåáóåìàÿ âåðîÿòíîñòü âûèãðûøà
extern int dstop = 25; //øàã èçìåíåíèÿ ñòîïà â ïà÷êå ñòîïîâ
extern int Nstop = 1; //÷èñëî ñòîïîâ â ïà÷êå ñòîïîâ ÍÅ ÁÎËÜØÅ 3
extern int delta = 1; //øàã èçìåíåíèÿ øàãà â âåêòîðå
extern int Nidelt = 20; //÷èñëî øàãîâ ïî èçìåíåíèþ øàãà â âåêòîðå ÍÅ ÁÎËÜØÅ 30
extern int NN = 10; //ðàçìåð âåêòîðà ÍÅ ÁÎËÜØÅ 12
extern double forg = 1.05; //ñêîðîñòü çàáûâàíèÿ ðåçóëüòàòîâ îáó÷åíèÿ
extern bool ReplaceStops = true;
extern double lTrailingStop = 510;
extern double sTrailingStop = 510;
//----
int MagicID; // Óíèêàëüíîå ÷èñëî èäåíòèôèöèðóþùåå îðäåðà ñäåëàííûå ýòèì ýêñïåðòîì
int mn, Ncomb, izm, ii, metka, file1, idelt, i, istop, Take0, Stop0,
TrailingStop, total, ticket;
int buy_open, sell_open, buy_close, sell_close, nb, ns, iii,
ReWriteHistory;
double time0, prob, prob0, OpenPriceBuy, OpenPriceSell, LastBuyOpen, LastSellOpen;
string FileName;
int delt[30], sr[50,30], sd[5000,30,3], stop[3], nsd[5000,30,3];
double P[12,30], pt[30], cen[5000,30,3], rost[5000,30,3], spad[5000,30,3], LastSd[5000,30,3];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
MagicID = 796385000 + Period();
//íå î÷åíü õîðîøàÿ èíèöèàëèçàöèÿ. Íå ðåêîìåíäóåòñÿ ÷àñòî âûêëþ÷àòü ñèñòåìó
for(idelt = 1; idelt <= Nidelt; idelt++)
{
delt[idelt] = delta*idelt;
for(i = 1; i <= NN - 1; i++)
P[i,idelt] = Close[i-1];
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int a;
//Çàùèòà îò áåñïëàòíîãî ðàñïðîñòðàíåíèÿ â Èíòåðíåò
// if(iii==0){Alert("Äåìî-âåðñèÿ ïðîãðàììû ðàáîòàåò òîëüêî íà Òåñòåðå");iii=1;}
// if(IsTesting()==false)return(0);
//************************************************
buy_open = 0; sell_open = 0; buy_close = 0; sell_close = 0;
//----
if(ReadHistory == 0)
ReWriteHistory = 1;
//----
if(Bars < 205 || AccountFreeMargin() < 10)
return(0);
//----
for(idelt = 1; idelt <= Nidelt; idelt++)
{
delt[idelt] = delta*idelt;
//ôîðìèðîâàíèå âåêòîðîâ öåí ñ øàãîì delta*idelt
if(MathAbs(Ask - P[1, idelt]) > (delt[idelt] - 0.5)*Point)
{
for(i = 1; i <= NN - 1; i++)
{
P[NN+1-i, idelt] = P[NN-i, idelt];
}
P[1,idelt] = Ask;
}
//ïðè èçìåíåíèè âåêòîðà ïðîâîäèì îáðàáîòêó íîâîé èíôîðìàöèè
if(MathAbs(P[1, idelt] - pt[idelt]) > 0.5*Point)
{
//ñòðîèì âåêòîð ïàðíûõ ñðàâíåíèé
for(i = 1; i <= NN - 1; i++)
{
if(P[i,idelt] > P[i+1, idelt])
{
sr[i, idelt] = 1;
}
else
{
sr[i,idelt] = 0;
}
}
//âû÷èñëÿåì íîìåð òåêóùåé êîìáèíàöèè
Ncomb = 0; mn = 1;
//----
for(i = 1; i <= NN - 1; i++)
{
Ncomb = Ncomb + mn*sr[i, idelt];
mn = 2*mn;
}
//îòêðûâàåì ôèêòèâíóþ ïîçèöèþ ñ ìåòêîé êîìáèíàöèè, åñëè òàêàÿ ïîçèöèÿ åùå íå îòêðûòà
//îòêðûòèå ïðîâîäèì ïî âñåé ïà÷êå ñòîïîâ c ïîðîãîì ïî ÷àñòîòå ñäåëîê â êàæäîì êàíàëå
for(istop = 1; istop <= Nstop; istop++)
{
if(sd[Ncomb, idelt, istop] == 0 && CurTime() - LastSd[Ncomb, idelt, istop] >
2*Period()*60)
{
sd[Ncomb, idelt, istop] = 1;
cen[Ncomb, idelt, istop] = Ask;
LastSd[Ncomb, idelt, istop] = CurTime();
}
}
//ïðîâåðÿåì âñå ïðåæíèå ôèêòèâíûå ïîçèöèè íà ïðåäìåò çàêðûòèÿ
for(istop = 1; istop <= Nstop; istop++)
{
stop[istop] = dstop*istop;
//----
for(i = 0; i <= mn - 1; i++)
{
if(sd[i, idelt, istop] == 1)
{
if(Ask - cen[i, idelt, istop] > stop[istop]*Point)
{
rost[i, idelt, istop] = rost[i, idelt, istop] / forg + 1;
spad[i, idelt, istop] = spad[i, idelt, istop] / forg;
sd[i, idelt, istop] = 0;
nsd[i, idelt, istop] = nsd[i, idelt, istop] + 1;
}
//----
if(cen[i, idelt, istop] - Ask > stop[istop]*Point)
{
spad[i, idelt, istop] = spad[i, idelt, istop] / forg + 1;
rost[i, idelt, istop] = rost[i, idelt, istop] / forg;
sd[i, idelt, istop] = 0;
nsd[i, idelt, istop] = nsd[i, idelt, istop] + 1;
}
}
}
}
// äàåì ïðèêàç íà îòêðûòèå ðåàëüíîé ïîçèöèè, åñëè ñòàòèñòèêà òåêóùåé
// êîìáèíàöèè áëàãîïðèÿòíà
for(istop = 1; istop <= Nstop; istop++)
{
stop[istop] = dstop*istop;
prob = rost[Ncomb, idelt, istop] / (rost[Ncomb, idelt, istop] +
spad[Ncomb, idelt, istop] + 0.0001);
//----
if(prob > Probab && nsd[Ncomb, idelt, istop] > 10 && CurTime() -
LastBuyOpen > 2*Period()*60)
{
Take0 = stop[istop];
Stop0 = stop[istop];
buy_open = 1;
//----
a = OrdersTotal();
//----
for(i=0; i<a; i++)
if(MyOrder(i))
{ //çàêðûòèå ñèëüíûì ñèãíàëîì
if(OrderType() == OP_SELL)
{
FileName = "FDlast_sell" + Symbol() + Period();
file1 = FileOpen(FileName, FILE_CSV | FILE_READ);
prob0 = FileReadNumber(file1);
//----
if(prob > (prob0 + 0.05))
sell_close = 1;
FileClose(file1);
}
}
FileName = "FDlast_buy" + Symbol() + Period();
file1 = FileOpen(FileName, FILE_CSV | FILE_WRITE);
FileWrite(file1, prob);
FileClose(file1);
}
//ôèêñàöèÿ ïðèáûëè ñëàáûì ñèãíàëîì
a = OrdersTotal();
//----
for(i=0; i<a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_SELL)
{
if(prob > 0.6 && nsd[Ncomb, idelt, istop] > 10 &&
(OrderOpenPrice() - Ask) > (dstop / 2)*Point)
sell_close = 1;
}
}
prob = spad[Ncomb, idelt, istop] / (rost[Ncomb, idelt, istop] +
spad[Ncomb, idelt, istop] + 0.0001);
//----
if(prob > Probab && nsd[Ncomb, idelt, istop] > 10 && CurTime() -
LastSellOpen > 2*Period()*60)
{
Take0 = stop[istop];
Stop0 = stop[istop];
sell_open = 1;
//----
a = OrdersTotal();
//----
for(i=0; i<a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY)
{
FileName = "FDlast_buy" + Symbol() + Period();
file1 = FileOpen(FileName, FILE_CSV | FILE_READ);
prob0 = FileReadNumber(file1);
//----
if(prob > (prob0 + 0.05))
buy_close = 1;
FileClose(file1);
}
}
FileName = "FDlast_sell" + Symbol() + Period();
file1 = FileOpen(FileName, FILE_CSV | FILE_WRITE);
FileWrite(file1, prob);
FileClose(file1);
}
//ôèêñàöèÿ ïðèáûëè ñëàáûì ñèãíàëîì
a = OrdersTotal();
//----
for(i=0; i<a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY)
{
if(prob > 0.6 && nsd[Ncomb, idelt, istop] > 10 &&
(Bid - OrderOpenPrice()) > (dstop / 2)*Point)
buy_close = 1;
}
}
}
izm = izm + 1;
}
pt[idelt]=P[1,idelt];
}
//Ñ÷èòûâàíèå èíôîðìàöèè èç ôàéëà
if(ii == 0)
{
FileName = "FD_" + Symbol();
ii = 1;
file1 = FileOpen(FileName, FILE_CSV | FILE_READ);
metka = FileReadNumber(file1);
time0 = FileReadNumber(file1);
//----
if(metka == 1 && ReadHistory == 1 && ReWriteHistory != 1)
{
/* for(idelt = 1; idelt <= Nidelt; idelt++)
{
for(i = 1; i <= NN; i++)
{
P[i,idelt] = FileReadNumber(file1);
}
}
*/
for(istop = 1; istop <= Nstop; istop++)
{
for(idelt = 1; idelt <= Nidelt; idelt++)
{
for(i= 0; i <= mn - 1; i++)
{
rost[i,idelt,istop] = FileReadNumber(file1);
spad[i,idelt,istop] = FileReadNumber(file1);
nsd[i,idelt,istop] = FileReadNumber(file1);
}
}
}
}
FileClose(file1);
}
//Çàïèñü èíôîðìàöèè â ôàéë ÷åðåç 100 èçìåíåíèé âåêòîðà
//Âîçìîæíîñòü íàêðóòêè ñòàòèñòèêè ïðè ÷àñòîì òåñòèðîâàíèè èñêëþ÷åíà
if(izm > 10 && (CurTime() >= time0 || ReWriteHistory == 1))
{
izm = 0;
FileName = "FD_" + Symbol();
file1=FileOpen(FileName, FILE_CSV | FILE_WRITE);
FileWrite(file1, "1");
FileWrite(file1, CurTime());
/* for(idelt = 1; idelt <= Nidelt; idelt++)
{
for(i=1;i<=NN;i++)
{
FileWrite(file1, P[i,idelt]);
}
}
*/
for(istop = 1; istop <= Nstop; istop++)
{
for(idelt = 1; idelt <= Nidelt; idelt++)
{
for(i = 0; i <= mn - 1; i++)
{
FileWrite(file1, rost[i,idelt,istop]);
FileWrite(file1, spad[i,idelt,istop]);
FileWrite(file1, nsd[i,idelt,istop]);
}
}
}
FileClose(file1);
}
//ÁËÎÊ ÈÑÏÎËÍÅÍÈß ÏÐÈÊÀÇÎÂ
a = OrdersTotal();
total = 0; // Êîëè÷åñòâî îðäåðîâ îòêðûòûõ ýòèì ýêñïåðòîì (ïî 1-ìó â îáå ñòîðîíû)
//----
for(i = 0; i < a; i++)
if(MyOrder(i))
total ++;
//èñïîëíÿåì ïðèêàçû íà îòêðûòèå
if(total == 0)
{
if(buy_open == 1 && MathAbs(OpenPriceBuy - Ask) > 10*Point)
{
OrderNew(OP_BUY);
return(0);
}
//----
if(sell_open == 1 && MathAbs(OpenPriceSell - Bid) > 10*Point)
{
OrderNew(OP_SELL);
return(0);
}
}
//----
if(total == 1)
{
a = OrdersTotal();
//----
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_SELL)
{
if(buy_open == 1 && MathAbs(OpenPriceSell - Bid) > 10*Point)
{
OrderNew(OP_BUY);
return(0);
}
}
//----
if(OrderType() == OP_BUY)
{
if(sell_open == 1 && MathAbs(OpenPriceBuy - Ask) > 10*Point)
{
OrderNew(OP_SELL);
return(0);
}
}
}
}
//ñìåùåíèå ñòîïîâ ïðè ïîâòîðíûõ ïðèêàçàõ íà îòêðûòèå ïîçèöèè òîãî æå òèïà
a = OrdersTotal();
//----
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY && buy_open == 1 && Bid - OrderStopLoss() > Stop0*Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Stop0*Point,
Bid + Take0*Point, 0, Orange);
return(0);
}
//----
if(OrderType() == OP_SELL && sell_open == 1 && OrderStopLoss() - Ask > Stop0*Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Stop0*Point,
Ask - Take0*Point, 0, Red);
return(0);
}
}
//ñíèìàåì ïðèêàçû íà îòêðûòèå, åñëè íóæíûå ïîçèöèè óæå îòêðûòû
a = OrdersTotal();
//----
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY)
{
buy_open = 0;
LastBuyOpen = CurTime();
OpenPriceBuy = OrderOpenPrice();
}
//----
if(OrderType() == OP_SELL)
{
sell_open = 0;
LastSellOpen = CurTime();
OpenPriceSell = OrderOpenPrice();
}
}
//èñïîëíÿåì ïðèêàçû íà çàêðûòèå
a = OrdersTotal();
//----
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(buy_close == 1 && OrderType() == OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Orange);
return(0);
}
//----
if(sell_close == 1 && OrderType() == OP_SELL)
{
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);
return(0);
}
}
//ñíèìàåì ïðèêàçû íà çàêðûòèå, åñëè íóæíûå ïîçèöèè óæå çàêðûòû
nb = 0;
ns = 0;
a = OrdersTotal();
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY)
nb = 1;
if(OrderType() == OP_SELL)
ns = 1;
}
//----
if (nb == 0)
buy_close = 0;
//----
if (ns == 0)
sell_close = 0;
//ÄÂÈÆÅÍÈÅ ÑÒÎÏÎÂ
a = OrdersTotal();
for(i = 0; i < a; i++)
if(MyOrder(i))
{
if(OrderType() == OP_BUY && TrailingStop > 10)
{
if(OrderStopLoss() < Bid - Point*TrailingStop)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point*TrailingStop,
Bid + Point*TrailingStop, 0, Orange);
}
if(OrderType() == OP_SELL && TrailingStop > 10)
{
if(OrderStopLoss() > Ask + Point*TrailingStop)
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point*TrailingStop,
Ask - Point*TrailingStop, 0, Red);
}
}
return(0);
}
//+------------------------------------------------------------------+
// Ñîçäàíèå íîâîãî îðäåðà
//+------------------------------------------------------------------+
void OrderNew(int cmd)
{
if(cmd == OP_BUY)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask - Stop0*Point,
Ask + Take0*Point, "AT", MagicID, 0, Blue);
//----
if(ticket < 0)
Print("ÑÝ OrderSend() Error: ", GetLastError());
else
Print("Trying to open BUY price: ", Ask, " Stop ", Ask - Stop0*Point,
" TP ", Point, Ask + (Take0*Point));
}
else
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + Stop0*Point,
Bid - Take0*Point, "AT", MagicID, 0, Red);
//----
if(ticket < 0)
Print("ÑÝ OrderSend() Error: ", GetLastError());
else
Print("Trying to open SELL price: ", Bid, " Stop ", Bid + Stop0*Point,
" TP ", Bid - Take0*Point);
}
}
//+------------------------------------------------------------------+
// Âîçâðàùàåò TRUE åñëè âûáðàííûé îðäåð ïðèíàäëåæèò ýòîìó ýêñïåðòó
//+------------------------------------------------------------------+
bool MyOrder(int a)
{
return(OrderSelect(a, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() &&
OrderMagicNumber() == MagicID);
}
//+------------------------------------------------------------------+
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
---