Orders Execution
0
Views
0
Downloads
0
Favorites
SuperAgent
//+------------------------------------------------------------------+
//| SuperAgent.mq4 |
//| Sergey |
//| mserega@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey"
#property link "mserega@yandex.ru"
//+------------------------------------------------------------------+
//ñòàâèòü íà GBP/USD 15 ìèí
extern int StopLos= 80; //ñòîï ëîññ (åñëè ïàðàìåòð áîëüøå 9)
extern int TeikPro= 0; //òåéê ïðîôèò (åñëè ïàðàìåòð áîëüøå 4)
extern int SlMin= 52; //ìèí ñòîï ëîññ ïðè ïåðåâîäå â áó (åñëè ïàðàìåòð áîëüøå 9)
extern int PriBy= 4; //ïðèáûëü ïðè ïåðåâîäå â áó
extern int SiPer=211; //ïåðèîä èíäèêàòîðà Silver trend
extern int SiProc= 33; //ïðîöåíò îòêëîíåíèÿ îò âåðõà è íèçà
extern int SiDal= 3; //ìàêñèìàëüíàÿ óäàëåííîñòü ñòðåëêè îò áàðà 1 ïðè îòêðûòèè
//ëîòû îòêðûòûõ ïîçèöèé
double lb, ls;
//ïåðåìåííûå silver trend
int si_trend, si_bar;
//ñèãíàëû óïðàâëåíèÿ îðäåðàìè
int zakr_buy, zakr_sel, otkr_buy, otkr_sel;
//âðåìÿ îòêðûòèÿ áàðà 1 íà òåêóùåì è ïðåäûäóùåì òèêå
datetime vrem1_cur, vrem1_prev;
//öâåò ñòðåëêè ïðè îòêðûòèè îðäåðà
color cvet_otkr=CLR_NONE;
//ñèãíàëüíàÿ ñòðîêà êîììåíòàðèÿ
string sigstr, trstr;
//ïîÿâèëñÿ ëè íîâûé áàð
bool new_bar;
//================================================================
int init()
{
new_bar=true;
sigstr="ÑÈÃÍÀËÎÂ ÍÅ ÁÛËÎ";
return(0);
}
//================================================================
int deinit()
{
return(0);
}
//================================================================
//+--------------------------------------------------------------+
int start()
{
vrem1_cur=Time[1];
if(vrem1_cur!=vrem1_prev) {new_bar=true;}
if(new_bar)
{
//îáíóëÿåì ñèãíàëû
zakr_buy=0; zakr_sel=0; otkr_buy=0; otkr_sel=0; cvet_otkr=CLR_NONE; trstr="";
//îïðåäåëåíèå íàïðàâëåíèÿ ïîñëåäíåé ñòðåëêè Silver trend è áàðà íà êîòîðîì îíà áûëà
opr_strel(si_trend, si_bar);
//ÑÈÃÍÀË Ê ÎÒÊÐÛÒÈÞ
//-------------------------------------------------------
if((si_trend== 1)&&(si_bar<=SiDal))
{
otkr_buy=1;
cvet_otkr=Green;
sigstr="ÑÒÐÅËÊÀ ÂÂÅÐÕ ÍÀ ÈÍÄÈÊÀÒÎÐÅ SILVER TREND";
}
//-------------------------------------------------------
if((si_trend==-1)&&(si_bar<=SiDal))
{
otkr_sel=1;
cvet_otkr=Green;
sigstr="ÑÒÐÅËÊÀ ÂÍÈÇ ÍÀ ÈÍÄÈÊÀÒÎÐÅ SILVER TREND";
}
//-------------------------------------------------------
//åñëè åñòü ïîçèöèÿ ïðîòèâ òðåíäà, çàêðûâàåì åå
if(si_trend== 1) {zakr_sel=2;}
if(si_trend==-1) {zakr_buy=2;}
//åñëè îòêðûâàåì ïîçèöèþ, òî çàêðûâàåì ïðîòèâîïîëîæíóþ
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;}
//òåïåðü ýòî íå íîâûé áàð, ðàñ÷åòû äåëàåì îäèí ðàç äëÿ êàæäîé íîâîé ñâå÷è
new_bar=false;
}
//ïîäñ÷èòûâàåì îòêðûòûå ïîçèöèè
podschet_orderov(lb,ls);
//ïðîâåðÿåì, ÷òî ó íàñ ïîëó÷èëîñü
if(si_trend>0) {trstr="BULL";}
if(si_trend<0) {trstr="BEAR";}
Comment("\nSI_TREND = ",trstr," SI_BAR = ",si_bar,
"\n\nLOT_BUY = ",lb,
"\n\nLOT_SEL = ",ls,
"\n\nSIGNAL = ",sigstr);
//çàêðûâàåì è ìîäèôèöèðóåì èìåþùèåñÿ îðäåðà
perebor_orderov();
//çàíîâî ïîäñ÷èòûâàåì îòêðûòûå ïîçèöèè
podschet_orderov(lb,ls);
lb=NormalizeDouble(lb,2);
ls=NormalizeDouble(ls,2);
//ñòàâèì íîâûé îðäåð åñëè íóæíî
ystanovka_ordera(lb,ls);
//çàïîìèíàåì òåêóùåå âðåìÿ îòêðûòèÿ áàðà 1
vrem1_prev=vrem1_cur;
return(0);
}
//+--------------------------------------------------------------+
//================================================================
//ïîäñ÷åò ëîòîâ áàåâ è ñåëîâ íàøåé âàëþòû
void podschet_orderov(double &ob,double &os)
{
int i=0,kol=0;
//â íà÷àëå îáíóëÿåì ëîòû
ob=0; os=0;
kol=OrdersTotal();
if(kol>0)
{
for(i=0;i<kol;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
ob=ob+OrderLots();
continue;
}
if(OrderType()==OP_SELL)
{
os=os+OrderLots();
continue;
}
}
}
}
}
return;
}
//================================================================
//îïðåäåëåíèå çàêðûòèÿ áàðà ââåðõó èëè âíèçó äèàïàçîíà Silver Trend
int silv_cl(int b)
{
int i;
double pik, dno, lev_up, lev_dn, otkl, cur;
//íàõîäèì âåðõ è íèç äèàïàçîíà
pik=High[b];
dno=Low[b];
for(i=b;i<b+SiPer;i++)
{
cur=High[i];
if(cur>pik) {pik=cur;}
cur=Low[i];
if(cur<dno) {dno=cur;}
}
//îòêëîíåíèå âíóòðü äèàïàçîíà íà çàäàííûé ïðîöåíò
otkl=((pik-dno)*SiProc)/100;
//êðèòè÷åñêèå óðîâíè
lev_up=NormalizeDouble((pik-otkl),Digits);
lev_dn=NormalizeDouble((dno+otkl),Digits);
//öåíà ðàñòåò è çàêðûëàñü âûøå óðîâíÿ
if((Close[b]>Open[b])&&(Close[b]>lev_up)) {return( 1);}
//öåíà ïàäàåò è çàêðûëàñü íèæå óðîâíÿ
if((Close[b]<Open[b])&&(Close[b]<lev_dn)) {return(-1);}
return(0);
}
//================================================================
//îïðåäåëåíèå íàïðàâëåíèÿ ñòðåëêè è áàðà íà êîòîðîì îíà áûëà
void opr_strel(int &s_trend, int &s_bar)
{
int i, bv, bn, cur_zakr;
//îáíóëÿåì îòâåòû
s_trend=0; s_bar=0; bv=0; bn=0;
//èùåì äâå òî÷êè ñëåâà îò áàðà 1 (òàì, ãäå öåíà çàêðûëàñü ââåðõó è âíèçó äèàïàçîíà)
for(i=1;i<Bars;i++)
{
cur_zakr=silv_cl(i);
if((cur_zakr>0)&&(i>bv)) {bv=i;}
if((cur_zakr<0)&&(i>bn)) {bn=i;}
//íàéäåíû îáå òî÷êè - ñòîï
if((bv>0)&&(bn>0)) {break;}
}
//òðåíä ñíà÷àëà áûë âíèç, à ïîòîì ðàçâåðíóëñÿ ââåðõ
if(bn>bv) {s_trend= 1; s_bar=bv;}
//òðåíä ñíà÷àëà áûë ââåðõ, à ïîòîì ðàçâåðíóëñÿ âíèç
if(bv>bn) {s_trend=-1; s_bar=bn;}
return;
}
//================================================================
//äåéñòâèÿ ñ îðäåðîì OP_BUY
void obr_open_buy()
{
//çàêðûòèå åñëè êðèòè÷åñêèé ñèãíàë
if(zakr_buy==2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Purple);
return;
}
//ïåðåâîä ïîçèöèè â áåçóáûòîê
if(SlMin>9)
{
if((OrderStopLoss()<OrderOpenPrice())||(OrderStopLoss()==0))
{
if(Bid>(OrderOpenPrice()+SlMin*Point+PriBy*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),(OrderOpenPrice()+PriBy*Point),OrderTakeProfit(),0,Aqua);
return;
}
}
}
return;
}
//================================================================
//äåéñòâèÿ ñ îðäåðîì OP_SELL
void obr_open_sell()
{
//çàêðûòèå åñëè êðèòè÷åñêèé ñèãíàë
if(zakr_sel==2)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);
return;
}
//ïåðåâîä ïîçèöèè â áåçóáûòîê
if(SlMin>9)
{
if((OrderStopLoss()==0)||(OrderStopLoss()>OrderOpenPrice()))
{
if(Ask<(OrderOpenPrice()-SlMin*Point-PriBy*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),(OrderOpenPrice()-PriBy*Point),OrderTakeProfit(),0,Aqua);
return;
}
}
}
return;
}
//================================================================
//Çàêðûòèå è ìîäèôèêàöèÿ îðäåðîâ íàøåé âàëþòû
void perebor_orderov()
{
int type=0,kol=0,i=0;
kol=OrdersTotal();
if(kol>0)
{
for(i=(kol-1);i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
type=OrderType();
if(type==OP_BUY)
{
obr_open_buy();
continue;
}
if(type==OP_SELL)
{
obr_open_sell();
continue;
}
}
}
}
}
return;
}
//================================================================
//óñòàíîâêà íîâîãî îðäåðà
void ystanovka_ordera(double b, double s)
{
int i;
double sl, tp;
sl=0; tp=0;
if(otkr_buy>0)
{
if(b<0.01)
{
if(StopLos>9) {sl=Bid-StopLos*Point;}
if(TeikPro>4) {tp=Ask+TeikPro*Point;}
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,sl,tp,"",0,0,cvet_otkr);
}
}
//-------------------------------------------------------------
if(otkr_sel>0)
{
if(s<0.01)
{
if(StopLos>9) {sl=Ask+StopLos*Point;}
if(TeikPro>4) {tp=Bid-TeikPro*Point;}
OrderSend(Symbol(),OP_SELL,0.01,Bid,3,sl,tp,"",0,0,cvet_otkr);
}
}
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
---