Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Proffessor_v5_2011_4digits
//+------------------------------------------------------------------+
//| Proffessor_v5_2011.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern bool manual =false; //åñëè èñòèíà, òî ïåðâûé îðäåð ðó÷êàìè
extern double lot=0.02;
extern int znak=4; //åñëè 5, òî ïÿòèçíàêîâûé äèëöåíòð
extern int MAX_Lines = 10; //ìàêñèìàëüíîå êîëëè÷åñòâî îòëîæåííûõ îðäåðîâ êàæäîãî íàïðàâëåíèÿ
extern double klot = 1; //êîýôôèöèåíò óìíîæåíèÿ ëîòîâ ïðè óäàëåíèè îò öåíû
extern double pluslot =0.01; //êîýôôèöèåíò äîëèâêè ëîòà ïðè óäàëåíèè îò öåíû
extern int plusDelta =0; //êîýôôèöèåíò óâåëè÷åíèÿ ðàññòîÿíèÿ ìåæäó îòëîæåííûìè îðäåðàìè
//åñëè çíà÷åíèå îòðèöàòåëüíîå, òî ðàññòîÿíèå óìåíüøàåòñÿ íà äàííîå êîë-âî ïóíêòîâ
extern int variant =2; //âàðèàíò äëÿ âòîðîãî îðäåðà
//0 - ñòîïîâûé îðäåð â ñèììåòðè÷íîì ëîêå
//1 - ñòîïîâûé îðäåð â àññèìåòðè÷íîì ëîêå
//2 - ñèììåòðè÷íûé ïî èíäèêàòîðó ADX
extern double Delta1 =80; //ïåðâàÿ äåëüòà îò öåíû äëÿ ñòîïîâîãî îðäåðà
extern int Delta = 60; //ðàññòîÿíèå ìåæäó îòëîæåííûìè îðäåðàìè
extern int TP =25; //òåéê ïðîôèò â ïóíêòàõ äëÿ ïåðâîé ñäåëêè
extern int tral =10;//òðåéëèíã ñòîï â ïóíêòàõ äëÿ ïåðâîãî îðäåðà
extern int step =1;//øàã òðåéëèíãà â ïóíêòàõ
extern int Profit =10;//ïðîôèò â ïóíêòàõ äëÿ ïà÷êè îðäåðîâ
extern double f =40; //ïàðàìåòð ãðàíèöû ôëåòà ïî ADX
extern double bar = 2; //ñäâèã ïî áàðàì ADX
extern double st =25;//óðîâåíü ïåðåêóïëåííîñòè/ïåðåïðîäàííîñòè
extern double st_r =20;//ðàçíèöà ìåæäó ëèíèÿìè ñòîõàñòèêà, êîãäà ìîæíî ñòàâèòü ñòîïîâèêè
//extern double hl =150;//ðàçíèöà ìåæäó õàé è ëîó îäèí áàð íàçàä
extern double timeframe = 1; //òàéìôðåéì äëÿ èíäèêàòîðà ADX 0-òåêóùèé,1-1ìèíóòà, 2-5ìèíóò, 3-15ìèíóò, 4-30ìèíóò, 5-1÷àñ
//6-4÷àñà, 7-äåíü, 8-íåäåëÿ, 9-ìåñÿö
extern int magic = 12345;
extern int StartHour=0; //÷àñ íà÷àëà ðàáîòû ñîâåòíèêà
extern int EndHour=24; //÷àñ îêîí÷àíèÿ ðàáîòû ñîâåòíèêà
extern bool Fr_Stop=true; //åñëè true, òî â ïÿòíèöó íå òîðãóåì
extern int pop=3;//êîëè÷åñòâî ïîïûòîê çàêðûòü îðäåð
bool ticket, closed;
double Lots;
int x,q,i,own,trals;
bool trade=false;
double iflet,ibuy,isell,stoh,stoh_sign;
int _timeframe;
int init() {
Comment("ProfessorSoft_v5_2011");
return (0);
}
int deinit() {
Comment("");
return (0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if(timeframe==1)_timeframe=1;
else if(timeframe==0)_timeframe=0;
else if(timeframe==2)_timeframe=5;
else if(timeframe==3)_timeframe=15;
else if(timeframe==4)_timeframe=30;
else if(timeframe==5)_timeframe=60;
else if(timeframe==6)_timeframe=240;
else if(timeframe==7)_timeframe=1440;
else if(timeframe==8)_timeframe=10080;
else _timeframe=43200;
if(OrdersTotal()==0 && time()==true)
{
if(manual==true)
{
bool flet,buy;
int a=MessageBox("Íàæìèòå Äà äëÿ ëèìèòíîé ñåòêè èëè Íåò äëÿ ñòîïîâîé","Ìîæíî òîðãîâàòü",MB_YESNOCANCEL);
if(a==IDYES) flet=true;
if(a==IDNO) flet=false;
if(a==IDCANCEL) return(0);
int b=MessageBox("Íàæìèòå Äà ÷òîáû êóïèòü èëè Íåò ÷òîáû ïðîäàòü","Ìîæíî òîðãîâàòü",MB_YESNOCANCEL);
if(b==IDYES) buy=true;
if(b==IDNO) buy=false;
if(b==IDCANCEL) return(0);
if(flet==true && buy==true)//óñëîâèå äëÿ ïîêóïêè è îïðåäåëåíèå ôëåòà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TP*Point,"",magic,0,Blue);
if(ticket==-1)return(0);
if(variant==2)OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-Delta1*Point,3,0,0,"",magic,0,Blue);
else if (variant==1) OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);
}
}
else if(flet==true && buy==false)//óñëîâèå äëÿ ïðîäàæè è îïðåäåëåíèå ôëåòà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TP*Point,"",magic,0,Red);
if(ticket==-1)return(0);
if(variant==2) OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+Delta1*Point,3,0,0,"",magic,0,Red);
else if (variant==1) OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);
}
}
else if(flet==false && buy==true)//óñëîâèå äëÿ ïîêóïêè è îïðåäåëåíèå òðåíäà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TP*Point,"",magic,0,Blue);
if(ticket==-1)return(0);
if(variant==2) OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else if (variant==1) OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);
}
}
else if(flet==false && buy==false)//óñëîâèå äëÿ ïðîäàæè è îïðåäåëåíèå òðåíäà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TP*Point,"",magic,0,Red);
if(ticket==-1)return(0);
if(variant==2) OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else if (variant==1)OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);
}
}
else return(0);
}
else
{
ticket=-1;
iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, bar);
ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, bar);
isell=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, bar);
stoh=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stoh_sign=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
// double hl0=(High[0]-Low[0]);
// double hl1=(High[1]-Low[1]);
// Print("ýòî 0",hl0,"ýòî 1 ",hl1,"ýòî èñõîäíûé ",hl*Point);
//if(hl0>=hl*Point || hl1>=hl*Point || DayOfWeek()==5)return(0);
if(Fr_Stop==true) if(DayOfWeek()==5)return(0);
if(iflet<f && ibuy>isell && stoh>stoh_sign)//óñëîâèå äëÿ ïîêóïêè è îïðåäåëåíèå ôëåòà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TP*Point,"",magic,0,Blue);
if(ticket==-1)return(0);
if(variant==2)OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-Delta1*Point,3,0,0,"",magic,0,Blue);
else if (variant==1) OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);
}
}
else if(iflet<f && ibuy<isell && stoh<stoh_sign)//óñëîâèå äëÿ ïðîäàæè è îïðåäåëåíèå ôëåòà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TP*Point,"",magic,0,Red);
if(ticket==-1)return(0);
if(variant==2) OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+Delta1*Point,3,0,0,"",magic,0,Red);
else if (variant==1) OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);
}
}
else if(iflet>f && ibuy>isell && stoh>st && stoh<100-st && stoh>stoh_sign && stoh-stoh_sign>st_r)//óñëîâèå äëÿ ïîêóïêè è îïðåäåëåíèå òðåíäà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TP*Point,"",magic,0,Blue);
if(ticket==-1)return(0);
if(variant==2) OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-Delta1*Point,3,0,0,"",magic,0,Red);
//OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else if (variant==1) OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
else OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);
}
}
else if(iflet>f && ibuy<isell && stoh>st && stoh<100-st && stoh<stoh_sign && stoh_sign-stoh>st_r)//óñëîâèå äëÿ ïðîäàæè è îïðåäåëåíèå òðåíäà
{
Lots=lot;
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TP*Point,"",magic,0,Red);
if(ticket==-1)return(0);
if(variant==2)OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+Delta1*Point,3,0,0,"",magic,0,Blue);
// OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else if (variant==1)OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Lots*klot,2)+pluslot,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
else OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
for(x=1;x<=MAX_Lines;x++)
{
Lots=NormalizeDouble(Lots*klot,2)+pluslot;
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);
}
}
else return(0);
}
}
if(OrdersTotal()>0)
{
Comment(" Balance ",AccountBalance(),"\n Equity ",AccountEquity(),"\n Profit ",OrdersProfit());
own=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<2)own=own+1;
}
if (own==0)
{
for (i=OrdersTotal()-1;i>=0;i--)
{
for(q=0;q<pop;q++)
{
closed=false;
closed=OrderDelete(OrderTicket());
if(closed==true)q=pop;
}
}
}
if(own>1)
{
int k=0,u=0;
int pipsZero=0;
double pipsPrice=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderStopLoss()!=0 || OrderTakeProfit()!=0)u=u+1;
}
if(u==own)return(0);
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) k=k+OrderLots()/lot;
if(OrderType()==OP_SELL)k=k-OrderLots()/lot;
}
// Print("êîåôôèöèåíò ðàâåí ",k);
pipsPrice=k*lot/0.1;
// Print("Öåíà ïóíêòà ",pipsPrice);
if(znak==5)pipsZero=10*(-NormalizeDouble(OrdersProfit()/pipsPrice,0));
else pipsZero=(-NormalizeDouble(OrdersProfit()/pipsPrice,0));
// Print("Ïóíêòîâ äî íóëÿ", pipsZero);
if(pipsPrice>0)
{
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), 0,Bid+pipsZero*Point+Profit*Point, 0, Blue);
// Print ("TP äëÿ îðäåðà ",OrderTicket()," ðàâåí ",Bid+pipsZero*Point);
if(OrderType()==OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), Ask+pipsZero*Point+Profit*Point,0, 0, Red);
// Print ("SL äëÿ îðäåðà ",OrderTicket()," ðàâåí ",Ask+pipsZero*Point);
}
}
if(pipsPrice<0)
{
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), Bid+pipsZero*Point-Profit*Point,0, 0, Blue);
// Print ("SL äëÿ îðäåðà buy",OrderTicket()," ðàâåí ",Bid-pipsZero*Point);
if(OrderType()==OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), 0,Ask+pipsZero*Point-Profit*Point, 0, Red);
// Print ("TP äëÿ îðäåðà sell ",OrderTicket()," ðàâåí ",Ask-pipsZero*Point);
}
}
}
if(OrdersProfit()>=tral*lot*10)
{
if(own==1)
{
for (i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<2 && OrderProfit()>=tral*OrderLots()*10)TrailPositions();
}
}
Sleep(1000);
if(OrderType()>1 )
for(q=0;q<pop;q++)
{
closed=false;
closed=OrderDelete(OrderTicket());
if(closed==true)q=pop;
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool time()
{
if (StartHour<EndHour)
{if (Hour()>=StartHour && Hour()<EndHour) return(true); else return(false);}
if (StartHour>EndHour)
{if (Hour()>=EndHour && Hour()<StartHour) return(false); else return(true);}
}
double OrdersProfit()
{
double rezultSymb=0;
string SMB=Symbol();
int i;
for (i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol()!= SMB) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
rezultSymb+=OrderProfit();
}
}
}
return(rezultSymb);
}
void TrailPositions() // ôóíêöèÿ òðåéëèíã ñòîï
{
int Orders = OrdersTotal();
for (int i=0; i<Orders; i++) {
if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() == OP_BUY ) {
if (Bid-OrderOpenPrice() > tral*Point) {
if (OrderStopLoss() < Bid-(tral+step-1)*Point) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid-tral*Point,
OrderTakeProfit(), 0, Blue);
} } }
if (OrderType() == OP_SELL) {
if (OrderOpenPrice()-Ask >tral*Point) {
if (OrderStopLoss() > Ask+(tral+step-1)*Point
|| OrderStopLoss() == 0) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask+tral*Point,
OrderTakeProfit(), 0, Blue);
} } } } }
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
---