Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Secwenta
//---------------------------------------------------------------
// Secwenta.mq4
//
//---------------------------------------------------------------
#property copyright ""
#property link ""
//---------------------------------------------------------------
extern double StopLoss =100; // SL
extern double TakeProfit =35; // ÒÐ
extern double Lots =0.01; //
extern double Prots =10.00; // Ïðîöåíò ñâîáîäíûõ ñðåäñòâ
bool Work=true;
string Secwenta; // Íàçâàíèå ôèíàíñ. èíñòðóìåíòà
int i1;
int num=0;
int num1=0;
string textVar;
double ExtMapBuffer1;
string symbol; int timeframe;
//+------------------------------------------------------------------+
int init()
{
//----
symbol = Symbol();
timeframe =0;
//----
return(0);
}
//--------------------------------------------------------------- 2 --
int start()
{
int
Total, // Êîëè÷åñòâî îðäåðîâ â îêíå
Tip=-1, // Òèï âûáðàí. îðäåðà (B=0,S=1)
Ticket; // Íîìåð îðäåðà
double
Lot, // Êîëè÷. ëîòîâ â âûáðàí.îðäåðå
Lts, // Êîëè÷. ëîòîâ â îòêðûâ.îðäåðå
Min_Lot, // Ìèíèìàëüíîå êîëè÷åñòâî ëîòîâ
Step, // Øàã èçìåíåíèÿ ðàçìåðà ëîòà
Free, // Òåêóùèå ñâîáîäíûå ñðåäñòâà
One_Lot, // Ñòîèìîñòü îäíîãî ëîòà
Price, // Öåíà âûáðàííîãî îðäåðà
SL, // SL âûáðàííîãî îðäåðà
TP; // TP âûáðàííîãî îðäåðà
bool
Ans =false, // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
Cls_B=false, // Êðèòåðèé äëÿ çàêðûòèÿ Buy
Cls_S=false, // Êðèòåðèé äëÿ çàêðûòèÿ Sell
Opn_B=false, // Êðèòåðèé äëÿ îòêðûòèÿ Buy
Opn_S=false; // Êðèòåðèé äëÿ îòêðûòèÿ Sell
//--------------------------------------------------------------- 3 --
int IBARS = iBars(symbol, timeframe);
if(ArraySize(ExtMapBuffer1) < IBARS)
{
ArraySetAsSeries(ExtMapBuffer1, false);
ArrayResize(ExtMapBuffer1, IBARS);
ArraySetAsSeries(ExtMapBuffer1, true);
}
static int IndCounted;
int limit;
int counted_bars = IndCounted;
IndCounted = IBARS - 1;
limit = IBARS - counted_bars - 1;
for(int i1=limit; i1>=0; i1--)
{
if(Close[i1+1]<Close[i1+5])num = num + 1;
else num = 0;
if (num == 9) {textVar = num;
ObjectCreate(""+i1, OBJ_TEXT, 0, Time[i1+1],Low[i1+1]-5*Point );
ObjectSetText(""+i1, ""+DoubleToStr(num,0), 16, "Arial", Red);}
if(Close[i1+1]>Close[i1+5]) num1 = num1 + 1;
else num1 = 0;
if (num1 == 9) {textVar = num1;
ObjectCreate(""+i1, OBJ_TEXT, 0, Time[i1+1],High[i1+1]+10*Point );
ObjectSetText(""+i1, ""+DoubleToStr(num1,0), 16, "Arial", RoyalBlue); }
}
// Ïðåäâàðèò.îáðàáîòêà
if(Work==false) // Êðèòè÷åñêàÿ îøèáêà
{
Alert("Êðèòè÷åñêàÿ îøèáêà. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
//--------------------------------------------------------------- 4 --
// Ó÷¸ò îðäåðîâ
Secwenta=Symbol(); // Íàçâàíèå ôèí.èíñòð.
Total=0; // Êîëè÷åñòâî îðäåðîâ
for(int i=1; i<=OrdersTotal(); i++) // Öèêë ïåðåáîðà îðäåð
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
{ // Àíàëèç îðäåðîâ:
if (OrderSymbol()!=Secwenta)continue; // Íå íàø ôèí. èíñòðóì
if (OrderType()>1) // Ïîïàëñÿ îòëîæåííûé
{
Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
Total++; // Ñ÷¸ò÷èê ðûíî÷í. îðä
if (Total>1) // Íå áîëåå îäíîãî îðä
{
Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
Ticket=OrderTicket(); // Íîìåð âûáðàíí. îðä.
Tip =OrderType(); // Òèï âûáðàííîãî îðä.
Price =OrderOpenPrice(); // Öåíà âûáðàíí. îðä.
SL =OrderStopLoss(); // SL âûáðàííîãî îðä.
TP =OrderTakeProfit(); // TP âûáðàííîãî îðä.
Lot =OrderLots(); // Êîëè÷åñòâî ëîòîâ
}
}
//--------------------------------------------------------------- 5 --
// Òîðãîâûå êðèòåðèè
if (num == 9)
{
Opn_B=true; // Êðèòåðèé îòêð. Buy
Cls_S=true; // Êðèòåðèé çàêð. Sell
}
if (num1 == 9)
{
Opn_S=true; // Êðèòåðèé îòêð. Sell
Cls_B=true; // Êðèòåðèé çàêð. Buy
}
//--------------------------------------------------------------- 6 --
// Çàêðûòèå îðäåðîâ
while(true) // Öèêë çàêðûòèÿ îðä.
{
if (Tip==0 && Cls_B==true) // Îòêðûò îðäåð Buy..
{ //è åñòü êðèòåðèé çàêð
Alert("Ïîïûòêà çàêðûòü Buy ",Ticket,". Îæèäàíèå îòâåòà..");
RefreshRates(); // Îáíîâëåíèå äàííûõ
Ans=OrderClose(Ticket,Lot,Bid,2); // Çàêðûòèå Buy
if (Ans==true) // Ïîëó÷èëîñü :)
{
Alert ("Çàêðûò îðäåð Buy ",Ticket);
break; // Âûõîä èç öèêëà çàêð
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
if (Tip==1 && Cls_S==true) // Îòêðûò îðäåð Sell..
{ // è åñòü êðèòåðèé çàêð
Alert("Ïîïûòêà çàêðûòü Sell ",Ticket,". Îæèäàíèå îòâåòà..");
RefreshRates(); // Îáíîâëåíèå äàííûõ
Ans=OrderClose(Ticket,Lot,Ask,2); // Çàêðûòèå Sell
if (Ans==true) // Ïîëó÷èëîñü :)
{
Alert ("Çàêðûò îðäåð Sell ",Ticket);
break; // Âûõîä èç öèêëà çàêð
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
break; // Âûõîä èç while
}
//--------------------------------------------------------------- 7 --
// Ñòîèìîñòü îðäåðîâ
RefreshRates(); // Îáíîâëåíèå äàííûõ
Min_Lot=MarketInfo(Secwenta,MODE_MINLOT); // Ìèíèì. êîëè÷. ëîòîâ
Free =AccountFreeMargin(); // Ñâîáîäí ñðåäñòâà
One_Lot=MarketInfo(Secwenta,MODE_MARGINREQUIRED);// Ñòîèìîñòü 1 ëîòà
Step =MarketInfo(Secwenta,MODE_LOTSTEP); // Øàã èçìåíåí ðàçìåðà
if (Lots > 0) // Åñëè çàäàíû ëîòû,òî
Lts =Lots; // ñ íèìè è ðàáîòàåì
else // % ñâîáîäíûõ ñðåäñòâ
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Äëÿ îòêðûòèÿ
if(Lts < Min_Lot) Lts=Min_Lot; // Íå ìåíüøå ìèíèìàëüí
if (Lts*One_Lot > Free) // Ëîò äîðîæå ñâîáîäí.
{
Alert(" Íå õâàòàåò äåíåã íà ", Lts," ëîòîâ");
return; // Âûõîä èç start()
}
//--------------------------------------------------------------- 8 --
// Îòêðûòèå îðäåðîâ
while(true) // Öèêë çàêðûòèÿ îðä.
{
if (Total==0 && Opn_B==true) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Buy
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Bid - New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Bid + New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Buy. Îæèäàíèå îòâåòà..");
Ticket=OrderSend(Secwenta,OP_BUY,Lts,Ask,2,SL,TP);//Îòêðûòèå Buy
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
Alert ("Îòêðûò îðäåð Buy ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
if (Total==0 && Opn_S==true) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Sell
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Ask + New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Ask - New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Sell. Îæèäàíèå îòâåòà..");
Ticket=OrderSend(Secwenta,OP_SELL,Lts,Bid,2,SL,TP);//Îòêðûòèå Sel
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
Alert ("Îòêðûò îðäåð Sell ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
break; // Âûõîä èç while
}
//--------------------------------------------------------------- 9 --
return; // Âûõîä èç start()
}
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error) // Ô-èÿ îáðàáîò îøèáîê
{
switch(Error)
{ // Ïðåîäîëèìûå îøèáêè
case 4: Alert("Òîðãîâûé ñåðâåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(3000); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
RefreshRates(); // Îáíîâèì äàííûå
return(1); // Âûõîä èç ôóíêöèè
case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
while(RefreshRates()==false) // Äî íîâîãî òèêà
Sleep(1); // Çàäåðæêà â öèêëå
return(1); // Âûõîä èç ôóíêöèè
case 137:Alert("Áðîêåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(3000); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
Sleep(500); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
// Êðèòè÷åñêèå îøèáêè
case 2: Alert("Îáùàÿ îøèáêà.");
return(0); // Âûõîä èç ôóíêöèè
case 5: Alert("Ñòàðàÿ âåðñèÿ òåðìèíàëà.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 64: Alert("Ñ÷åò çàáëîêèðîâàí.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 133:Alert("Òîðãîâëÿ çàïðåùåíà.");
return(0); // Âûõîä èç ôóíêöèè
case 134:Alert("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
return(0); // Âûõîä èç ôóíêöèè
default: Alert("Âîçíèêëà îøèáêà ",Error); // Äðóãèå âàðèàíòû
return(0); // Âûõîä èç ôóíêöèè
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // Ïðîâåðêà ñòîï-ïðèê.
{
int Min_Dist=MarketInfo(Secwenta,MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ
if (Parametr < Min_Dist) // Åñëè ìåíüøå äîïóñò.
{
Parametr=Min_Dist; // Óñòàíîâèì äîïóñò.
Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà.");
}
return(Parametr); // Âîçâðàò çíà÷åíèÿ
}
//-------------------------------------------------------------- 12 --
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
---