Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Close_Percent_By_Line_160114
//--------------------------------------------------------------------
#property copyright "Copyright © 2013, Õëûñòîâ Âëàäèìèð"
#property link "cmillion@narod.ru"
#property show_inputs
#include <WinUser32.mqh>
/*
Ðàáîòà ñêðèïòà.
Ïðè ñòàðòå ñêðèïò âûñòàâëÿåò ëèíèþ, íà òî ìåñòî êóäà åãî áðîèñè ìûøüþ
Ïðè äîñòèæåíèè öåíîé ýòîé ãîðèçîíòàëüíîé ëèíèè çàêðûâàþòñÿ ïðèáûëüíûå îðäåðà.
Ñêðèïò çàêðûâàåò îò êàæäîãî îðäåðà çàäàííûé ïðîöåíò, ïðè çíà÷åíèè PercentClose = 100% çàêðûâàåò îðäåðà ïîëíîñòüþ.
Äàëåå ñêðèïò çàêàí÷èâàåò ñâîþ ðàáîòó
*/
//--------------------------------------------------------------------
extern double PercentClose = 30; //ïðîöåíò çàêðûòèÿ îðäåðà
extern int Magic = -1; //åñëè -1 âñå, åñëè 0 ðó÷íûå, åñëè åñòü íîìåð òî ïî êîíêðåòíîìó ìàãèêó.
//--------------------------------------------------------------------
int start()
{
double lot,MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
double PriceLine=WindowPriceOnDropped();
int OMN,tip;
string Obj = "Close Percent By Line";
if (ObjectFind(Obj)==-1)
{
drawline(Obj,Gray,PriceLine);
}
//---
while(!IsStopped())
{
RefreshRates();
if (!IsTradeAllowed())
{
Sleep(1000);
continue;
}
Comment("Ñêðèïò ",Obj,"\nÖåíà çàêðûòèÿ ",PriceLine," ",TimeToStr(TimeCurrent(),TIME_SECONDS));
if (ObjectFind(Obj)==-1)
{
int ret=MessageBox("Çàêîí÷èòü ðàáîòó ñêðèïòà"," ", MB_YESNO|MB_ICONQUESTION);
if (ret==IDYES) break;
drawline(Obj,Gray,PriceLine);
drawtext(Obj,PriceLine);
}
else
{
if (PriceLine != ObjectGetValueByShift(Obj,0))
{
PriceLine = ObjectGetValueByShift(Obj,0);
drawtext(Obj,PriceLine);
}
}
//---
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();
lot=NormalizeDouble(OrderLots()*PercentClose/100,2);
if (lot<MINLOT) lot=OrderLots();
if (tip==OP_BUY)
{
if (PriceLine!=0)
{
if (Low[0]<PriceLine && Bid>=PriceLine)
if (OrderClose(OrderTicket(),lot, NormalizeDouble(Bid,Digits), 150, Blue))
{ObjectDelete(Obj);ObjectDelete(StringConcatenate(Obj,"n"));}
}
}
if (tip==OP_SELL)
{
if (PriceLine!=0)
{
if (High[0]>PriceLine && Ask<=PriceLine)
if (OrderClose(OrderTicket(), lot, 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_TREND, 0,Time[WindowFirstVisibleBar()/2],Y1,Time[0]+600*Period(),Y1);
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
---