Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Ambush
//+----------------------------------------------------------------------------+
//| Çàñàäà.mq4 |
//| Zuzabush |
//| www.Zuzabush@yandex.ru |
//| |
//| |
//| |
//| |
//| |
//+----------------------------------------------------------------------------+
#property copyright "Zuzabush"
#property link "www.Zuzabush@yandex"
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà -----------------------------------------+
extern bool AllSymbols = False; // Óïðàâëÿòü âñåìè ñòîïîâûìè îðäåðàìè
extern int Otstup = 10; // Íà÷àëüíàÿ äèñòàíöèÿ
extern int TrailingStop = 10; // Ôèêñèðîâàííûé ðàçìåð òðàëà îòë
extern int TrailingStep = 1; // Øàã òðàëà îòë
extern int PK = 15; // Êîýô âèðò ïðîôèò
extern int SK = 1; // Êîýô âèðò ñòîï
extern bool UseSound = True; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern bool ShowComment = True; // Ïîêàçûâàòü êîììåíòàðèé
extern color clModifyBuy = Aqua; // Öâåò çíà÷êà ìîäèôèêàöèè ïîêóïêè
extern color clModifySell = Tomato; // Öâåò çíà÷êà ìîäèôèêàöèè ïðîäàæè
//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------------+
bool gbNoInit = False; // Ôëàã íåóäà÷íîé èíèöèàëèçàöèè
string SoundSuccess = "ok.wav"; // Çâóê óñïåõà
string SoundError = "timeout.wav"; // Çâóê îøèáêè
int NumberOfTry = 3; // Êîëè÷åñòâî òîðãîâûõ ïîïûòîê
double Take;
//------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé -----------------------------------------+
#include <stdlib.mqh> // Ñòàíäàðòíàÿ áèáëèîòåêà
//+----------------------------------------------------------------------------+
//| |
//| ÏÐÅÄÎÏÐÅÄÅ˨ÍÍÛÅ ÔÓÍÊÖÈÈ |
//| |
//+----------------------------------------------------------------------------+
//| expert initialization function |
//+----------------------------------------------------------------------------+
void init() {
gbNoInit=False;
if (!IsTradeAllowed()) {
Comment("Äëÿ íîðìàëüíîé ðàáîòû ñîâåòíèêà íåîáõîäèìî\n"+
"Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü");
gbNoInit=True; return;
}
if (!IsLibrariesAllowed()) {
Comment("Äëÿ íîðìàëüíîé ðàáîòû ñîâåòíèêà íåîáõîäèìî\n"+
"Ðàçðåøèòü èìïîðò èç âíåøíèõ ýêñïåðòîâ");
gbNoInit=True; return;
}
if (!IsTesting()) {
if (IsExpertEnabled()) Comment("Ñîâåòíèê áóäåò çàïóùåí ñëåäóþùèì òèêîì");
else Comment("Îòæàòà êíîïêà \"Ðàçðåøèòü çàïóñê ñîâåòíèêîâ\"");
}
start();
}
//+----------------------------------------------------------------------------+
//| expert deinitialization function |
//+----------------------------------------------------------------------------+
void deinit() { if (!IsTesting()) Comment(""); }
//+----------------------------------------------------------------------------+
//| expert start function |
//+----------------------------------------------------------------------------+
void start() {
bool result;
int error;
int Lots ;
int order;
int KO = AccountBalance()/500;
Lots = KO ;
if (OrdersTotal()<1||((OrdersTotal()<2)&&(OrderType()==OP_BUYSTOP))) //åñëè , òî îòêðûâàåì
order=OrderSend(Symbol(),OP_SELLSTOP,Lots*0.1,Bid-Otstup*Point,3,0,0,"",16384,0,Green);
if ((OrderType()==OP_SELLSTOP)&&(OrdersTotal()<2)) //åñëè , òî îòêðûâàåì
order=OrderSend(Symbol(),OP_BUYSTOP,Lots*0.1,Ask+Otstup*Point,3,0,0,"",16384,0,Green);
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
if (((AccountEquity()-AccountBalance())>KO*PK)||(AccountEquity()-AccountBalance())<-KO*SK )
{ if(OrderType()==OP_BUY) result= OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result= OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),30,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
else Print( "Error when order select ", GetLastError());
if (gbNoInit) {
Comment("Íå óäàëîñü èíèöèàëèçèðîâàòü ñîâåòíèê!"); return;
}
if (IsTesting()) {
if (ShowComment) {
Comment(IIFs(AllSymbols, "AllSymbols ", "")
,"TrailingStop=", DoubleToStr(TrailingStop, 0), "ï. "
,"TrailingStep=", DoubleToStr(TrailingStep, 0), "ï. "
,IIFs(UseSound, "UseSound ", "")
);
} else Comment("");
}
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllSymbols || OrderSymbol()==Symbol()) {
TrailingOrders();
}
}
}
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.09.2005 |
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 18.07.2008 |
//| Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ. |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 01.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ. |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 28.11.2006 |
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà. |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=NumberOfTry; it++) {
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
er=GetLastError();
if (UseSound) PlaySound(SoundError);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}
//+----------------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå îðäåðîâ ïðîñòûì òðàëîì |
//+----------------------------------------------------------------------------+
void TrailingOrders() {
double di, pa, pb, pp, sl, tp;
pp=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUYSTOP) {
pa=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pa!=(TrailingStop+TrailingStep-1)*pp) {
di=OrderOpenPrice()-pa-TrailingStop*pp;
ModifyOrder(pa+TrailingStop*pp, sl, tp);
}
}
if (OrderType()==OP_SELLSTOP) {
pb=MarketInfo(OrderSymbol(), MODE_BID);
if (pb-OrderOpenPrice()!=(TrailingStop+TrailingStep-1)*pp) {
di=pb-OrderOpenPrice()-TrailingStop*pp;
ModifyOrder(pb-TrailingStop*pp, sl, tp);
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
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
---