Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
GRID_3_SYMBOLS
#property copyright "Programming © 2015, http://cmillion.ru"
#property link "cmillion@narod.ru"
#property strict
#property description "Ñîâåòíèê âûñòàâëÿåò ñòîï 3 ñåòè èç îðäåðîâ ïî òðåì óêàçàííûì ïàðàì"
#property description "Êàê òîëüêî ñóììàðíûé ïðîôèò ïî âñåì ïîçèöèÿì ïðåâûñèò óêàçàííûé óðîâåíü,"
#property description "ñîâåòíèê çàêðûâàåò âñå è ïî íîâîé ïåðåîòêðûâàåò ñåòè"
extern string Symbol1 = "EURUSD";
extern string Symbol2 = "GBPUSD";
extern string Symbol3 = "EURJPY";
extern int Step01 = 4;
extern int Orders = 14;
extern int Step02 = 6;
extern double Lot = 0.01;
extern double Profit = 10.0;
extern int Magic = 123;
//-------------------------------
string AC;
int OnInit()
{
if (Symbol()!=Symbol1 || Symbol()!=Symbol2 || Symbol()!=Symbol3) Symbol1 = Symbol();
AC = StringConcatenate(" ", AccountCurrency());
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("Ñîâåòíèê çàêîí÷èë ñâîþ ðàáîòó");
}
//+------------------------------------------------------------------+
void OnTick()
{
int i,n1=0,n2=0,n3=0;
double profit1=0,profit2=0,profit3=0;
string symbol;
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magic)
{
symbol=OrderSymbol();
if (symbol==Symbol1)
{
profit1+=OrderProfit()+OrderSwap()+OrderCommission();
n1++;
}
if (symbol==Symbol2)
{
profit2+=OrderProfit()+OrderSwap()+OrderCommission();
n2++;
}
if (symbol==Symbol3)
{
profit3+=OrderProfit()+OrderSwap()+OrderCommission();
n3++;
}
}
}
}
if (n1+n2+n3==0)
{
double PointEURUSD = MarketInfo(Symbol1,MODE_POINT);
double PointGBPUSD = MarketInfo(Symbol2,MODE_POINT);
double PointEURJPY = MarketInfo(Symbol3,MODE_POINT);
double OpenEURUSD = iClose(Symbol1,PERIOD_M30,0);
if (OrderSend (Symbol1, OP_BUYSTOP, Lot, OpenEURUSD+Step01*PointEURUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol1," Error ",GetLastError());
if (OrderSend (Symbol1, OP_SELLSTOP, Lot, OpenEURUSD-Step01*PointEURUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol1," Error ",GetLastError());
RefreshRates();
double OpenGBPUSD = iClose(Symbol2,PERIOD_M30,0);
if (OrderSend (Symbol2, OP_BUYSTOP, Lot, OpenGBPUSD+Step01*PointGBPUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol2," Error ",GetLastError());
if (OrderSend (Symbol2, OP_SELLSTOP, Lot, OpenGBPUSD-Step01*PointGBPUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol2," Error ",GetLastError());
RefreshRates();
double OpenEURJPY = iClose(Symbol3,PERIOD_M30,0);
if (OrderSend (Symbol3, OP_BUYSTOP, Lot, OpenEURJPY+Step01*PointEURJPY, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol3," Error ",GetLastError());
if (OrderSend (Symbol3, OP_SELLSTOP, Lot, OpenEURJPY-Step01*PointEURJPY, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol3," Error ",GetLastError());
RefreshRates();
for (i=1; i<=Orders; i++)
{
if (OrderSend (Symbol1, OP_BUYSTOP, Lot, OpenEURUSD+Step01*PointEURUSD+i*Step02*PointEURUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol1," Error ",GetLastError());
if (OrderSend (Symbol1, OP_SELLSTOP, Lot, OpenEURUSD-Step01*PointEURUSD-i*Step02*PointEURUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol1," Error ",GetLastError());
if (OrderSend (Symbol2, OP_BUYSTOP, Lot, OpenGBPUSD+Step01*PointGBPUSD+i*Step02*PointGBPUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol2," Error ",GetLastError());
if (OrderSend (Symbol2, OP_SELLSTOP, Lot, OpenGBPUSD-Step01*PointGBPUSD-i*Step02*PointGBPUSD, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol2," Error ",GetLastError());
if (OrderSend (Symbol3, OP_BUYSTOP, Lot, OpenEURJPY+Step01*PointEURJPY+i*Step02*PointEURJPY, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol3," Error ",GetLastError());
if (OrderSend (Symbol3, OP_SELLSTOP, Lot, OpenEURJPY-Step01*PointEURJPY-i*Step02*PointEURJPY, 3, 0,0, "GRID", Magic,0,CLR_NONE)
==-1) Comment("OrderSend ",Symbol3," Error ",GetLastError());
}
}
else
{
if (profit1+profit2+profit3 > Profit) DeleteAllOrders();
Comment(n1," orders ",Symbol1," Profit = ",DoubleToStr(profit1,2),AC,"\n",
n2," orders ",Symbol2," Profit = ",DoubleToStr(profit2,2),AC,"\n",
n3," orders ",Symbol3," Profit = ",DoubleToStr(profit3,2),AC,"\n",
n1+n2+n3," orders, Profit = ",DoubleToStr(profit1+profit2+profit3,2),AC,"\nClose ",DoubleToStr(Profit,2),AC);
}
return;
}
//-------------------------------
void DeleteAllOrders()
{
string symbol;
bool error=true;
int j,nn=0;
while(true)
{
for (j = OrdersTotal()-1; j >= 0; j--)
{
if (OrderSelect(j, SELECT_BY_POS))
{
symbol=OrderSymbol();
if ((symbol==Symbol1 || symbol==Symbol2 || symbol==Symbol3) && OrderMagicNumber() == Magic)
{
int DIGITS = (int)MarketInfo(symbol,MODE_DIGITS);
double ASK = NormalizeDouble(MarketInfo(symbol,MODE_ASK),DIGITS);
double BID = NormalizeDouble(MarketInfo(symbol,MODE_BID),DIGITS);
double POINT = MarketInfo(symbol,MODE_POINT);
int OT = OrderType();
int Ticket=OrderTicket();
if (OT==OP_BUY)
{
error=OrderClose(Ticket,OrderLots(),BID,50,Red);
}
if (OT==OP_SELL)
{
error=OrderClose(Ticket,OrderLots(),ASK,50,Red);
}
if (OT>1)
if (!OrderDelete(Ticket))
Comment("Îðäåð ",Ticket," îøèáêà óäàëåíèÿ ",GetLastError());
if (!error)
{
int err = GetLastError();
if (err<2) continue;
if (err==129)
{ Comment("Íåïðàâèëüíàÿ öåíà ",TimeToStr(TimeCurrent(),TIME_SECONDS));
Sleep(5000);
RefreshRates();
continue;
}
if (err==146)
{
int ret1=MessageBox("Ïîäñèñòåìà òîðãîâëè çàíÿòà"," ",
MB_RETRYCANCEL|MB_TOPMOST|MB_ICONWARNING);
if (ret1==IDCANCEL) return;
j++;
if (IsTradeContextBusy()) Sleep(2000);
continue;
}
Comment("Îøèáêà ",err," çàêðûòèÿ îðäåðà N ",Ticket," ",TimeToStr(TimeCurrent(),TIME_SECONDS));
}
}
}
}
int n=0;
for (j = 0; j < OrdersTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS))
{
symbol=OrderSymbol();
if ((symbol==Symbol1 || symbol==Symbol2 || symbol==Symbol3) && OrderMagicNumber() == Magic)
{
n++;
}
}
}
if (n==0) break;
nn++;
if (nn>10) {Comment("Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",n);break;}
Sleep(1000);
RefreshRates();
}
}
//-------------------------------
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
---