Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
TTF_MW_expert
//+------------------------------------------------------------------+
//| Adviser working by some indicator
//| Copyright 2007, Victor Lukashuk aka lukas1
//|
//| version 01 25.07.2007
//+------------------------------------------------------------------+
//
// Ýêñïåðò îòêðûâàåò è çàêðûâàåò ïîçèöèè ïî ïðîïèñàííîìó èíäèêàòîðó "TTF_MW.mq4"
// à ìîæåò è ïî äðóãîìó èíäèêàòîðó - ýòà âåðñèÿ äëÿ èíäèêàòîðîâ, ðèñóþùèõ òî÷êè
#property copyright "Copyright © 2007, lukas1"
#include <stdlib.mqh> // áèáëèîòåêà îòîáðàæåíèÿ îøèáîê
extern int Take_profit=120;
extern int Stop_loss=40;
extern int TrailingStep=95; // øàã òðåéëèíãà
extern double TrailingStop=15; // ñòîïû ïî òðåéëèíãó
// ïàðàìåòðû äëÿ 1 ÷àñîâîê äëÿ EURUSD
extern string indicator = "TTF_MW";
extern double open_param1=80;
extern double open_param2=18;
extern double open_param3=27.1;
extern int buffer_for_open_buy=0;
extern int buffer_for_open_sell=1;
extern double close_param4=78;
extern double close_param5=54;
extern double close_param6=4.6;
extern int buffer_for_close_buy=0;
extern int buffer_for_close_sell=0;
extern double level_comparity=0.5;
extern double Lots =0.1;
extern int MAGIC=111222;
int digits; // êîëè÷åñòâî çíàêîâ äëÿ ðàáîòû ñ äàííîé âàë. ïàðîé
int stoplevel; // ìèíèìàëüíûé îòñòóï óñòàíîâêè ñòîïîâûõ îðäåðîâ
int spred;
double f1=0.01;
double s1=0.01;
int Buy=0;
int Sell=0;
double b=1;
int cnt=0;
double PROF=0;
double STOP=0;
int ticket,st,pr;
//+------------------------------------------------------------------+
//|
//-------------------------------------------------------------------------------------------------------------
int start()
{
// â ñàìîì íà÷àëå 20 ðàç ïðîâåðÿåì ÷òî òîðãîâëÿ ðàçðåøåíà
if (!IsTradeAllowed()) return(0);
Buy=0;Sell=0;
f1 = iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_buy, 1);
s1 = iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_sell, 1);
if (f1>level_comparity) {Buy=1; }
if (s1>level_comparity) {Sell=1;}
//Comment (" f1= ",f1, " s1= ",s1, " b= ",b) ;
if(b<Bars)
{
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÁÀÉ
for(cnt=OrdersTotal();cnt>=0;cnt--)
{OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC )
if(OrderType()==OP_BUY)
{// åñëè ÑÅËË äëèííóþ ïîçèöèþ çàêðûòü
if((Sell==1)&&(b<Bars))
{OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
s1=0.01;
return(0);
}
// check for trailing stop for BUY
if(TrailingStop>0) // åñëè ïàðàìåòð TrailingStop çàäàí è áîëüøå 0
{
if(OrderOpenPrice()<(Bid-Point*TrailingStep))
{
if(OrderStopLoss()<(Bid-Point*(TrailingStop+TrailingStep+1)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,DodgerBlue);
// òî ïåðåíîñèì ñòîï óðîâåíü îðäåðà íà óðîâåíü Bid-Point*TrailingStop
return(0);
} } } } }
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÑÅËË
for(cnt=OrdersTotal();cnt>=0;cnt--)
{OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC)
if(OrderType()==OP_SELL)
{// åñëè ÁÀÉ êîðîòêóþ ïîçèöèþ çàêðûòü
if ((Buy==1)&&(b<Bars))
{OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
f1=0.01;
return(0);
}
// check for trailing stop for SELL
if(TrailingStop>0)
{
if(OrderOpenPrice()>(Ask+Point*TrailingStep))
{
if((OrderStopLoss()>(Ask+Point*(TrailingStop+TrailingStep+1))))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Coral);
return(0);
} } } } }
Buy=0;Sell=0;
f1 = iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_buy, 1);
s1 = iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_sell, 1);
if (f1>level_comparity) {Buy=1; }
if (s1>level_comparity) {Sell=1;}
//Comment (" f1= ",f1, " s1= ",s1, " b= ",b) ;
// îòêðûâàåì íîâûå îðäåðà ÑÅËË
if (OrdersTotal()<1)
if((Sell==1)&&(b<Bars))
{b=Bars;
// ðàñ÷åò ñòîïîâûõ îðäåðîâ
PROF=0; STOP=0;
if(Stop_loss>0)
{if(Stop_loss-spred<=stoplevel) st=stoplevel; else st=Stop_loss-spred;
STOP=NormalizeDouble(Ask+st*Point,digits);
}
if(Take_profit>0)
{pr=Take_profit+spred; //ðàñ÷åò TP îò Ask
PROF=NormalizeDouble(Ask-pr*Point,digits);
}
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,
NormalizeDouble(STOP,digits), // SL
NormalizeDouble(PROF,digits), // TP
"sell_",MAGIC,0,Red);
if(ticket<1)
{Print("Oøèáêà ",ErrorDescription(GetLastError()));
return(0);
}
else s1=0.01;
return(0); // exit
}
// îòêðûâàåì íîâûå îðäåðà ÁÀÉ
if (OrdersTotal()<1)
if((Buy==1)&&(b<Bars))
{b=Bars;
// ðàñ÷åò ñòîïîâûõ îðäåðîâ
PROF=0; STOP=0;
stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
spred =MarketInfo(Symbol(),MODE_SPREAD);
digits =MarketInfo(Symbol(),MODE_DIGITS);
if (Stop_loss>0)
{if(Stop_loss-spred<=stoplevel) st=stoplevel; else st=Stop_loss-spred;
STOP=NormalizeDouble(Bid-st*Point,digits);
}
if(Take_profit>0)
{pr=Take_profit+spred; //ðàñ÷åò TP îò Bid
PROF=NormalizeDouble(Bid+pr*Point,digits);
}
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,
NormalizeDouble(STOP,digits), // SL
NormalizeDouble(PROF,digits), // TP
"buy_",MAGIC,0,Blue);
if(ticket<1)
{Print("Oøèáêà ",ErrorDescription(GetLastError()));
return(0);
}
else f1=0.01;
return(0); // exit
}
if(AccountFreeMargin()<(300*Lots)) // Ïðîâåðêà íàëè÷èÿ ñâîáîäíûõ ñðåäñòâ äëÿ òîðãîâëè
{Alert("Ìû íå èìååì äåíåã. Free Margin = ", AccountFreeMargin()); /*ÿ çàìåíèë ôóíêöèþ Print
âûâîäÿùóþ ñîîáùåíèÿ â ôàéë îò÷¸òà, êîòîðûé íåïîíÿòíî ãäå ñìîòðåòü íà ôóíêöèþ Alert*/
return(0);
}
return(0);
}
}
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
---