Price Data Components
Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
e-Parabolic-2_0
//+-------------------------------------------------------------------------+
//| e-Parabolic .mq4 |
//| Copyright © 2011, Victor Lukashuk aka lukas1 |
//| Exclusive public edition.
//| version 2.0 |
//+-------------------------------------------------------------------------+
/* Ñîâåòíèê òîðãóåò ïî èíäèêàòîðó Parabolic.
Èñïîëüçóåòñÿ ðàñ÷åò äàííûõ èíäèêàòîðà íà óæå ïðîøåäøåì áàðå (Ind_Bar=1).
==== Ïîêóïêà, òîëüêî îäèí îðäåð: ====
1. Èíäèêàòîð íà÷àë ðèñîâàòü ëèíèþ íèæå öåíû.
Çíà÷åíèå áóôåðà èíäèêàòîðà íà çàäàííîì áàðå íèæå öåíû.
==== Ïðîäàæà, òîëüêî îäèí îðäåð: ====
1. Èíäèêàòîð íà÷àë ðèñîâàòü ëèíèþ âûøå öåíû.
Çíà÷åíèå áóôåðà èíäèêàòîðà íà çàäàííîì áàðå âûøå öåíû.
==== Âûõîä èç ïîçèöèè: ====
1. Ñðàáàòûâàíèå îðäåðà Stop Loss, TakeProfit.
2. Ïî ñèãíàëó ïðè ïåðåêëþ÷åíèè ëèíèè.
*/
#property copyright "Copyright © 2011, lukas1"
#property link "lukas1@ngs.ru"
#include <stdlib.mqh> // áèáëèîòåêà îòîáðàæåíèÿ îøèáîê
extern int TakePr = 0; //òåéêïðîôèò
extern int StopLs = 0; //ñòîïëîññ
string Íàçâàíèå_èíäèêàòîðà = "Parabolic";//òîëüêî âíóòðåííèé ÌÒ4
extern double Param1 = 0.2;//âíåøíèé ïàðàìåòð èíäèêàòîðà
extern double Param2 = 0.2;//âíåøíèé ïàðàìåòð èíäèêàòîðà
// èñïðàâëåí ðàñ÷åò èíäèêàòîðà íà ñòàðøõ ÒÔ (âåð.1.2)
extern int TimeFrm = 30;//Òàéìôðåéì íà êîòîðîì ðàñ÷èòûâàþòñÿ äàííûå
extern int Ind_Bar = 1;//áàð, äëÿ ðàñ÷åòà èíäèêàòîðà
extern double lots = 0.1;
extern int magic = 111222;
extern int slippage = 9;
string msg;
int num_buy,num_sell,sss1,sss2,i;
int m11,m12,m21,m22;
double m31,m32,m4;
int br0=1, br1=1, br2=1,nn=1,stoplevel,spread;
//+-------------------------------------------------------------------------+
int init() {
if(Digits==2 || Digits==4) nn=1;
else
if(Digits==3 || Digits==5) nn=10;
TakePr = TakePr * nn;
StopLs = StopLs * nn;
slippage = slippage * nn;
stoplevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
if(!TimeFrame() && !IsOptimization())
Print("Çíà÷åíèå Òàéìôðåéìà= \""+TimeFrm+
" ìèíóò\" âûáðàíî íå ïðàâèëüíî.");
return(0);
}
//+-------------------------------------------------------------------------+
int start() {
//ïðîâåðêà ïðàâèëüíîñòè TF
if(!TimeFrame()) return(0);
//êîððåêöèÿ îòîáðàæåíèÿ èíäèêàòîðà íà ãðàôèêå
if(TimeFrm==0) TimeFrm=Period();
//ïðîâåðêà ïðàâèëüíîñòè ïàðàìåòðîâ èíäèêàòîðà
if(Param1>Param2) return(0);
m11 = f_ind11(); //äëÿ îòêðûòèÿ ÁÀÉ
m12 = f_ind12(); //äëÿ îòêðûòèÿ ÑÅËË
m21 = f_ind21(); //äëÿ çàêðûòèÿ ÑÅËË
m22 = f_ind22(); //äëÿ çàêðûòèÿ ÁÀÉ
m31 = f_ind31(); //îòîáðàæåíèå íà ãðàôèê
m4 = f_ind4(); //îòîáðàæåíèå íà ãðàôèê
num_buy=0;num_sell=0;
int total = OrdersTotal();
if (total>0)
for (i = total - 1; i >= 0; i--)
{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
{if(OrderType() == OP_BUY)
{num_buy++;
if(m22 > 0 )
{if(Close_Buy()==true) num_buy--;}
}
if(OrderType() == OP_SELL)
{num_sell++;
if(m21 > 0 )
{if(Close_Sell()==true) num_sell--;}
}
}
}
text();
if(m11 > 0 && m22 == 0 && num_buy==0 && br1<Bars )
Open_Buy();
if(m12 > 0 && m21 == 0 && num_sell==0 && br2<Bars )
Open_Sell();
return(0);
}
//+-------------------------------------------------------------------------+
int f_ind11() {//äëÿ îòêðûòèÿ ÁÀÉ
int result = 0;
double ind11,dPrc1;
//Parabolic
ind11 = iSAR(Symbol(), TimeFrm,
Param1,Param2,
Ind_Bar);//ïî 1 áàðó
dPrc1 = iHigh(Symbol(), TimeFrm, Ind_Bar);
if(ind11 > 0 && ind11 < dPrc1-13*nn*Point )
result = 1;
return(result);
}
//+-------------------------------------------------------------------------+
int f_ind12() {//äëÿ îòêðûòèÿ ÑÅËË
int result = 0;
double ind11,ind12,dPrc1;
//Parabolic
ind11 = iSAR(Symbol(), TimeFrm,
Param1,Param2,
Ind_Bar);//ïî 1 áàðó
dPrc1 = iLow(Symbol(), TimeFrm, Ind_Bar);
if(ind11 > 0 && ind11 > dPrc1+13*nn*Point )
result = 1;
return(result);
}
//+-------------------------------------------------------------------------+
int f_ind21() {//äëÿ çàêðûòèÿ ÑÅËË
int result = 0;
double ind11,dPrc1;
//Parabolic
ind11 = iSAR(Symbol(), TimeFrm,
Param1,Param2,
Ind_Bar);//ïî 1 áàðó
dPrc1 = iHigh(Symbol(), TimeFrm, Ind_Bar);
if(ind11 > 0 && ind11 < dPrc1- 3*nn*Point )
result = 1;
return(result);
}
//+-------------------------------------------------------------------------+
int f_ind22() {//äëÿ çàêðûòèÿ ÁÀÉ
int result = 0;
double ind11,ind12,dPrc1;
//Parabolic
ind11 = iSAR(Symbol(), TimeFrm,
Param1,Param2,
Ind_Bar);//ïî 1 áàðó
dPrc1 = iLow(Symbol(), TimeFrm, Ind_Bar);
if(ind11 > 0 && ind11 > dPrc1+ 3*nn*Point )
result = 1;
return(result);
}
//+-------------------------------------------------------------------------+
double f_ind31() {//îòîáðàæåíèå íà ãðàôèê èíäèêàòîðà
//Parabolic
int bb1=iBarShift(Symbol(),TimeFrm,iTime(Symbol(),TimeFrm,
Ind_Bar),false);
double ind11 = iSAR(Symbol(), TimeFrm,
Param1,Param2,
bb1);//ïî 1 áàðó
string ttt = StringConcatenate("a",Time[0]," Parabolic");
if(!IsOptimization() && ObjectFind(ttt)<0)
{
int smeschenie = 0;
ObjectCreate(ttt,OBJ_ARROW,0,Time[Ind_Bar*TimeFrm/Period()],ind11);
ObjectSet(ttt,OBJPROP_ARROWCODE,4) ;
}
return(ind11);
}
//+-------------------------------------------------------------------------+
double f_ind4() {//îòîáðàæåíèå íà ãðàôèê íîìåðà áàðà äëÿ ðàñ÷åòà èíäèêàòîðà
//Parabolic
int bb1=iBarShift(Symbol(),TimeFrm,iTime(Symbol(),TimeFrm,
Ind_Bar),false);
return(bb1);
}
//+-------------------------------------------------------------------------+
double nd0(double DOUBLE){return(NormalizeDouble(DOUBLE,Digits));}
//+-------------------------------------------------------------------------+
int Open_Buy() {
double stop=0,take=0;
spread=Ask-Bid;
if(StopLs>0)
stop = MathMin(Ask-StopLs*Point,Bid-MathMax(stoplevel,spread)*Point);
if(TakePr>0)
take = MathMax(Ask+TakePr*Point,Ask+MathMax(stoplevel,spread)*Point);
int ticket = OrderSend(Symbol(), OP_BUY, lots, nd0(Ask), slippage,
nd0(stop), nd0(take),
WindowExpertName()+" "+Symbol()+" "+Period()+" min",
magic, 0, Blue);
if(ticket < 0)
{Print("Oøèáêà îòêðûòèÿ ÁÀÉ: ",ErrorDescription(GetLastError()));
Print("Öåíà îòêðûòèÿ ÁÀÉ = ", Ask);
Print("SL ÁÀÉ = ", stop);
Print("TP ÁÀÉ = ", take);
}
else br1 = Bars;
return(ticket);
}
//+-------------------------------------------------------------------------+
int Open_Sell() {
double stop=0,take=0;
if(StopLs>0)
stop = MathMax(Bid+StopLs*Point,Ask+MathMax(stoplevel,spread)*Point);
if(TakePr>0)
take = MathMin(Bid-TakePr*Point,Bid-MathMax(stoplevel,spread)*Point);
int ticket = OrderSend(Symbol(), OP_SELL, lots, nd0(Bid), slippage,
nd0(stop), nd0(take),
WindowExpertName()+" "+Symbol()+" "+Period()+" min",
magic, 0, Red);
if(ticket < 0)
{Print("Oøèáêà îòêðûòèÿ ÑÅËË: ",ErrorDescription(GetLastError()));
Print("Öåíà îòêðûòèÿ ÑÅËË = ", Bid);
Print("SL ÑÅËË = ", stop);
Print("TP ÑÅËË = ", take);
}
else br2 = Bars;
return(ticket);
}
//+-------------------------------------------------------------------------+
bool Close_Buy(){
bool make = OrderClose(OrderTicket(),OrderLots(),nd0(OrderClosePrice()),
slippage, Blue);
if(make==false)
{Print("Oøèáêà çàêðûòèÿ ÁÀÉ: ",ErrorDescription(GetLastError()));
}
return(make);
}
//+-------------------------------------------------------------------------+
bool Close_Sell(){
bool make = OrderClose(OrderTicket(),OrderLots(),nd0(OrderClosePrice()),
slippage, Red);
if(make==false)
{Print("Oøèáêà çàêðûòèÿ ÑÅËË: ",ErrorDescription(GetLastError()));
}
return(make);
}
//+-------------------------------------------------------------------------+
bool TimeFrame(){
bool valid = false;
int p1 = TimeFrm;
if(p1==0 || p1==PERIOD_M1 ||
p1==PERIOD_M5 || p1==PERIOD_M15 ||
p1==PERIOD_M30 || p1==PERIOD_H1 ||
p1==PERIOD_H4 || p1==PERIOD_D1 ||
p1==PERIOD_W1 || p1==PERIOD_MN1
) valid = true;
return(valid);
}
//+-------------------------------------------------------------------------+
void text () {
if(IsOptimization()==false) {
msg="";
int num1=1;
if(MathMod(10*Param1,1)>0 ) num1=2;
if(MathMod(100*Param1,1)>0 ) num1=3;
int num2=1;
if(MathMod(10*Param2,1)>0 ) num2=2;
if(MathMod(100*Param2,1)>0 ) num2=3;
msg=msg+"\n"+"Èíäèêàòîð \"" +Íàçâàíèå_èíäèêàòîðà+"\" ( "
+DoubleToStr(Param1, num1)+"; "+DoubleToStr(Param2, num2)+" )";
int timefr = TimeFrm;
if(TimeFrm==0) timefr= Period();
msg=msg+"\n"+"Òàéìôðåéì äëÿ \""
+Íàçâàíèå_èíäèêàòîðà+"\" = " +timefr+" min";
msg=msg+"\n"+"Çíà÷åíèå èíä1 \"" +Íàçâàíèå_èíäèêàòîðà+"\" íà "
+Ind_Bar+" áàðå= "+DoubleToStr(m31, Digits);
msg=msg+"\n"+"Çíà÷åíèå èíä1 \"" +Íàçâàíèå_èíäèêàòîðà+"\" íà "
+(Ind_Bar+1)+" áàðå= "+DoubleToStr(m32, Digits);
msg=msg+"\n"+"Ðàñ÷åò èíä1 íà ñòàðøåì ÒÔ - íîìåð áàðà= "
+DoubleToStr(m4, 0);
msg=msg+"\n"+"Çíà÷åíèå òåêóùåé öåíû " +DoubleToStr(Bid, Digits);
if(num_buy==0 && num_sell==0)
{msg=msg+"\n"+"Íåò îðäåðîâ äëÿ êîíòðîëÿ";}
if(num_buy>0)
{msg=msg+"\n"+"Îòêðûòî îðäåðîâ ÁÀÉ "+num_buy;}
if(num_sell>0)
{msg=msg+"\n"+"Îòêðûòî îðäåðîâ ÑÅËË "+num_sell;}
Comment(msg);
}
}
//+-------------------------------------------------------------------------+
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
---