Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
Myfriend_www.forex-instruments.info
//+------------------------------------------------------------------+
//| MyFriend.mq4 |
//| Disruption Trade |
//| 2006.09.25 |
//| Copyright © 2006, Nick A. Zhilin |
//| rebus@dialup.etr.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Nick A. Zhilin"
#property link "rebus@dialup.etr.ru"
//----
extern string ParamExp="--- Ïàðàìåòðû ýêñïåðòà ---";
extern double Risk=0.33;
extern int TP=70;
extern int SLPlus=13;
extern string ParamClose=" --- Èñïîëüçîâàíèå äîïîëíèòåëüíîãî ïðåäîõðàíèòåëÿ ---";
extern bool UseClose=true;
extern string ParamTrail=" --- Ïàðàìåòðû Trailing Stop ---";
extern int ChPeriod=16;
extern bool UseTrailingStop=true;
extern int StartProfit=5;
extern int TSLPlus=1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
//----
double Lots, TakeProfit, StopLoss;
double I1Current, I1Previous, I2Current, I2Previous;
double I3Current, I3Previous, I4Current, I4Previous;
double Pivot, R1, R2, R3, S1, S2, S3;
double MP;
int cnt, ticket, total;
int signal1, signal2;
static int se;
//-------------------------------------------
// îáÿçàòåëüíûå ïðîâåðêè
//-------------------------------------------
// ïðîâåðêà íà äîñòàòî÷íîå êîëè÷åñòâî áàðîâ
//-------------------------------------------
if(Bars<100 && se==0)
{
Print("Áàðîâ äîëæíî áûòü íå ìåíåå 100");
se++;
}
// ïðîâåðêà èíñòðóìåíòà è òàéì ôðåéìà
if(Symbol()!="EURUSD" && se==0)
{
Print("Ïðîãðàììà ìîæåò ðàáîòàòü òîëüêî íà ïàðå EUR/USD");
se++;
}
if(Period()!=PERIOD_M30 && se==0)
{
Print("Ïðîãðàììà îïòèìèçèðîâàíà ïîä òàéì ôðåéì Ì30");
se++;
}
// âûõîä, åñëè îáíàðóæåíû îøèáêè çàïóñêà
if(se>0) return(0);
//-------------------------------------------
// ðàñ÷åò ëîêàëüíûõ ïåðåìåííûõ
//-------------------------------------------
// çíà÷åíèÿ èíäèêàòîðîâ
I1Current=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,0,0);
I1Previous=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,0,1);
I2Current=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,1,0);
I2Previous=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,1,1);
// ðàñ÷åò è îòîáðàæåíèå îïîðíîãî öåíòðà è óðîâíåé
Pivot=(iHigh(NULL,PERIOD_D1,1)+iLow(NULL,PERIOD_D1,1)+iClose(NULL,PERIOD_D1,1))/3;
S1=2*Pivot-iHigh(NULL,PERIOD_D1,1);
R1=2*Pivot-iLow(NULL,PERIOD_D1,1);
S2=Pivot-R1+S1;
R2=Pivot+R1-S1;
S3=iLow(NULL,PERIOD_D1,1)-2*(iHigh(NULL,PERIOD_D1,1)-Pivot);
R3=iHigh(NULL,PERIOD_D1,1)+2*(Pivot-iLow(NULL,PERIOD_D1,1));
ShowPivot(Pivot,R1,R2,R3,S1,S2,S3);
// îöåíêà ëîêàëüíîãî òðåíäà
MP=((Close[0]+Close[1]+Close[2])/3
- (Close[0]+Close[1]+Close[2]
+Close[3]+Close[4]+Close[5]
+Close[6]+Close[7]+Close[8])/9)*1000;
// îïðåäåëåíèå óñëîâèé îòêðûòèÿ ïîçèöèé
// ïî ïåðåñå÷åíèþ îïîðíîé òî÷êè
if(Open[1]<Pivot // îòêðûòèå ïðåäûäóùåãî áàðà íèæå îïîðíîé òî÷êè
&& Close[1]>Pivot // çàêðûòèå ïðåäûäóùåãî áàðà âûøå îïîðíîé òî÷êè - ïîäòâåðæäåíèå ïðîáîÿ
&& (Close[1]-Open[1])>12*Point // àìïëèòóäà äâèæåíèÿ öåíû äîñòàòî÷íî áîëüøàÿ
&& Ask>Close[1] // öåíà ðàñòåò
&& MP>0 // ëîêàëüíûé òðåíä +
&& Ask<High[0] // ïîêóïêà íå íà ìàêñèìóìå öåíû
)
signal1=1;
if(Open[1]>Pivot // îòêðûòèå ïðåäûäóùåãî áàðà íèæå îïîðíîé òî÷êè
&& Close[1]<Pivot // çàêðûòèå ïðåäûäóùåãî áàðà âûøå îïîðíîé òî÷êè - ïîäòâåðæäåíèå ïðîáîÿ
&& (Open[1]-Close[1])>12*Point // àìïëèòóäà äâèæåíèÿ öåíû äîñòàòî÷íî áîëüøàÿ
&& Bid<Close[1] // öåíà ïàäàåò
&& MP<0 // ëîêàëüíûé òðåíä -
&& Bid>Low[0] // ïðîäàæà íå íà ìèíèìóìå öåíû
)
signal1=-1;
// ïî ðàñøèðåíèþ êàíàëà Äîí÷èàíà áîëüøå ïåðâîãî äèàïàçîíà îïîðíîãî öåíòðà
if(I2Current-I1Current>R1-S1 // òåêóùèé êàíàë Äîí÷èàíà øèðå êàíàëà îïîðíîãî öåíòðà
&& I2Previous-I1Previous<R1-S1 // ïðåäûäóùèé áûë óæå
&& I2Current>I2Previous // âåðõíÿÿ ãðàíèöà êàíàëà Äîí÷èàíà ïîøëà ââåðõ
&& I1Current>=I1Previous // íèæíÿÿ - íå ïîøëà âíèç
&& MP>0 // ëîêàëüíûé òðåíä +
&& Ask<High[0]-7*Point // ïîêóïêà íå íà ìàêñèìóìå öåíû
)
signal1=1;
if(I2Current-I1Current>R1-S1 // òåêóùèé êàíàë Äîí÷èàíà øèðå êàíàëà îïîðíîãî öåíòðà
&& I2Previous-I1Previous<R1-S1 // ïðåäûäóùèé áûë óæå
&& I1Current<I1Previous // íèæíÿÿ ãðàíèöà êàíàëà Äîí÷èàíà ïîøëà âíèç
&& I2Current>=I2Previous // âåðõíÿÿ - íå ïîøëà ââåðõ
&& MP>0 // ëîêàëüíûé òðåíä +
&& Bid>Low[0]+7*Point // ïðîäàæà íå íà ìèíèìóìå öåíû
)
signal1=-1;
// ïî äðóãèì óñëîâèÿì
// äëÿ ôëåòà - èñïîëüçîâàòü signal2
//------------------------------------------
// îòêðûòûõ îðäåðîâ âñåãî
//------------------------------------------
total=OrdersTotal();
if(total<1)
{
// íåò îòêðûòûõ îðäåðîâ
if(AccountFreeMargin()<(1000*Lots))
{
Print("Íåäîñòàòî÷íî äåíåã íà ñ÷åòó. Ñâîáîäíîé ìàðæè = ", AccountFreeMargin());
return(0);
}
bool BUYStart=false;
bool SELLStart=false;
if(!BUYStart && !SELLStart)
{
if(signal1==1
|| signal2==1)
{
BUYStart=true;
SELLStart=false;
}
if(signal1==-1
|| signal2==-1)
{
SELLStart=true;
BUYStart=false;
}
}
if(BUYStart)
// îòêðûâàåì äëèííóþ ïîçèöèþ (BUY)
OpenBuy(signal2,I1Current);
if(SELLStart)
// îòêðûâàåì êîðîòêóþ ïîçèöèþ (SELL)
OpenSell(signal2,I2Current);
return(0);
}
// -------------------------------------------------
// ìîäèôèöèðóåì, ÷òî ìîæåì
//--------------------------------------------------
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
// ïððîâåðêà íà íàëè÷èå îòêðûòûõ ïîçèöèé
OrderSymbol()==Symbol())
// ïðîâåðêà èíñòðóìåíòà
{
if(OrderType()==OP_BUY)
// äëèííàÿ ïîçèöèÿ îòêðûòà
// âòîðîé ïðåäîõðàíèòåëü - åñëè çà òðè áàðà öåíà íå ïîøëà â íóæíóþ ñòîðîíó
{
if(
UseClose
&& ((CurTime()-OrderOpenTime())>=3*Period()*60
&& (CurTime()-OrderOpenTime())<4*Period()*60
&& Close[1]<OrderOpenPrice()-3*Point)
)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
// èçìåíåíèå SL ïðè áåçóáûòî÷íîñòè
if(UseTrailingStop
&& (Bid-OrderOpenPrice())>StartProfit*Point
&& I1Current>I1Previous)
// öåíà îðäåðà â îáëàñòè áåçóáûòî÷íîñòè
// ñòîï óñòàíàâëèâàåì ïî íèæíåé ãðàíèöå áûñòðîãî êàíàëà
{
StopLoss=I1Current-TSLPlus*Point;
if(OrderStopLoss()<StopLoss)
{
OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,0,0,Aqua);
return(0);
}
}
return(0);
}
if(OrderType()==OP_SELL)
// êîðîòêàÿ ïîçèöèÿ îòêðûòà
// âòîðîé ïðåäîõðàíèòåëü - åñëè çà òðè áàðà öåíà íå ïîøëà â íóæíóþ ñòîðîíó
{
if(
UseClose
&& ((CurTime()-OrderOpenTime())>=3*Period()*60
&& (CurTime()-OrderOpenTime())<4*Period()*60
&& Close[1]>OrderOpenPrice()+3*Point)
)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
// èçìåíåíèå SL ïðè áåçóáûòî÷íîñòè
if(UseTrailingStop
&& (OrderOpenPrice()-Ask)>StartProfit*Point
&& I2Current<I2Previous)
// öåíà îðäåðà â îáëàñòè áåçóáûòî÷íîñòè
// ñòîï óñòàíàâëèâàåì ïî âåðõíåé ãðàíèöå áûñòðîãî êàíàëà
{
StopLoss=I2Current+TSLPlus*Point;
if(OrderStopLoss()>StopLoss)
{
OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,0,0,Red);
return(0);
}
}
return(0);
}
}
}
return(0);
}
//====================================================================
// ôóíêöèè
//====================================================================
// îòîáðàæåíèå îïîðíîãî öåíòðà è ëèíèé ïîääåðæêè/ñîïðîòèâëåíèÿ
void ShowPivot(double Pivot,double R1,double R2,double R3,double S1,double S2,double S3)
{
ObjectDelete("P_Line");
ObjectDelete("S3_Line");
ObjectDelete("R3_Line");
ObjectDelete("S2_Line");
ObjectDelete("R2_Line");
ObjectDelete("S1_Line");
ObjectDelete("R1_Line");
//
ObjectCreate("P_Line",OBJ_HLINE,0,CurTime(),Pivot);
ObjectSet("P_Line",OBJPROP_COLOR,DeepPink);
ObjectSet("P_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("S3_Line",OBJ_HLINE,0,CurTime(),S3);
ObjectSet("S3_Line",OBJPROP_COLOR,Red);
ObjectSet("S3_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("R3_Line",OBJ_HLINE,0,CurTime(),R3);
ObjectSet("R3_Line",OBJPROP_COLOR,Red);
ObjectSet("R3_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("S2_Line",OBJ_HLINE,0,CurTime(),S2);
ObjectSet("S2_Line",OBJPROP_COLOR,Orange);
ObjectSet("S2_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("R2_Line",OBJ_HLINE,0,CurTime(),R2);
ObjectSet("R2_Line",OBJPROP_COLOR,Orange);
ObjectSet("R2_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("S1_Line",OBJ_HLINE,0,CurTime(),S1);
ObjectSet("S1_Line",OBJPROP_COLOR,Yellow);
ObjectSet("S1_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectCreate("R1_Line",OBJ_HLINE,0,CurTime(),R1);
ObjectSet("R1_Line",OBJPROP_COLOR,Yellow);
ObjectSet("R1_Line",OBJPROP_STYLE,STYLE_SOLID);
//
ObjectsRedraw();
//----
if(ObjectFind("R3 label")!=0)
{
ObjectCreate("R3 label",OBJ_TEXT,0,Time[0],R3);
ObjectSetText("R3 label"," R3 ",6,"Arial",Red);
}
else ObjectMove("R3 label",0,Time[0],R3);
if(ObjectFind("S3 label")!=0)
{
ObjectCreate("S3 label",OBJ_TEXT,0,Time[0],S3);
ObjectSetText("S3 label"," S3 ",6,"Arial",Red);
}
else ObjectMove("S3 label",0,Time[0],S3);
if(ObjectFind("R2 label")!=0)
{
ObjectCreate("R2 label",OBJ_TEXT,0,Time[0],R2);
ObjectSetText("R2 label"," R2 ",6,"Arial",Orange);
}
else ObjectMove("R2 label",0,Time[0],R2);
if(ObjectFind("S2 label")!=0)
{
ObjectCreate("S2 label",OBJ_TEXT,0,Time[0],S2);
ObjectSetText("S2 label"," S2 ",6,"Arial",Orange);
}
else ObjectMove("S2 label",0,Time[0],S2);
if(ObjectFind("R1 label")!=0)
{
ObjectCreate("R1 label",OBJ_TEXT,0,Time[0],R1);
ObjectSetText("R1 label"," R1 ",6,"Arial",Yellow);
}
else ObjectMove("R1 label",0,Time[0],R1);
if(ObjectFind("S1 label")!=0)
{
ObjectCreate("S1 label",OBJ_TEXT,0,Time[0],S1);
ObjectSetText("S1 label"," S1 ", 6,"Arial",Yellow);
}
else ObjectMove("S1 label",0,Time[0],S1);
if(ObjectFind("P label")!=0)
{
ObjectCreate("P label",OBJ_TEXT,0,Time[0],Pivot);
ObjectSetText("P label"," P ",6,"Arial",DeepPink);
}
else ObjectMove("P label",0,Time[0],Pivot);
}
// îòêðûòü äëèííóþ ïîçèöèþ
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenBuy(int s,double I1)
{
double Lots, TakeProfit, StopLoss;
int ticket;
//----
if(s==1)
{
TakeProfit=Ask+12*Point;
StopLoss=I1-5*Point;
}
else
{
TakeProfit=Ask+TP*Point;
StopLoss=Low[1]-SLPlus*Point;
}
//----
ticket=OrderSend(Symbol(),OP_BUY,PosSize(),Ask,3,StopLoss,TakeProfit,"MyFriend",9552,0,Aqua);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY îðäåð îòêðûò: ",OrderOpenPrice());
}
}
else Print("Îøèáêà îòêðûòèÿ îðäåðà BUY: ",GetLastError());
}
// îòêðûòü êîðîòêóþ ïîçèöèþ
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenSell(int s,double I2)
{
double Lots, TakeProfit, StopLoss;
int ticket;
//----
if(s==-1)
{
TakeProfit=Bid-12*Point;
StopLoss=I2+5*Point;
}
else
{
TakeProfit=Bid-TP*Point;
StopLoss=High[1]+SLPlus*Point;
}
//----
ticket=OrderSend(Symbol(),OP_SELL,PosSize(),Bid,3,StopLoss,TakeProfit,"MyFriend",9552,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("SELL îðäåð îòêðûò: ",OrderOpenPrice());
}
}
else Print("Îøèáêà îòêðûòèÿ îðäåðà SELL: ",GetLastError());
}
// ðàñ÷åò ðàçìåðà îòêðûâàåìîé ïîçèöèè
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double PosSize()
{
double L;
//----
L=0.1;
L=NormalizeDouble(AccountFreeMargin()*Risk/1000.0,1);
if(L>5)
{
if(IsTesting()) L=5;
else L=MarketInfo("EURUSD",MODE_MAXLOT);
}
if(L<0.1) L=0.1;
return(L);
}
//+------------------------------------------------------------------+
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
---