Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
e-TLE_v.1.6
//+------------------------------------------------------------------+
//| e-TLE_v.1.6.mq4 |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 20.09.2005 Òð¸õóðîâíåâàÿ ñèñòåìà âûõîäîâ (Three Level Exit). |
//| Îòðàáàòûâàåò âñå îòêðûòûå ïîçèöèè. |
//| Âåøàòü òîëüêî íà îäèí ëþáîé ãðàôèê. |
//| 22.09.2005 v.1.0 Ââ¸ë âíåøíèé ïàðàìåòð äëÿ óïðàâëåíèÿ çîíîé |
//| âëèÿíèÿ ñîâåòíèêà. |
//| 22.09.2005 v.1.1 Ââ¸ë ïàðàìåòðû äëÿ îãðàíè÷åíèé ïî ñ÷¸òó |
//| 22.09.2005 v.1.2 Èñïðàâèë îøèáêó ñ îïðåäåëåíèåì âàëþòû |
//| 22.09.2005 v.1.3 Ðåàëèçîâàë ìåõàíèçì îòñå÷êè ñíèæåíèÿ öåíû |
//| 22.09.2005 v.1.4 Ïîïðàâèë ìåõàíèçì îòñå÷êè ñíèæåíèÿ öåíû |
//| 23.09.2005 v.1.5 Ðåàëèçîâàë ôàêòè÷åñêóþ óñòàíîâêó ñòîïîâ |
//| 14.10.2005 v.1.6 Òðè óðîâíÿ ïåðåíîñà ñòîïà - |
//| ðàáîòàåò òîëüêî â ïðîôèòíîé çîíå. |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link "http://www.kimiv.ru"
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern bool UseOneAccount = false; // Òîðãîâàòü òîëüêî íà îäíîì ñ÷¸òå
extern int NumberAccount = 5596; // Íîìåð òîðãîâîãî ñ÷¸òà
extern bool AllPositions = True; // Óïðàâëÿòü âñåìè ïîçèöèÿìè
extern int LevelProfit1 = 35; // Ïåðâûé óðîâåíü ïðîôèòà
extern int LevelMoving1 = 2; // Ïåðâûé óðîâåíü ïåðåíîñà
extern int LevelProfit2 = 45; // Âòîðîé óðîâåíü ïðîôèòà
extern int LevelMoving2 = 10; // Âòîðîé óðîâåíü ïåðåíîñà
extern int LevelProfit3 = 90; // Òðåòèé óðîâåíü ïðîôèòà
extern int LevelMoving3 = 45; // Òðåòèé óðîâåíü ïåðåíîñà
extern int TrailingStop = 55; // Ðàçìåð òðàëà
extern int TrailingStep = 3; // Øàã òðàëà
extern bool ShowComment = True; // Ïîêàçûâàòü êîììåíòàðèè
extern bool UseSound = True; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà ----------------------------
//+------------------------------------------------------------------+
//| Custor expert deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start() {
double pp;
int nd;
string comm="";
if (UseOneAccount && AccountNumber()!=NumberAccount) {
Comment("Ðàáîòà íà ñ÷¸òå: "+AccountNumber()+" ÇÀÏÐÅÙÅÍÀ!");
return;
}
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllPositions || OrderSymbol()==Symbol()) {
ThreeLevelSystemOfOutput();
nd=MarketInfo(OrderSymbol(), MODE_DIGITS);
pp=MarketInfo(OrderSymbol(), MODE_POINT);
comm=comm+OrderSymbol()+" Öåíà: "+DoubleToStr(OrderOpenPrice(),nd)+
" SL = " + DoubleToStr(OrderStopLoss(),nd)+
" ("+StopLossInPoint()+")\n";
}
}
}
if (ShowComment) Comment(comm);
}
//+------------------------------------------------------------------+
//| Òð¸õóðîâíåâàÿ ñèñòåìà âûõîäîâ |
//+------------------------------------------------------------------+
void ThreeLevelSystemOfOutput() {
int pr=ProfitPosition(), sl=StopLossInPoint();
int sp=MarketInfo(OrderSymbol(), MODE_SPREAD);
if (pr>LevelProfit1 && pr<=LevelProfit2 && sl<LevelMoving1) ModifyStopLossInPoint(LevelMoving1);
if (pr>LevelProfit2 && pr<=LevelProfit3 && sl<LevelMoving2) ModifyStopLossInPoint(LevelMoving2);
if (pr>LevelProfit3 && sl<LevelMoving3) ModifyStopLossInPoint(LevelMoving3);
if (pr>LevelMoving3+TrailingStop+TrailingStep) {
TrailingPositions();
}
}
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì |
//+------------------------------------------------------------------+
void TrailingPositions() {
double pBid, pAsk, pp=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
if (pBid-OrderOpenPrice()>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return;
}
}
}
}
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss |
//| Ïàðàìåòðû: |
//| ldStopLoss - óðîâåíü StopLoss |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
bool fm; // Ôëàã ìîäèôèêàöèè ïîçèöèè
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss |
//| Ïàðàìåòðû: |
//| ldStopLoss - óðîâåíü StopLoss |
//+------------------------------------------------------------------+
void ModifyStopLossInPoint(int pp) {
bool fm; // Ôëàã ìîäèôèêàöèè ïîçèöèè
double ldSL=0, mp=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) ldSL=OrderOpenPrice()+pp*mp;
if (OrderType()==OP_SELL) ldSL=OrderOpenPrice()-pp*mp;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ïðîôèò ïîçèöèè â ïóíêòàõ |
//+------------------------------------------------------------------+
int ProfitPosition() {
double pBid, pAsk, pp=MarketInfo(OrderSymbol(), MODE_POINT);
double pr=0;
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
pr=(pBid-OrderOpenPrice())/pp;
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
pr=(OrderOpenPrice()-pAsk)/pp;
}
return(MathRound(pr));
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò StopLoss ïîçèöèè â ïóíêòàõ |
//+------------------------------------------------------------------+
int StopLossInPoint() {
double pp=MarketInfo(OrderSymbol(), MODE_POINT);
double sp=0;
if (OrderType()==OP_BUY) {
sp=(OrderStopLoss()-OrderOpenPrice())/pp;
}
if (OrderType()==OP_SELL) {
sp=(OrderOpenPrice()-OrderStopLoss())/pp;
}
if (OrderStopLoss()==0) sp=-OrderOpenPrice()/pp;
return(MathRound(sp));
}
//+------------------------------------------------------------------+
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
---