Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Close_Percent_By_Line
//--------------------------------------------------------------------
#property copyright "Copyright © 2013, Õëûñòîâ Âëàäèìèð"
#property link "cmillion@narod.ru"
#property show_inputs
#include <WinUser32.mqh>
/*
Ðàáîòà ñêðèïòà.
Ïðè ñòàðòå ñêðèïò âûñòàâëÿåò ëèíèþ, íà ðàññòîÿíèè TakeProfit îò òåêóùåé öåíû.
Ïðè äîñòèæåíèè öåíîé ýòîé ãîðèçîíòàëüíîé ëèíèè çàêðûâàþòñÿ ïðèáûëüíûå îðäåðà.
Ñêðèïò çàêðûâàåò îò êàæäîãî îðäåðà çàäàííûé ïðîöåíò, ïðè çíà÷åíèè PercentClose = 100% çàêðûâàåò îðäåðà ïîëíîñòüþ.
Äàëåå ñêðèïò çàêàí÷èâàåò ñâîþ ðàáîòó
*/
//--------------------------------------------------------------------
extern int TakeProfit = 30; //ïðèáûëü çàêðûòèÿ îðäåðà â ïóíêòàõ, íà òàêîå ðàññòîÿíèå îò òåêóùåé öåíû ñòàâèì ëèíèþ Close
extern double PercentClose = 30; //ïðîöåíò çàêðûòèÿ îðäåðà
extern int Magic = -1; //åñëè -1 âñå, åñëè 0 ðó÷íûå, åñëè åñòü íîìåð òî ïî êîíêðåòíîìó ìàãèêó.
//--------------------------------------------------------------------
int start()
{
double PriceLine,OP;
int OMN,tip;
string Obj = "Close Percent By Line";
if (ObjectFind(Obj)==-1)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OMN = OrderMagicNumber();
if (OrderSymbol()==Symbol() && (OMN==Magic || Magic==-1))
{
tip = OrderType();
if (tip==OP_BUY)
{
PriceLine = NormalizeDouble(Bid+TakeProfit*Point,Digits);
}
if (tip==OP_SELL)
{
PriceLine = NormalizeDouble(Ask-TakeProfit*Point,Digits);
}
}
}
}
drawline(Obj,Gray,PriceLine);
drawtext(Obj,PriceLine);
}
//---
while(!IsStopped())
{
RefreshRates();
if (!IsTradeAllowed())
{
Sleep(1000);
continue;
}
Comment("Ñêðèïò ",Obj," ",TimeToStr(TimeCurrent(),TIME_SECONDS));
if (ObjectFind(Obj)==-1)
{
int ret=MessageBox("Çàêîí÷èòü ðàáîòó ñêðèïòà","Question", MB_YESNO|MB_ICONQUESTION);
if (ret==IDYES) break;
drawline(Obj,Gray,PriceLine);
drawtext(Obj,PriceLine);
}
else
{
if (PriceLine != ObjectGet(Obj,OBJPROP_PRICE1))
{
PriceLine = ObjectGet(Obj,OBJPROP_PRICE1);
drawtext(Obj,PriceLine);
}
}
//---
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OMN = OrderMagicNumber();
if (OrderSymbol()==Symbol() && (OMN==Magic || Magic==-1))
{
tip = OrderType();
OP = OrderProfit();
if (tip==OP_BUY && OP>0)
{
if (PriceLine!=0)
{
if (Bid>=PriceLine)
if (OrderClose(OrderTicket(),NormalizeDouble(OrderLots()*PercentClose/100,2), NormalizeDouble(Bid,Digits), 150, Blue))
{ObjectDelete(Obj);ObjectDelete(StringConcatenate(Obj,"n"));}
}
}
if (tip==OP_SELL && OP>0)
{
if (PriceLine!=0)
{
if (Ask<=PriceLine)
if (OrderClose(OrderTicket(), NormalizeDouble(OrderLots()*PercentClose/100,2), NormalizeDouble(Ask,Digits), 150, Red))
{ObjectDelete(Obj);ObjectDelete(StringConcatenate(Obj,"n"));}
}
}
}
}
}
Sleep(500);
}
Comment("Ñêðèïò ",Obj," çàêîí÷èë ñâîþ ðàáîòó");
return(0);
}
//--------------------------------------------------------------------
int drawline(string NameL, color col, double Y1)
{
ObjectCreate(NameL, OBJ_HLINE, 0,0,Y1,0,0);
ObjectSet (NameL, OBJPROP_COLOR, col);
ObjectSet (NameL, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet (NameL, OBJPROP_WIDTH, 1);
ObjectSet (NameL, OBJPROP_BACK, false);
ObjectSet (NameL, OBJPROP_RAY, false);
return;
}
//--------------------------------------------------------------------
int drawtext(string NameL, double Y1)
{
string NameLine=StringConcatenate(NameL,"n");
ObjectDelete (NameLine);
ObjectCreate (NameLine, OBJ_TEXT,0,Time[WindowFirstVisibleBar()-WindowFirstVisibleBar()/4],Y1,0,0,0,0);
ObjectSetText(NameLine, NameL ,8,"Arial");
ObjectSet (NameLine, OBJPROP_COLOR, ObjectGet(NameL,OBJPROP_COLOR));
}
//--------------------------------------------------------------------
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
---