Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
FT_Скальп_Parabolic
//+---------------------------------------------------------------------------0+|
//| Ñêàëüï Parabolic.mq4 |
//| Ðàçðàáîòàíî äëÿ 39 âûïóñêà æóðíàëà FORTRADER.RU |
//| |
//| Îïèñàíèå ñòðàòåãèè: http://www.forexsystems.ru/showthread.php?t=5495|
//| Îïèñàíèå íåêîòîðûõ ôóíêöèé: http://fxnow.ru/blog/programming_mql4/ |
//| Êîíòàêòû: yuriy@fortrader.ru |
//+----------------------------------------------------------------------------+|
//|4-150
#property copyright "FORTRADER.RU"
#property link "http://FORTRADER.RU"
//êîíòðîëü âðåìåíè îòêðûòèÿ.
extern int timecontrol=0; //1 - âêëþ÷åíî, 0 - âûêëþ÷åíî.
extern int starttime = 7;
extern int stoptime = 17;
//ðàçìåð â ïóíêòàõ ïîñëå êîòîðîãî ñòîï ïåðåíîñèì â áåçóáûòîê
extern int BBUSize=0;
//ðàçìåð òðåéëèíãà
extern int TrailingStop=0;
//Íà÷àëüíûé îáüåì ñäåëêè
extern int TrailingShag=5;
//íàñòðîéêè áûñòðîãî ïàðàáîëèêà
extern double stepfast=0.02;
extern double maximumfast=0.2;
//íàñòðîéêè ìåäëåííîãî ïàðàáîëèêà
extern double stepslow=0.005;
extern double maximumslow=0.05;
//êîëè÷åñòâî áàðîâ äëÿ ïîèñêà ìèíèìóìîâ ìàêñèìóìîâ
extern int barsearch=3;
//îòñòóï îò ìèíèìóìà/ìàêñèìóìà äëÿ ðàññ÷åòà ñòîïëîññîâ
extern int otstup=100;
//óðîâåíü âõîäà ïî ôèáîíà÷÷è
extern double Ur1=50;
//óðîâåíü ïðîôèòà ïî ôèáîíà÷÷è
extern double Ur2=161;
int nummodb,nummods;
int bars;
int err1;
int start()
{ //if(err1<0){Print("start() çàâåðøèë ðàáîòó ñ îøèáêîé");return(-1);}
if(bars!=Bars && ((timecontrol(starttime,stoptime)!=1 && timecontrol==1) ||timecontrol==0))
{bars=Bars;
err1=ScalpParabolicPattern();
}
if(TrailingStop>0){err1=TrailingStop();}
if(BBUSize>0){err1=BBU();}
return(0);
}
//+------------------------------------------------------------------+
int sarmax,sarmin,countbars,countbarv;
int ScalpParabolicPattern()
{int err;double op,sl,tp,max,min,Ur50,Ur116;
//çàãðóçèì ïàðàáîëèêè
double sarslow=iSAR(NULL,0,stepslow ,maximumslow,1);
double fastsar=iSAR(NULL,0,stepfast,maximumfast,1);
double fastsarlast=iSAR(NULL,0,stepfast,maximumfast,1);
if(fastsar>Bid && sarslow<Bid){sarmax=1;}
if(sarslow>Bid){sarmax=0;}
if(fastsar<Bid && sarslow>Bid){sarmin=1;}
if(sarslow<Bid){sarmin=0;}
if(sarslow<Bid && fastsar<Bid && sarmax==1 )//åñëè ìåäëåííûé ïàðàáîëèê íàïðàâëåí ââåðõ è ïðîèçîøåë ïðîáîé ïàðàáîëèêà êîòîðûé äâèãàëñÿ âíèç
{sarmax=0;
min=MaximumMinimum(0,barsearch); //íàéäåì òåêóùèé ìèíèìóì
max=High[1];
Ur50 =GetFiboUr(max,min,Ur1/100);//ïîëó÷èì 50% çíà÷åíèå ôèáî
Ur116 =GetFiboUr(max,min,Ur2/100); //ïîëó÷èì 116% çíà÷åíèå ôèáî
op=Ur50; sl=min-otstup*Point; tp=Ur116;
if((Ask-op)<5*Point || (Ask-sl)<5*Point || (tp-Ask)<5*Point){return(0);}
err=OrderSend(Symbol(),OP_BUYLIMIT,0.1,NormalizeDouble(op,Digits),3,sl,tp,"FORTRADER.RU",0,0,Red);
if(err<0){Print("ScalpParabolicPattern()- Îøèáêà óñòàíîâêè îòëîæåííûõ îðäåðîâ OP_BUYLIMIT. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
nummodb=0;
}
if(sarslow>Bid && fastsar>Bid && sarmin==1 )//åñëè ìåäëåííûé ïàðàáîëèê íàïðàâëåí ââåðõ è ïðîèçîøåë ïðîáîé ïàðàáîëèêà êîòîðûé äâèãàëñÿ âíèç
{sarmin=0;
max=MaximumMinimum(1,barsearch); //íàéäåì òåêóùèé ìèíèìóì
min=Low[1];
Ur50 =GetFiboUr(min,max,Ur1/100);//ïîëó÷èì 50% çíà÷åíèå ôèáî
Ur116 =GetFiboUr(min,max,Ur2/100); //ïîëó÷èì 116% çíà÷åíèå ôèáî
op=Ur50; sl=max+otstup*Point; tp=Ur116;
if((op-Ask)<5*Point || (sl-Ask)<5*Point || (Ask-tp)<5*Point){return(0);}
err=OrderSend(Symbol(),OP_SELLLIMIT,0.1,NormalizeDouble(op,Digits),3,sl,tp,"FORTRADER.RU",0,0,Red);
if(err<0){Print("ScalpParabolicPattern()- Îøèáêà óñòàíîâêè îòëîæåííûõ îðäåðîâ OP_SELLLIMIT. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
nummods=0;
}
if(fastsar>Bid && ChLimitOrder(1)>0)
{
err=deletelimitorder(1);
}
if(fastsar<Bid && ChLimitOrder(0)>0)
{
err=deletelimitorder(0);
}
return(0);
}
int deletelimitorder(int type)
{int i;int err;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYLIMIT && OrderSymbol()==Symbol() && type==1)
{
err=OrderDelete(OrderTicket());
}
if(OrderType()==OP_SELLLIMIT && OrderSymbol()==Symbol() && type==0)
{
err=OrderDelete(OrderTicket());
}
}
}
return(err);
}
int ChLimitOrder(int type)
{int i;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYLIMIT && OrderSymbol()==Symbol() && type==1)
{
return(1);
}
if(OrderType()==OP_SELLLIMIT && OrderSymbol()==Symbol() && type==0)
{
return(1);
}
}
}
return(0);
}
double MaximumMinimum(int type,int barsearch)
{//îïèñàíèå ôóíêöèè http://fxnow.ru/blog/programming_mql4/3.html
int x=0,stop=0;double minmax;
if(type==0)
{
while(stop==0)
{
minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x)];
if(minmax>Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)])
{
minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)];
x=x+barsearch;
}
else {stop=1;return(minmax);}
}//while(stop
}//if(type
if(type==1)
{
while(stop==0)
{
minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x)];
if(minmax<High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)])
{
minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)];
x=x+barsearch;
}
else{stop=1;return(minmax);}
}// while(sto
}//if(type
return(0);
}
double GetFiboUr(double high, double low, double ur)
{//îïèñàíèå ôóíêöèè http://fxnow.ru/blog/programming_mql4/4.html
int digits = MarketInfo(Symbol(),MODE_DIGITS);
double Fibo = NormalizeDouble(low + (high - low)*ur, digits); return(Fibo);
return(0);
}
int TrailingStop()
{//îïèñàíèå ôóíêöèè http://fxnow.ru/blog/programming_mql4/1.html
int i;bool err;double lastbid;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(TrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(Bid-OrderOpenPrice()>=TrailingStop*Point && TrailingStop>0 && (Bid-Point*TrailingStop)>OrderStopLoss())
{
if(((Bid-Point*TrailingStop)-OrderStopLoss())>=TrailingShag*Point)
{
Print("ÒÐÅÉËÈÌ");
err=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
}//if(Bid>=OrderStopLoss()
}//if(Bid-OrderOpenPrice()
}//if(BBUSize>0
}//if(OrderSelect(i
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() )
{
if(OrderOpenPrice()-Ask>=TrailingStop*Point && TrailingStop>0 && OrderStopLoss()>(Ask+TrailingStop*Point))
{
if((OrderStopLoss()-(Ask+TrailingStop*Point))>TrailingShag*Point)
{
Print("ÒÐÅÉËÈÌ");
err=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
}//if(Ask<=OrderStopLoss()
}//if(OrderOpenPrice()
}//if(BBUSize>0
}// if(OrderSelect
}// for( i=1;
return(0);
}
int BBU()
{//îïèñàíèå ôóíêöèè http://fxnow.ru/blog/programming_mql4/2.html
int i;bool err;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(BBUSize>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderStopLoss()<OrderOpenPrice())
{
if(Bid-OrderOpenPrice()>=BBUSize*Point && BBUSize>0 )
{
Print("ÏÎÐÀ Â ÁåçóÁûòîê");
err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+1*Point,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
}//if(Bid-OrderOpenPrice()
}//if(BBUSize>0
}//if(OrderSelect(i
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(BBUSize>0 && OrderType()==OP_SELL && OrderSymbol()==Symbol() && (OrderStopLoss()>OrderOpenPrice() || OrderStopLoss()==0))
{
if(OrderOpenPrice()-Ask>=BBUSize*Point && BBUSize>0)
{
Print("ÏÎÐÀ Â ÁåçóÁûòîê");
err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-1*Point,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
}//if(OrderOpenPrice()
}//if(BBUSize>0
}// if(OrderSelect
}// for( i=1;
return(0);
}
int timecontrol(int starttime, int stoptime)
{//îïèñàíèå ôóíêöèè http://fxnow.ru/blog/programming_mql4/5.html
if (Hour()>=starttime && Hour()<=stoptime)
{
return(0);
}
return(1);
}
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
---