Price Data Components
Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Interceptor
//+-----------------------------------------------------------------------+
//| Interceptor.mq4 |
//| Sergey |
//| mserega@yandex.ru |
//+-----------------------------------------------------------------------+
#property copyright "Sergey"
#property link "mserega@yandex.ru"
//+-----------------------------------------------------------------------+
//ñîâåòíèê äëÿ ãðàôèêà Ì5 GBP/USD
//ïåðèîä òåñòèðîâàíèÿ 01.01.2000 - 10.07.2012 (12 ëåò)
//ñäåëîê 321, ïðèáûëü 2157, ïðîñàäêà 145, ïðèáûëüíîñòü 4.1 (çàêðûòèå ïî òåéê ïðîôèòó)
extern double LotPoz = 0.01; //ëîò ïðè îáû÷íîì îòêðûòèè ïîçèöèè (åñëè íåò ñîâïàäåíèÿ ñèãíàëîâ)
extern double KoefYzk = 0.35; //êîýôôèöèýíò óçêîñòè ôëåòà íà Ì5 (êîëè÷åñòâî ïóíêòîâ íà 1 áàð)
extern int StopLos = 50; //íà÷àëüíûé ñòîï ëîññ (åñëè ìåíüøå 10, òî ñòîï ëîññ íå ñòàâèòñÿ)
extern int TeikPro = 0; //òåéê ïðîôèò (åñëè ìåíüøå 10, òî òåéê ïðîôèò íå ñòàâèòñÿ)
extern int ProfBy = 0; //ìèíèìàëüíàÿ ïðèáûëü â ïóíêòàõ ïîñëå ïåðåâîäà â áåçóáûòîê
extern int StopBy = 45; //ñòîï-ëîññ ïîñëå ïåðåâîäà â áåçóáûòîê (ïåðåâîäèì â á/ó, åñëè ïàðàìåòð áîëüøå 9)
extern int YzM5 = 25; //ìàêñèìàëüíî äîïóñòèìîå ðàññòîÿíèå ìåæäó ÌÀ äëÿ âååðà íà ãðàôèêå Ì5 (òîëüêî â ñèãíàë 1)
extern int YzM15 = 20; //ìàêñèìàëüíî äîïóñòèìîå ðàññòîÿíèå ìåæäó ÌÀ äëÿ âååðà íà ãðàôèêå Ì15 (òîëüêî â ñèãíàë 4)
extern int YzH1 = 60; //ìàêñèìàëüíî äîïóñòèìîå ðàññòîÿíèå ìåæäó ÌÀ äëÿ âååðà íà ãðàôèêå Ì15 (òîëüêî â ñèãíàë 6)
extern int StohPer = 24; //ïåðèîä ñòîõàñòèêà (äëÿ Ì5)
extern int StochUp = 85; //âåðõíèé óðîâåíü ñòîõàñòèêà (äëÿ Ì5)
extern int StochDn = 15; //íèæíèé óðîâåíü ñòîõàñòèêà (äëÿ Ì5)
extern int SthBigPr = 24; //ïåðèîä ñòîõàñòèêà (äëÿ Ì15)
extern int SthBigUp = 85; //âåðõíèé óðîâåíü ñòîõàñòèêà (äëÿ Ì15)
extern int SthBigDn = 15; //íèæíèé óðîâåíü ñòîõàñòèêà (äëÿ Ì15)
extern int RazmTel = 15; //ìèíèìàëüíûé ðàçìåð òåëà ñâå÷è (òîëüêî â ñèãíàë 1)
extern int MalFlet = 10; //ìàëåíüêèé ôëåò (ìèíèìàëüíàÿ äëèíà ôëåòà â áàðàõ)
extern int VisFlet = 15; //âûñîêèé ôëåò (ìàêñèìàëüíàÿ âûñîòà ôëåòà â ïóíêòàõ)
extern int RastDiv = 75; //ìèíèìàëüíîå ðàññòîÿíèå â áàðàõ ìåæäó ïèêàìè èíäèêàòîðà äëÿ äèâåðãåíöèè íà Ì5
extern int BigTen = 80; //ìèíèìàëüíûé ïðîöåíò äëèííîé òåíè ìîëîòà
extern int LitTen = 10; //ìàêñèìàëüíûé ïðîöåíò êîðîòêîé òåíè ìîëîòà
extern int MolRaz = 11; //ìèíèìàëüíûé ðàçìåð ìîëîòà â ïóíêòàõ (íà ãðàôèêå Ì5)
extern int MolBar = 8; //êàê äàâíî áûë ìîëîò (ìàêñèìàëüíûé íîìåð åãî áàðà)
extern int MolPer = 15; //íà ñêîëüêèõ áàðàõ ìîëîò ÿâëÿåòñÿ ìàêñèìóìîì (òîëüêî â ñèãíàë 6)
extern int YzIst = 3; //óçêèé èñòî÷íèê (ìàêñèìàëüíàÿ øèðèíà âååðà íà Ì5 â ñàìîé óçêîé òî÷êå)
extern int DalYz = 5; //ñêîëüêî áàðîâ íàçàä âååð ñõîäèëñÿ â "óçêèé èñòî÷íèê" (ïðàêòè÷åñêè â òî÷êó)
extern int KolBr = 10; //äèàïàçîí ìàêñèìóìà èëè ìèíèìóìà, êîòîðûé ïðîáèâàåòñÿ ("óçêèé èñòî÷íèê")
extern int Magic = 1214; //ïîìåòêà ñâîèõ îðäåðîâ òàêèì íîìåðîì
extern int StepTral = 50; //ìèíèìàëüíûé ñäâèã òðàëèíã-ñòîïà
extern int DistTral = 300; //ðàññòîÿíèå îò òðàëèíã-ñòîïà äî öåíû (åñëè ìåíüøå 10, òî òðàë íå ðàáîòàåò)
//ëîòû îòêðûòûõ ïîçèöèé
double lot_buy, lot_sel;
//âååðû ñêîëüçÿùèõ ñðåäíèõ, êîýôôèöèýíò ëîòà (åñëè ñîâïàëè íåñêîëüêî ñèãíàëîâ ñðàçó, òî îòêðûâàåì äâîéíîé ëîò)
int veer_m5, veer_15, veer_h1, lt_koef;
//ïåðåñå÷åíèå ñòîõàñòèêà è ñèãíàëüíîé ëèíèè íà ãðàôèêå Ì5, íà ãðàôèêå Ì15, áàð äëÿ öèêëà
int stoch_crosM5, stoh_per15;
//ïðîáîé ñêîëüçÿùèõ ñðåäíèõ M5 è M15, ïðîáîé ôëåòà íà Ì5, ãîðí (óëó÷øåííàÿ âåðñèÿ âååðà ÌÀ)
int prob_m5, prob_15, prb_flt, hrn_bull, hrn_bear, prb_yz;
//äèâåðãåíöèÿ íà ñòîõàñòèêå Ì5, áàð ãäå åñòü ìîëîò, çíà÷åíèå ìîëîòà
int div_buy, div_sel, mltbr, molot;
//ñèãíàëû óïðàâëåíèÿ îðäåðàìè
int zakr_buy, zakr_sel, otkr_buy, otkr_sel;
//âðåìÿ îòêðûòèÿ áàðà 1 íà òåêóùåì è ïðåäûäóùåì òèêå
datetime vrem_new, vrem_old;
//êîììåíòàðèé ê îðäåðó (ïðè÷èíà îòêðûòèÿ)
string prichina;
//=========================================================================
int init()
{
Comment("\nÇÀÏÓÑÊ ÑÎÂÅÒÍÈÊÀ");
if(Period() != PERIOD_M5)
{
MessageBox("Íóæíî âûáðàòü ïåðèîä M5");
}
if(Symbol() != "GBPUSD")
{
MessageBox("Íóæíî âûáðàòü âàëþòó GBP/USD");
}
vrem_old=Time[2];
return(0);
}
//=========================================================================
int deinit()
{
return(0);
}
//=========================================================================
//+-----------------------------------------------------------------------+
int start()
{
//ðàññòîÿíèÿ ìåæäó êðàéíèìè ñêîëüçÿùèìè ñðåäíèìè
int dist_m5, dist_15, dist_h1;
//âðåìÿ îòêðûòèÿ áàðà 1 íà òåêóùåì òèêå
vrem_new=Time[1];
//åñëè ýòî íîâûé áàð
if(vrem_new!=vrem_old)
{
//îáíóëÿåì ñèãíàëû óïðàâëåíèÿ îðäåðàìè, âûïîëíÿåì àíàëèç è ðàñ÷åòû
zakr_buy=0; zakr_sel=0; otkr_buy=0; otkr_sel=0; prichina="ÑÈÃÍÀËÎÂ ÍÅ ÁÛËÎ"; lt_koef=0;
analyz_m5(veer_m5, dist_m5, prob_m5);
analyz_15(veer_15, dist_15, prob_15);
analyz_H1(veer_h1, dist_h1);
stoch_crosM5 = analyz_stoch();
prb_flt = proboy_fleta();
hrn_bull = ophorn_bull(1);
hrn_bear = ophorn_bear(1);
prb_yz = prob_yzk(1);
div_buy = diver_bull(4);
div_sel = diver_bear(4);
//ïåðåñå÷åíèå ñòîõàñòèêà è ñèãíàëüíîé ëèíèè â êðàéíåé çîíå íà Ì15
stoh_per15 = cros_big_stoh(1);
//íàõîäèì áëèæàéøèé áàð, ãäå åñòü ìîëîò è íàïðàâëåíèå ìîëîòà
//åñëè ó íàñ åñòü äâà ìîëîòà, çàñ÷èòûâàåòñÿ òîëüêî áëèæàéøèé
molot = 0; mltbr=0;
for(mltbr=1; mltbr<20; mltbr++)
{
molot = opr_molot(mltbr);
if(molot != 0) {break;}
}
//ñèãíàë 1 : óçêèé âååð íà Ì5, áîëüøàÿ ñâå÷à, ïåðåñå÷åíèå ñòîõàñòèêà â êðàéíåé çîíå
//----------------------------------------------------------------------
if(dist_m5<YzM5)
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0)&&(stoch_crosM5>0))
{
if((Open[1]+RazmTel*Point)<Close[1])
{
otkr_buy = 1;
lt_koef++;
prichina = "veer and stoch";
}
}
//-------------------------------------------------------------------
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0)&&(stoch_crosM5<0))
{
if((Open[1]-RazmTel*Point)>Close[1])
{
otkr_sel = 1;
lt_koef++;
prichina = "veer and stoch";
}
}
}
//----------------------------------------------------------------------
//ñèãíàë 2 : ïðîáîé âååðà ñðåäíèõ íà Ì5, ó ñâå÷è íåò çàäíåé òåíè
//----------------------------------------------------------------------
if(prob_m5>0)
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0)&&(Open[1]==Low[1]))
{
otkr_buy = 1;
lt_koef++;
prichina = "proboy m5";
}
}
//----------------------------------------------------------------------
if(prob_m5<0)
{
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0)&&(Open[1]==High[1]))
{
otkr_sel = 1;
lt_koef++;
prichina = "proboy m5";
}
}
//----------------------------------------------------------------------
//ñèãíàë 3 : ïðîáîé óçêîãî ôëåòà ïî òðåíäó íà ãðàôèêå Ì5
//----------------------------------------------------------------------
if(prb_flt>0)
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0))
{
otkr_buy = 1;
lt_koef++;
prichina = "proboy fleta";
}
}
//----------------------------------------------------------------------
if(prb_flt<0)
{
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0))
{
otkr_sel = 1;
lt_koef++;
prichina = "proboy fleta";
}
}
//----------------------------------------------------------------------
//ñèãíàë 4 : ïðîáîé ñêîëüçÿùèõ ñðåäíèõ íà Ì5 è íà Ì15, óçîñòü ÌÀ íà Ì15
//----------------------------------------------------------------------
if(prob_15>0)
{
if((prob_m5>0)&&(veer_15>0)&&(veer_h1>0)&&(dist_15<YzM15))
{
otkr_buy = 1;
lt_koef++;
prichina = "proboy 3x";
}
}
//----------------------------------------------------------------------
if(prob_15<0)
{
if((prob_m5<0)&&(veer_15<0)&&(veer_h1<0)&&(dist_15<YzM15))
{
otkr_sel = 1;
lt_koef++;
prichina = "proboy 3x";
}
}
//----------------------------------------------------------------------
//ñèãíàë 5 : äèâåðãåíöèÿ ñòîõàñòèêà íà Ì5
//----------------------------------------------------------------------
if(div_buy>0)
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0))
{
otkr_buy = 1;
lt_koef++;
prichina = "diver stoch";
}
}
//----------------------------------------------------------------------
if(div_sel>0)
{
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0))
{
otkr_sel = 1;
lt_koef++;
prichina = "diver stoch";
}
}
//----------------------------------------------------------------------
//ñèãíàë 6 : ìîëîò íà Ì5 ïî òðåíäó
//----------------------------------------------------------------------
if( (mltbr <= MolBar) && (dist_h1<YzH1) )
{
if( (molot>0) && (mltbr == iLowest(NULL,0,MODE_LOW,MolPer,1)) && (Open[1]<Close[1]) )
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0))
{
otkr_buy = 1;
lt_koef++;
prichina = "molot";
}
}
//----------------------------------------------------------------------
if( (molot<0) && (mltbr == iHighest(NULL,0,MODE_HIGH,MolPer,1)) && (Open[1]>Close[1]) )
{
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0))
{
otkr_sel = 1;
lt_koef++;
prichina = "molot";
}
}
}
//----------------------------------------------------------------------
//ñèãíàë 7 : ïåðåñå÷åíèå ñòîõàñòèêà íà Ì15 â êðàéíåé çîíå ïî òðåíäó
//----------------------------------------------------------------------
if(stoh_per15>0)
{
if((veer_m5>0)&&(veer_15>0)&&(veer_h1>0))
{
otkr_buy = 1;
lt_koef++;
prichina = "stoh15";
}
}
//----------------------------------------------------------------------
if(stoh_per15<0)
{
if((veer_m5<0)&&(veer_15<0)&&(veer_h1<0))
{
otkr_sel = 1;
lt_koef++;
prichina = "stoh15";
}
}
//----------------------------------------------------------------------
//ñèãíàë 8 : ãîðí (î÷åíü óçêèé âååð íà Ì5), öåíà ïðîáèâàåò äèàïàçîí
//----------------------------------------------------------------------
if(prb_yz>0)
{
if((hrn_bull>0)&&(veer_15>0)&&(veer_h1>0)&&(hrn_bull<DalYz))
{
otkr_buy = 1;
lt_koef++;
prichina = "horn_bull";
}
}
//----------------------------------------------------------------------
if(prb_yz<0)
{
if((hrn_bear>0)&&(veer_15<0)&&(veer_h1<0)&&(hrn_bear<DalYz))
{
otkr_sel = 1;
lt_koef++;
prichina = "horn_bear";
}
}
//----------------------------------------------------------------------
//åñëè îòêðûâàåì ïîçèöèþ, òî çàêðûâàåì ïðîòèâîïîëîæíóþ
if(otkr_buy==1) {zakr_sel = 2;}
if(otkr_sel==1) {zakr_buy = 2;}
//åñëè çàêðûâàåì ïîçèöèþ, òî îòìåíÿåì ñèãíàë ê îòêðûòèþ
if(zakr_buy==2) {otkr_buy=0;}
if(zakr_sel==2) {otkr_sel=0;}
//âûâîä íà ýêðàí ðåçóëüòàòîâ ðàñ÷åòîâ
Comment("\nVEER_M5 = ",veer_m5," DIST_M5 = ",dist_m5,
"\n\nVEER_15 = ",veer_15," DIST_15 = ",dist_15,
"\n\nVEER_h1 = ",veer_h1," dist_h1 = ",dist_h1,
"\n\nPRB_FLT = ",prb_flt,
"\n\nSTOCH_CROSM5 = ",stoch_crosM5);
//ðàñ÷åòû âûïîëíåíû, òåïåðü ýòî íå íîâûé áàð
vrem_old = vrem_new;
}
//çàêðûâàåì è ìîäèôèöèðóåì èìåþùèåñÿ îðäåðà
perebor_orderov(zakr_buy, zakr_sel);
//ïîäñ÷èòûâàåì ëîòû îòêðûòûõ ïîçèöèé
podschet_orderov(lot_buy ,lot_sel);
//óñòàíîâêà áàÿ
if((otkr_buy==1)&&(lot_buy<0.01))
{
ystanovit_buy(prichina, lt_koef);
}
//óñòàíîâêà ñåëà
if((otkr_sel==1)&&(lot_sel<0.01))
{
ystanovit_sel(prichina, lt_koef);
}
return(0);
}
//+-----------------------------------------------------------------------+
//=========================================================================
//àíàëèç ñêîëüçÿùèõ ñðåäíèõ íà ãðàôèêå Ì5 (íà òåêóùåì ãðàôèêå)
void analyz_m5(int &veer, int &dist, int &prob)
{
double ma[5];
int v, n;
double vma, nma, rast;
veer = 0; prob=0;
//ñ÷èòûâàåì ñêîëüçÿùèå ñðåäíèå íà áàðå 1
ma[0] = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,1);
ma[1] = iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,1);
ma[2] = iMA(NULL,0,89,0,MODE_EMA,PRICE_CLOSE,1);
ma[3] = iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,1);
ma[4] = iMA(NULL,0,233,0,MODE_EMA,PRICE_CLOSE,1);
//âåðõíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
v = ArrayMaximum(ma);
vma = ma[v];
//íèæíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
n = ArrayMinimum(ma);
nma = ma[n];
//ðàññòîÿíèå ìåæäó âåðõíåé è íèæíåé ÌÀ â ïóíêòàõ
rast = (vma-nma)/Point;
dist = NormalizeDouble(rast, 0);
//îêðóãëèì òðè ëåãêèå ÌÀ äî 4 çíàêîâ ïîñëå çàïÿòîé
ma[0] = NormalizeDouble(ma[0], Digits);
ma[1] = NormalizeDouble(ma[1], Digits);
ma[2] = NormalizeDouble(ma[2], Digits);
//âååð ââåðõ
if( (ma[4]<ma[3]) && (ma[3]<ma[2]) && (ma[2]<=ma[1]) && (ma[1]<=ma[0]) ) {veer = 1;}
//âååð âíèç
if( (ma[4]>ma[3]) && (ma[3]>ma[2]) && (ma[2]>=ma[1]) && (ma[1]>=ma[0]) ) {veer =-1;}
//ïðîáîé ââåðõ
if((Open[1]<nma)&&(Close[1]>vma)) {prob = 1;}
//ïðîáîé âíèç
if((Open[1]>vma)&&(Close[1]<nma)) {prob =-1;}
return;
}
//=========================================================================
//àíàëèç ñêîëüçÿùèõ ñðåäíèõ íà ãðàôèêå Ì15
void analyz_15(int &veer, int &dist, int &prob)
{
double ma[5];
int v, n;
double vma, nma, rast, op_15, cl_15;
veer = 0; prob=0;
//ñ÷èòûâàåì ñêîëüçÿùèå ñðåäíèå íà áàðå 1
ma[0] = iMA(NULL,PERIOD_M15,34,0,MODE_EMA,PRICE_CLOSE,1);
ma[1] = iMA(NULL,PERIOD_M15,55,0,MODE_EMA,PRICE_CLOSE,1);
ma[2] = iMA(NULL,PERIOD_M15,89,0,MODE_EMA,PRICE_CLOSE,1);
ma[3] = iMA(NULL,PERIOD_M15,144,0,MODE_EMA,PRICE_CLOSE,1);
ma[4] = iMA(NULL,PERIOD_M15,233,0,MODE_EMA,PRICE_CLOSE,1);
//âåðõíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
v = ArrayMaximum(ma);
vma = ma[v];
//íèæíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
n = ArrayMinimum(ma);
nma = ma[n];
//ðàññòîÿíèå ìåæäó âåðõíåé è íèæíåé ÌÀ â ïóíêòàõ
rast = (vma-nma)/Point;
dist = NormalizeDouble(rast, 0);
//îêðóãëèì äâå ëåãêèå ÌÀ äî 4 çíàêîâ ïîñëå çàïÿòîé
ma[0] = NormalizeDouble(ma[0], Digits);
ma[1] = NormalizeDouble(ma[1], Digits);
//âååð ââåðõ
if( (ma[4]<ma[3]) && (ma[3]<ma[2]) && (ma[2]<ma[1]) && (ma[1]<=ma[0]) ) {veer = 1;}
//âååð âíèç
if( (ma[4]>ma[3]) && (ma[3]>ma[2]) && (ma[2]>ma[1]) && (ma[1]>=ma[0]) ) {veer =-1;}
//îïðåäåëåíèå ïðîáîÿ òðåõ áûñòðûõ ñêîëüçÿùèõ ñðåäíèõ íà ãðàôèêå Ì15
op_15 = iOpen(NULL,PERIOD_M15,1);
cl_15 = iClose(NULL,PERIOD_M15,1);
if((op_15>0)&&(cl_15>0))
{
if((op_15<ma[0])&&(op_15<ma[1])&&(op_15<ma[2]))
{
if((cl_15>ma[0])&&(cl_15>ma[1])&&(cl_15>ma[2])) {prob = 1;}
}
if((op_15>ma[0])&&(op_15>ma[1])&&(op_15>ma[2]))
{
if((cl_15<ma[0])&&(cl_15<ma[1])&&(cl_15<ma[2])) {prob =-1;}
}
}
return;
}
//=========================================================================
//àíàëèç ñêîëüçÿùèõ ñðåäíèõ íà ãðàôèêå H1
void analyz_H1(int &veer, int &dist)
{
double ma[5];
int v, n;
double vma, nma, rast;
veer = 0;
//ñ÷èòûâàåì ñêîëüçÿùèå ñðåäíèå íà áàðå 1
ma[0] = iMA(NULL,PERIOD_H1,34,0,MODE_EMA,PRICE_CLOSE,1);
ma[1] = iMA(NULL,PERIOD_H1,55,0,MODE_EMA,PRICE_CLOSE,1);
ma[2] = iMA(NULL,PERIOD_H1,89,0,MODE_EMA,PRICE_CLOSE,1);
ma[3] = iMA(NULL,PERIOD_H1,144,0,MODE_EMA,PRICE_CLOSE,1);
ma[4] = iMA(NULL,PERIOD_H1,233,0,MODE_EMA,PRICE_CLOSE,1);
//âåðõíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
v = ArrayMaximum(ma);
vma = ma[v];
//íèæíÿÿ ñêîëüçÿùàÿ ñðåäíÿÿ
n = ArrayMinimum(ma);
nma = ma[n];
//ðàññòîÿíèå ìåæäó âåðõíåé è íèæíåé ÌÀ â ïóíêòàõ
rast = (vma-nma)/Point;
dist = NormalizeDouble(rast, 0);
//âååð ââåðõ
if( (ma[4]<ma[3]) && (ma[3]<ma[2]) && (ma[2]<ma[1]) && (ma[1]<ma[0]) ) {veer = 1;}
//âååð âíèç
if( (ma[4]>ma[3]) && (ma[3]>ma[2]) && (ma[2]>ma[1]) && (ma[1]>ma[0]) ) {veer =-1;}
return;
}
//=========================================================================
//åñëè ïðàâèëüíûé âååð ðàñøèðÿåòñÿ èç î÷åíü óçêîãî èñòî÷íèêà, òî ýòî "ãîðí"
int ophorn_bull(int b)
{
double ma5, ma4, ma3, ma2, ma1;
double rast_i, rast_b;
int i;
//ñ÷èòûâàåì ñêîëüçÿùèå ñðåäíèå íà áàðå b
ma1 = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,b);
ma2 = iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,b);
ma3 = iMA(NULL,0,89,0,MODE_EMA,PRICE_CLOSE,b);
ma4 = iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,b);
ma5 = iMA(NULL,0,233,0,MODE_EMA,PRICE_CLOSE,b);
//åñëè ýòî ïðàâèëüíûé âååð ââåðõ
if( (ma5<ma4) && (ma4<ma3) && (ma3<ma2) && (ma2<ma1) )
{
rast_b = ma1 - ma5;
//íà÷èíàåì ïðîñìîòð ïó÷êà ñêîëüçÿùèõ ñðåäíèõ íàçàä îò òî÷êè b
for(i=(b+1); i<(b+300); i++)
{
//ñ÷èòûâàåì çíà÷åíèÿ ÌÀ
ma1 = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,i);
ma2 = iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,i);
ma3 = iMA(NULL,0,89,0,MODE_EMA,PRICE_CLOSE,i);
ma4 = iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,i);
ma5 = iMA(NULL,0,233,0,MODE_EMA,PRICE_CLOSE,i);
ma1 = NormalizeDouble(ma1,Digits);
ma2 = NormalizeDouble(ma2,Digits);
ma3 = NormalizeDouble(ma3,Digits);
ma4 = NormalizeDouble(ma4,Digits);
ma5 = NormalizeDouble(ma5,Digits);
//åñëè ïî÷òè ïðàâèëüíûé âååð ñîõðàíÿåòñÿ
if( ((ma5<=ma3)&&(ma4<=ma3)&&(ma3<=ma2)&&(ma2<=ma1)) || ((ma5<=ma4)&&(ma4<=ma3)&&(ma3<=ma2)&&(ma3<=ma1)) )
{
rast_i = MathMax(ma2,ma1) - MathMin(ma5,ma4);
//åñëè âååð ñòàíîâèòñÿ øèðå, ÷åì â òî÷êå bx îí íàì íå ïîäõîäèò
if(rast_i > (rast_b+2*Point)) {return(0);}
//èùåì áàð, ãäå âååð ñõîäèòñÿ â óçêèé èñòî÷íèê è âîçâðàùàåì åãî
if( (rast_i < (YzIst*Point)) && (rast_i < rast_b) ) {return(i);}
}
else {return(0);}
}
}
return(0);
}
//=========================================================================
//åñëè ïðàâèëüíûé âååð ðàñøèðÿåòñÿ èç î÷åíü óçêîãî èñòî÷íèêà, òî ýòî "ãîðí"
int ophorn_bear(int b)
{
double ma5, ma4, ma3, ma2, ma1;
double rast_i, rast_b;
int i;
//ñ÷èòûâàåì ñêîëüçÿùèå ñðåäíèå íà áàðå b
ma1 = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,b);
ma2 = iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,b);
ma3 = iMA(NULL,0,89,0,MODE_EMA,PRICE_CLOSE,b);
ma4 = iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,b);
ma5 = iMA(NULL,0,233,0,MODE_EMA,PRICE_CLOSE,b);
//åñëè ýòî ïðàâèëüíûé âååð âíèç
if( (ma5>ma4) && (ma4>ma3) && (ma3>ma2) && (ma2>ma1) )
{
rast_b = ma5 - ma1;
//íà÷èíàåì ïðîñìîòð ïó÷êà ñêîëüçÿùèõ ñðåäíèõ íàçàä îò òî÷êè b
for(i=(b+1); i<(b+300); i++)
{
//ñ÷èòûâàåì çíà÷åíèÿ ÌÀ
ma1 = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,i);
ma2 = iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,i);
ma3 = iMA(NULL,0,89,0,MODE_EMA,PRICE_CLOSE,i);
ma4 = iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,i);
ma5 = iMA(NULL,0,233,0,MODE_EMA,PRICE_CLOSE,i);
ma1 = NormalizeDouble(ma1,Digits);
ma2 = NormalizeDouble(ma2,Digits);
ma3 = NormalizeDouble(ma3,Digits);
ma4 = NormalizeDouble(ma4,Digits);
ma5 = NormalizeDouble(ma5,Digits);
//åñëè ïî÷òè ïðàâèëüíûé âååð ñîõðàíÿåòñÿ
if( ((ma5>=ma3)&&(ma4>=ma3)&&(ma3>=ma2)&&(ma2>=ma1)) || ((ma5>=ma4)&&(ma4>=ma3)&&(ma3>=ma2)&&(ma3>=ma1)) )
{
rast_i = MathMax(ma5,ma4) - MathMin(ma2,ma1);
//åñëè âååð ñòàíîâèòñÿ øèðå, ÷åì â òî÷êå b îí íàì íå ïîäõîäèò
if(rast_i > (rast_b+2*Point)) {return(0);}
//èùåì áàð, ãäå âååð ñõîäèòñÿ â óçêèé èñòî÷íèê è âîçâðàùàåì åãî
if( (rast_i < (YzIst*Point)) && (rast_i < rast_b) ) {return(i);}
}
else {return(0);}
}
}
return(0);
}
//=========================================================================
//îïðåäåëåíèå ïðîáîÿ äèàïàçîíà äëÿ ñèãíàëà óçîñòè íà áàðå b
int prob_yzk(int b)
{
double lev_up, lev_dn;
lev_up = High[iHighest(NULL,0,MODE_HIGH,KolBr,(b+1))];
lev_dn = Low[iLowest(NULL,0,MODE_LOW,KolBr,(b+1))];
if( (Open[1]<lev_up) && (Close[1]>lev_up) ) {return(1);}
if( (Open[1]>lev_dn) && (Close[1]<lev_dn) ) {return(-1);}
return(0);
}
//=========================================================================
//åñòü ëè äèâåðãåíöèÿ ñèãíàë ê ïîêóïêå íà áàðå b (ïðàâûé ìèíèìóì èíäèêàòîðà)
int diver_bull(int b)
{
int i;
double st1, st2, st3, st4, st5, st6, st7, stoh_min, yama1, lw2, lw1;
if(b<4) {return(0);}
st1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-3));
st2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-2));
st3 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-1));
st4 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, b);
st5 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+1));
st6 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+2));
st7 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+3));
//åñëè òî÷êà b ýòî ÿìà íà èíäèêàòîðå ñòîõàñòèê
if((st7>st4)&&(st6>st4)&&(st5>st4))
{
if((st4<st3)&&(st3<st2)&&(st2<st1))
{
//îáúÿâëÿåì åå ìèíèìóìîì
yama1 = st4;
stoh_min = st4;
//ìèíèìàëüíàÿ öåíà â ýòîé îáëàñòè
lw1 = Low[iLowest(NULL,0,MODE_LOW,7,(b-3))];
for(i=(b+4); i<300; i++)
{
//öåíà íå äîëæíà îïóñêàòüñÿ íèæå ïåðâîãî ìèíèìóìà
if(Low[i]<lw1) {return(0);}
st1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-3));
st2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-2));
st3 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-1));
st4 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, i);
st5 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+1));
st6 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+2));
st7 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+3));
if((st7>st4)&&(st6>st4)&&(st5>st4))
{
if((st4<st3)&&(st4<st2)&&(st4<st1))
{
if( (st4<stoh_min) && (i>(b+RastDiv)) )
{
lw2 = Low[iLowest(NULL,0,MODE_LOW,7,(i-3))];
if(lw2>lw1) {return(i);}
}
//ïðàâûé ìèíèìóì äîëæåí áûòü íèæå âñåõ, êðîìå ëåâîãî
if(st4<yama1) {return(0);}
}
}
if(st4<stoh_min) {stoh_min = st4;}
}
}
}
return(0);
}
//=========================================================================
//åñòü ëè äèâåðãåíöèÿ ñèãíàë ê ïðîäàæå íà áàðå b (ïðàâûé ìàêñèìóì èíäèêàòîðà)
int diver_bear(int b)
{
int i;
double st1, st2, st3, st4, st5, st6, st7, stoh_max, xolm1, hi2, hi1;
if(b<4) {return(0);}
st1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-3));
st2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-2));
st3 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b-1));
st4 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, b);
st5 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+1));
st6 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+2));
st7 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+3));
//åñëè òî÷êà b ýòî õîëì íà èíäèêàòîðå ñòîõàñòèê
if((st7<st4)&&(st6<st4)&&(st5<st4))
{
if((st4>st3)&&(st3>st2)&&(st2>st1))
{
//îáúÿâëÿåì åå ìàêñèìóìîì
xolm1 = st4;
stoh_max = st4;
//ìàêñèìàëüíàÿ öåíà â ýòîé îáëàñòè
hi1 = High[iHighest(NULL,0,MODE_HIGH,7,(b-3))];
for(i=(b+4); i<300; i++)
{
//öåíà íå äîëæíà ïîäíèìàòüñÿ âûøå ïåðâîãî ìàêñèìóìà
if(High[i]>hi1) {return(0);}
st1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-3));
st2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-2));
st3 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i-1));
st4 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, i);
st5 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+1));
st6 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+2));
st7 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, (i+3));
if((st7<st4)&&(st6<st4)&&(st5<st4))
{
if((st4>st3)&&(st4>st2)&&(st4>st1))
{
if( (st4>stoh_max) && (i>(b+RastDiv)) )
{
hi2 = High[iHighest(NULL,0,MODE_HIGH,7,(i-3))];
if(hi2<hi1) {return(i);}
}
//ïðàâûé ìàêñèìóì äîëæåí áûòü âûøå âñåõ, êðîìå ëåâîãî
if(st4>xolm1) {return(0);}
}
}
if(st4>stoh_max) {stoh_max = st4;}
}
}
}
return(0);
}
//=========================================================================
//àíàëèç ñòîõàñòèêà íà ãðàôèêå Ì5 (íà òåêóùåì ãðàôèêå)
int analyz_stoch()
{
double st2, st1;
double si2, si1;
//ñòîõàñòèê íà áàðàõ 3, 2, 1
st2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, 2);
st1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_MAIN, 1);
//ñèãíàëüíàÿ ëèíèÿ íà áàðàõ 3, 2, 1
si2 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_SIGNAL, 2);
si1 = iStochastic(NULL, 0, StohPer, 4, 3, MODE_SMA, 0, MODE_SIGNAL, 1);
//ïåðåñå÷åíèå ñíèçó ââåðõ
if((st2<si2)&&(st2<StochDn)&&(st1>si1)) {return(1);}
//ïåðåñå÷åíèå ñâåðõó âíèç
if((st2>si2)&&(st2>StochUp)&&(st1<si1)) {return(-1);}
return(0);
}
//=========================================================================
//àíàëèç ñòîõàñòèêà íà ãðàôèêå Ì15 (ïîèñê ïåðåñå÷åíèÿ ñ ñèãíàëüíîé ëèíèåé + ïîäòâåðæäåíèå äâèæåíèåì öåíû)
//ïðîâåðÿåòñÿ ôàêò íàëè÷èÿ ïåðåñå÷åíèÿ íà áàðå b Ì15 â êðàéíåé çîíå
int cros_big_stoh(int b)
{
double st3, st2, st1;
double si2, si1;
double op1, cl1;
//ñòîõàñòèê íà áàðàõ 3, 2, 1 (áàð 1 ýòî áàð b)
st3 = iStochastic(NULL, PERIOD_M15, SthBigPr, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+2));
st2 = iStochastic(NULL, PERIOD_M15, SthBigPr, 4, 3, MODE_SMA, 0, MODE_MAIN, (b+1));
st1 = iStochastic(NULL, PERIOD_M15, SthBigPr, 4, 3, MODE_SMA, 0, MODE_MAIN, b);
//ñèãíàëüíàÿ ëèíèÿ íà áàðàõ 2, 1
si2 = iStochastic(NULL, PERIOD_M15, SthBigPr, 4, 3, MODE_SMA, 0, MODE_SIGNAL, (b+1));
si1 = iStochastic(NULL, PERIOD_M15, SthBigPr, 4, 3, MODE_SMA, 0, MODE_SIGNAL, b);
//îòêðûòèå è çàêðûòèå áàðà 1 íà Ì15
op1 = iOpen(NULL,PERIOD_M15,1);
cl1 = iClose(NULL,PERIOD_M15,1);
if( (op1 == 0) || (cl1 == 0) ) {return(0);}
//ñèãíàë ê ïîêóïêå
if((st2<si2)&&(st1>si1)&&(op1<cl1))
{
if( (st3<SthBigDn) || (st2<SthBigDn) ) {return(1);}
}
//ñèãíàë ê ïðîäàæå
if((st2>si2)&&(st1<si1)&&(op1>cl1))
{
if( (st3>SthBigUp) || (st2>SthBigUp) ) {return(-1);}
}
return(0);
}
//=========================================================================
//ïîèñê ôëåòà íà çàäàííîì áàðå (âîçâðàùàåò êîëè÷åñòâî áàðîâ, âåðõ, íèç ôëåòà)
void poisk_fleta(int b, int &flt_kl, double &flt_up, double &flt_dn)
{
double ver_fl, niz_fl, nash_razm;
int i, kol;
flt_kl=0; flt_up=0; flt_dn=0;
kol=1;
ver_fl=High[b];
niz_fl=Low[b];
//èùåì äëèííûé è óçêèé ó÷àñòîê
for(i=(b+1); i<(b+500); i++)
{
if(High[i]>ver_fl) {ver_fl=High[i];}
if(Low[i]<niz_fl) {niz_fl=Low[i];}
//åñëè ïðåâûñèëè ìàêñèìàëüíóþ âûñîòó âûõîäèì
if((ver_fl-niz_fl)>(VisFlet*Point)) {return;}
kol++;
if(kol>MalFlet)
{
//íàø ðàçìàõ ôëåòà (äëÿ äàííîãî êîëè÷åñòâà áàðîâ)
nash_razm=NormalizeDouble(((kol*KoefYzk)*Point),Digits);
if((ver_fl-niz_fl)<nash_razm)
{
flt_kl = kol;
flt_up = ver_fl;
flt_dn = niz_fl;
return;
}
}
}
return;
}
//=========================================================================
//åñòü ëè ïðîáîé ôëåòà íà ãðàôèêå Ì5 (íà òåêóùåì ãðàôèêå)
int proboy_fleta()
{
//âåðõíÿÿ è íèæíÿÿ ãðàíèöà ôëåòà
double v_gr, n_gr;
//êîëè÷åñòâî áàðîâ âî ôëåòå
int fk;
//èùåì ôëåò íà áàðå 2 (ïðîáîé áàðîì 1)
poisk_fleta(2,fk,v_gr,n_gr);
if(fk>0)
{
if((Open[1]<v_gr)&&(Close[1]>v_gr)) {return( 1);}
if((Open[1]>n_gr)&&(Close[1]<n_gr)) {return(-1);}
}
//èùåì ôëåò íà áàðå 3, ïðîáîé äâóìÿ áàðàìè (2 è 1)
poisk_fleta(3,fk,v_gr,n_gr);
if(fk>0)
{
if((Open[1]<v_gr)&&(Close[2]>v_gr)&&(Open[1]<Close[1])&&(Open[2]<Close[2])) {return( 1);}
if((Open[1]>n_gr)&&(Close[2]<n_gr)&&(Open[1]>Close[1])&&(Open[2]>Close[2])) {return(-1);}
}
return(0);
}
//=========================================================================
//ïðîâåðêà, åñòü ëè ìîëîò íà áàðå br
int opr_molot(int br)
{
double razm_br, ver_ten, niz_ten;
razm_br = High[br] - Low[br];
ver_ten = High[br] - MathMax(Open[br], Close[br]);
niz_ten = MathMin(Open[br], Close[br]) - Low[br];
if( razm_br > (MolRaz*Point) )
{
if( (100*niz_ten) > (BigTen*razm_br) )
{
if( (100*ver_ten) < (LitTen*razm_br) )
{
return(1);
}
}
if( (100*ver_ten) > (BigTen*razm_br) )
{
if( (100*niz_ten) < (LitTen*razm_br) )
{
return(-1);
}
}
}
return(0);
}
//=========================================================================
//ïîäñ÷åò ëîòîâ áàåâ è ñåëîâ íàøèõ îðäåðîâ (ïåðåâåäåííûå â á/ó íå ñ÷èòàåì)
void podschet_orderov(double &ob,double &os)
{
int i=0, kol=0;
//â íà÷àëå îáíóëÿåì îòâåòû
ob=0; os=0;
kol=OrdersTotal();
if(kol<1) {return;}
for(i=0; i<kol; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) )
{
if(OrderType()==OP_BUY )
{
if( (OrderStopLoss()==0) || (OrderStopLoss() < OrderOpenPrice()) )
{
ob=ob+OrderLots();
}
}
if(OrderType()==OP_SELL)
{
if( (OrderStopLoss()==0) || (OrderStopLoss() > OrderOpenPrice()) )
{
os=os+OrderLots();
}
}
}
}
}
return;
}
//=========================================================================
//äåéñòâèÿ ñ îðäåðîì OP_BUY
void obr_open_buy(int cl_b)
{
bool close, modify;
//çàêðûòèå âî èçáåæàíèå ïîòåðü
if(cl_b==2)
{
close = OrderClose(OrderTicket(),OrderLots(),Bid,3,Purple);
if(close == false)
{
Print("Íå óäàëîñü çàêðûòü îðäåð OP_BUY êîä îøèáêè ",GetLastError());
}
return;
}
//ïåðåâîä ñòîï-ëîññà â áåçóáûòîê
if(StopBy>9)
{
if( (OrderStopLoss()==0) || (OrderStopLoss()<OrderOpenPrice()) )
{
if( (Bid-StopBy*Point) > (OrderOpenPrice()+ProfBy*Point) )
{
modify = OrderModify(OrderTicket(),OrderOpenPrice(),(Bid-StopBy*Point),OrderTakeProfit(),0,Magenta);
if(modify == false)
{
Print("Íå óäàëîñü ïåðåâåñòè â áåçóáûòîê îðäåð OP_BUY êîä îøèáêè ",GetLastError());
}
return;
}
}
}
//ïåðåäâèæåíèå òðàëèíã-ñòîïà
if(DistTral > 9)
{
if( (Bid - DistTral*Point) > OrderOpenPrice() )
{
if( (Bid - DistTral*Point) > (OrderStopLoss() + StepTral*Point) )
{
modify = OrderModify(OrderTicket(),OrderOpenPrice(),(Bid - DistTral*Point),OrderTakeProfit(),0,Red);
if(modify == false)
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü òðàëèíã ñòîï äëÿ îðäåðà OP_BUY êîä îøèáêè ",GetLastError());
}
return;
}
}
}
return;
}
//=========================================================================
//äåéñòâèÿ ñ îðäåðîì OP_SELL
void obr_open_sell(int cl_s)
{
bool close, modify;
//çàêðûòèå âî èçáåæàíèå ïîòåðü
if(cl_s==2)
{
close = OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);
if(close == false)
{
Print("Íå óäàëîñü çàêðûòü îðäåð OP_SELL êîä îøèáêè ",GetLastError());
}
return;
}
//ïåðåâîä â ñòîï-ëîññà áåçóáûòîê
if(StopBy>9)
{
if( (OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice()) )
{
if( (Ask+StopBy*Point) < (OrderOpenPrice()-ProfBy*Point) )
{
modify = OrderModify(OrderTicket(),OrderOpenPrice(),(Ask+StopBy*Point),OrderTakeProfit(),0,Aqua);
if(modify == false)
{
Print("Íå óäàëîñü ïåðåâåñòè â áåçóáûòîê îðäåð OP_SELL êîä îøèáêè ",GetLastError());
}
return;
}
}
}
//ïåðåäâèæåíèå òðàëèíã-ñòîïà
if(DistTral > 9)
{
if( (Ask + DistTral*Point) < OrderOpenPrice() )
{
if( (Ask + DistTral*Point) < (OrderStopLoss() - StepTral*Point) )
{
modify = OrderModify(OrderTicket(),OrderOpenPrice(),(Ask + DistTral*Point),OrderTakeProfit(),0,Red);
if(modify == false)
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü òðàëèíã ñòîï äëÿ îðäåðà OP_SELL êîä îøèáêè ",GetLastError());
}
return;
}
}
}
return;
}
//=========================================================================
//Çàêðûòèå è ìîäèôèêàöèÿ îðäåðîâ íàøåé âàëþòû
void perebor_orderov(int zak_b, int zak_s)
{
int type=0,kol=0,i=0;
kol=OrdersTotal();
if(kol<1) {return;}
for(i=0; i<kol; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) )
{
type=OrderType();
if(type==OP_BUY)
{
obr_open_buy(zak_b);
continue;
}
if(type==OP_SELL)
{
obr_open_sell(zak_s);
continue;
}
}
}
}
return;
}
//=========================================================================
//óñòàíîâêà îðäåðà OP_BUY
void ystanovit_buy(string prich, int kf)
{
double sl, tp, lt;
int tiket;
sl = 0;
if(StopLos > 9)
{
sl = Bid-StopLos*Point;
}
tp = 0;
if(TeikPro > 9)
{
tp = Ask+TeikPro*Point;
}
lt = LotPoz;
if(kf > 1)
{
//åñëè ñîâïàëî íåñêîëüêî ñèãíàëîâ - îòêðûâàåì äâîéíîé ëîò
lt = lt*2;
}
tiket = OrderSend(Symbol(),OP_BUY,lt,Ask,3,sl,tp,prich,Magic,0,Blue);
if(tiket < 0)
{
Print("Íå óäàëîñü îòêðûòü îðäåð OP_BUY êîä îøèáêè ",GetLastError());
}
return;
}
//=========================================================================
//óñòàíîâêà îðäåðà OP_SELL
void ystanovit_sel(string prich, int kf)
{
double sl, tp, lt;
int tiket;
sl = 0;
if(StopLos > 9)
{
sl = Ask+StopLos*Point;
}
tp = 0;
if(TeikPro > 9)
{
tp=Bid-TeikPro*Point;
}
lt = LotPoz;
if(kf > 1)
{
//åñëè ñîâïàëî íåñêîëüêî ñèãíàëîâ - îòêðûâàåì äâîéíîé ëîò
lt = lt*2;
}
tiket = OrderSend(Symbol(),OP_SELL,lt,Bid,3,sl,tp,prich,Magic,0,Red);
if(tiket < 0)
{
Print("Íå óäàëîñü îòêðûòü îðäåð OP_SELL êîä îøèáêè ",GetLastError());
}
return;
}
//=========================================================================
//THE END :)
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
---