Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
IN_GOD_WE_TRUST_6w
//+------------------------------------------------------------------+
//| IN GOD WE TRUST.mq4 |
//| Copyright © 2010, IN GOD WE TRUST |
//| IN GOD WE TRUST |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, IN GOD WE TRUST"
/*-------------------------------------------------------------------- v1.4
/*--------------------------------------------------------------------
//--------------------------------------------------------------------v1.8
*///--------------------------------------------------------------------
extern int Period_MA = 2000,
Dev = 2,
MetodMA = 2, //MODE_SMA 0 Ïðîñòîå ñêîëüçÿùåå ñðåäíåå
//MODE_EMA 1 Ýêñïîíåíöèàëüíîå ñêîëüçÿùåå ñðåäíåå
//MODE_SMMA 2 Ñãëàæåííîå ñêîëüçÿùåå ñðåäíåå
//MODE_LWMA 3 Ëèíåéíî-âçâåøåííîå ñêîëüçÿùåå ñðåäíåå
TipPice = 6, //PRICE_CLOSE 0 Öåíà çàêðûòèÿ
//PRICE_OPEN 1 Öåíà îòêðûòèÿ
//PRICE_HIGH 2 Ìàêñèìàëüíàÿ öåíà
//PRICE_LOW 3 Ìèíèìàëüíàÿ öåíà
//PRICE_MEDIAN 4 Ñðåäíÿÿ öåíà, (high+low)/2
//PRICE_TYPICAL 5 Òèïè÷íàÿ öåíà, (high+low+close)/3
//PRICE_WEIGHTED 6 Âçâåøåííàÿ öåíà çàêðûòèÿ, (high+low+close+close)/4
No_Loss = 7, //ïåðåâîä â áåçóáûòîê
TrailingStop = 12, //òðàëë
Shift = 0, //ñäâèã
Profit = 0, //Ïðîôèò äëÿ çàêðûòèÿ îðäåðà
N_Orders = 1, //êîë-âî îäíîâðåìåííî îòêðûòûõ îðäåðîâ â îäíîì íàïðàâëåíèè
N_Orders_Bar = 1, //êîëè÷åñòâî ñäåëîê = îò 0, ïðèõîäÿùèõñÿ íà 1 áàð
DeltaStart = 3,
slippage = 0,
stoploss = 0, //óðîâåíü SL, åñëè 0, òî íå âûñòàâëÿåòñÿ
takeprofit = 0; //óðîâåíü TP, åñëè 0, òî íå âûñòàâëÿåòñÿ
extern double Lot = 0.1;
extern int Magic = 777; //óíèêàëüíûé íîìåð îðäåðîâ ýòîãî ñîâåòíèêà
extern bool DrawVisualization = true; //âûâîäèòü èëè íåò íà ýêðàí èíôîðìàöèþ
extern bool BuySell = true; //ïðè ïîÿâëåíèè ëþáîãî ñèãíàëà buy èëè Sell, ñòàâèì îáà îðäåðà è Buy è Sell
extern bool Buy = true; //ââåðõ îò áîëèíæåðà ñòàâèì òîëüêî buy
extern bool Sell = true; //âíèç îò áîëèíæåðà ñòàâèì òîëüêî Sell
datetime TimeBar;
int OrdersBar;
//--------------------------------------------------------------------
int init()
{
if (DrawVisualization){
ObjectCreate("balans", OBJ_LABEL, 0, 0, 0);
ObjectSet("balans", OBJPROP_CORNER, 1);
ObjectSet("balans", OBJPROP_XDISTANCE, 10 );
ObjectSet("balans", OBJPROP_YDISTANCE, 15);}
return(0);
}
//--------------------------------------------------------------------
int start()
{
if (TrailingStop!=0) TrailingStop(0,TrailingStop);
if (No_Loss!=0) TrailingStop(1,No_Loss);
string Name;
//-----------------------------------------------------------------------
if (DrawVisualization){ //Âûâîäèì çíà÷åíèå áàëàíñà è ñâîáîäíûõ ñðåäñòâ íà ýêðàí
ObjectSetText("balans","ÁÀËÀÍÑ = "+DoubleToStr(AccountBalance(),2)+
" |ñâîá "+DoubleToStr(AccountFreeMargin(),2),8,"Arial",Snow);}
//----------------------------------------------------------------- äíåâíîé ôèëüòð
double MA = iMA(NULL,0,Period_MA,0,MetodMA,TipPice,Shift);
double StdDev = iStdDev(NULL,0,Period_MA,0,MetodMA,TipPice,Shift)*Dev;
//----------------------------------------------------------------- îòêðûòèå ïîçèöèé Bay
if (TimeBar!=Time[0]) OrdersBar=0;
if (N_Orders_Bar > OrdersBar)
{
if ((MA-StdDev-DeltaStart*Point)>Ask)//íèæå áîëèíæåðà
{
if (!Sell && ORDERS(1) < N_Orders)
{
if (DrawVisualization)
{ Name=StringConcatenate("Buy ",TimeToStr(Time[0],TIME_MINUTES));
ObjectCreate(Name,OBJ_ARROW,0,Time[0],Bid,0,0,0,0);ObjectSet(Name,OBJPROP_WIDTH,2);
ObjectSet(Name,OBJPROP_ARROWCODE,233);ObjectSet(Name,OBJPROP_COLOR,Red);
}
OPENORDER("Buy");
}
if (BuySell && ORDERS(-1) < N_Orders)
{
if (DrawVisualization)
{ Name=StringConcatenate("Sell ",TimeToStr(Time[0],TIME_MINUTES));
ObjectCreate(Name,OBJ_ARROW,0,Time[0],Ask,0,0,0,0);ObjectSet(Name,OBJPROP_WIDTH,2);
ObjectSet(Name,OBJPROP_ARROWCODE,234);ObjectSet(Name,OBJPROP_COLOR,Blue);
}
OPENORDER ("Sell");
}
}
//----------------------------------------------------------------- îòêðûòèå ïîçèöèé Sell
if ((MA+StdDev+DeltaStart*Point)<Bid)//âûøå áîëèíæåðà
{
if (!Buy && ORDERS(-1) < N_Orders)
{
OPENORDER ("Sell");
if (DrawVisualization)
{ Name=StringConcatenate("Sell ",TimeToStr(Time[0],TIME_MINUTES));
ObjectCreate(Name,OBJ_ARROW,0,Time[0],Ask,0,0,0,0);ObjectSet(Name,OBJPROP_WIDTH,2);
ObjectSet(Name,OBJPROP_ARROWCODE,234);ObjectSet(Name,OBJPROP_COLOR,Blue);
}
}
if (BuySell && ORDERS(1) < N_Orders)
{
if (DrawVisualization)
{ Name=StringConcatenate("Buy ",TimeToStr(Time[0],TIME_MINUTES));
ObjectCreate(Name,OBJ_ARROW,0,Time[0],Bid,0,0,0,0);ObjectSet(Name,OBJPROP_WIDTH,2);
ObjectSet(Name,OBJPROP_ARROWCODE,233);ObjectSet(Name,OBJPROP_COLOR,Red);
}
OPENORDER ("Buy");
}
} }
//----------------------------------------------------------------- çàêðûòèå ïîçèöèé
int Ticket;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if (OrderSymbol()!=Symbol() || Magic!=OrderMagicNumber()) continue;
Ticket = OrderTicket();
if (OrderType()==OP_BUY)
{ if ((Bid-OrderOpenPrice())/Point>=Profit)
{ Comment("Çàêðûòèå îðäåðà ",Ticket," ",Symbol());
if (!OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid, Digits),slippage,CLR_NONE))
Comment("Îøèáêà çàêðûòèÿ ",TxtERROR(0)," ",Symbol());
}
}
if (OrderType()==OP_SELL)
{ if ((OrderOpenPrice()-Ask)/Point>=Profit)
{ Comment("Çàêðûòèå îðäåðà ",Ticket," ",Symbol());
if (!OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask, Digits),slippage,CLR_NONE))
Comment("Îøèáêà çàêðûòèÿ ",TxtERROR(0)," ",Symbol());
}
}
}
}
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error;
double SL,TP;
int STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (stoploss!=0 && stoploss<STOPLEVEL) stoploss=STOPLEVEL;
if (takeprofit!=0 && takeprofit<STOPLEVEL) takeprofit=STOPLEVEL;
if (ord=="Buy" )
{
if (stoploss==0) SL =0; else SL = NormalizeDouble((Bid - stoploss*Point),Digits);
if (takeprofit==0) TP =0; else TP = NormalizeDouble((Ask + takeprofit*Point),Digits);
error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask, Digits),slippage,SL,TP,"",Magic,3);
if (error==-1) Comment("Îøèáêà îòêðûòèÿ Buy ",TxtERROR(0)," price ",Ask," ",Symbol()," Lot ",Lot);
else {TimeBar=Time[0];OrdersBar++;}
}
if (ord=="Sell")
{
if (takeprofit==0) TP =0; else TP = NormalizeDouble((Bid - takeprofit*Point),Digits);
if (stoploss==0) SL =0; else SL = NormalizeDouble((Ask + stoploss*Point),Digits);
error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid, Digits),slippage,SL,TP,"",Magic,3);
if (error==-1) Comment("Îøèáêà îòêðûòèÿ Sell ",TxtERROR(0)," price ",Bid," ",Symbol()," Lot ",Lot);
else {TimeBar=Time[0];OrdersBar++;}
}
return;
}
//--------------------------------------------------------------------
int ORDERS(int tip)
{
int N_Sell,N_Buy;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symbol() || Magic!=OrderMagicNumber()) continue;
if (OrderType()==OP_BUY ) N_Buy++;
if (OrderType()==OP_SELL) N_Sell++;
}
}
if (tip== 0) return(N_Buy+N_Sell);
if (tip== 1) return(N_Buy);
if (tip==-1) return(N_Sell);
}
//--------------------------------------------------------------------
string TxtERROR(int e)
{
if (e==0) e = GetLastError();
switch ( e )
{
case 0: return;
case 1: return;
case 2: return("Îáùàÿ îøèáêà ");
case 3: return("íåïðàâèëüíûå ïàðàìåòðû ");
case 6: return("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì ");
case 130: return("Íåïðàâèëüíûå ñòîïû ");
case 131: return("Íåïðàâèëüíûé îáúåì ");
case 132: return("Ðûíîê çàêðûò ");
case 133: return("Òîðãîâëÿ çàïðåùåíà ");
case 134: return("Íåäîñòàòî÷íî äåíåã ");
case 136: return("Íåò öåí ");
case 146: return("Ïîäñèñòåìà òîðãîâëè çàíÿòà ");
case 129: return("Íåïðàâèëüíàÿ öåíà ");
case 131: return("Íåïðàâèëüíûé îáúåì ");
case 4051:return("Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè ");
case 4059:return("Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå");
case 4063:return("Îæèäàåòñÿ ïàðàìåòð òèïà integer ");
case 4105:return("Íè îäèí îðäåð íå âûáðàí ");
case 4107:return("Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè ");
case 4108:return("Íåâåðíûé íîìåð òèêåòà ");
case 4109:return("Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ `Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü` â ñâîéñòâàõ ýêñïåðòà.");
case 4200:return("Îáúåêò óæå ñóùåñòâóåò ");
default: return(StringConcatenate("Error ",e," "));
}
}
//--------------------------------------------------------------------
void TrailingStop(int NL, int tral)
{
int tip,Ticket;
bool error;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss();
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY)
{
if (NL==1 && OSL>OOP) continue;
StLo = NormalizeDouble(Bid - tral*Point,Digits);
if (StLo > OSL && StLo > OOP)
{ error=OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White);
Comment("TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Print(Symbol()," Error order ",Ticket," TrailingStop ",GetLastError());
}
}
if (tip==OP_SELL)
{
if (NL==1 && (OSL<OOP&&OSL!=0)) continue;
StLo = NormalizeDouble(Ask + tral*Point,Digits);
if ((StLo < OSL||OSL==0) && StLo < OOP)
{ error=OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White);
Comment("TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Print(Symbol()," Error order ",Ticket," TrailingStop ",GetLastError());
}
}
}
}
}
}
//--------------------------------------------------------------------
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
---