Orders Execution
1
Views
0
Downloads
0
Favorites
Proboy_zIG_demo
//+------------------------------------------------------------------+
//| Ïðîáîé zIG.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int TP = 10;
extern int SL = 20;
extern int HourLife = 24; //Âðåìÿ æèçíè "îòëîæåííîãî îðäåðà"
extern bool MoveOrder = True; //Äâèãàòü ëè "îòëîæåííûå îðäåðà"
extern int deltaPoint = 5; //Øàã èçìåíåíèÿ "îòëîæåííîãî îðäåðà"
extern string NameIndicator = "Dex-zIG_DBO_v0.3_150107";
extern int MAGIC = 2007011201;
int clModifyBuy, clModifySell;
int SleepOk,Slippage,SleepErr;
#include <stdlib.mqh>
#include <stderror.mqh>
#include <TradeLib.mqh>
#include <a-SimpleTrailing.mqh>
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int CountOrder;
double Buy_zIG, Sell_zIG, Med_zIG;
double FirstPrice, SecondPrice, FirstTP, SecondTP, FirstSL, SecondSL;
double OrderPrice;
int FirstType, SecondType;
//----
CountOrder = OrdersCount(OP_BUYSTOP) + OrdersCount(OP_SELLSTOP) + OrdersCount(OP_BUY) + OrdersCount(OP_SELL);
//Êðàñíûé - Sell, Ñèíèé - Buy
Buy_zIG = iCustom(Symbol(), 0, NameIndicator, 2, 0);
Sell_zIG = iCustom(Symbol(), 0, NameIndicator, 1, 0);
if(CountOrder == 0)
{
Print("Sell_zIG = ", Sell_zIG, " Buy_zIG = ", Buy_zIG);
//if(Med_zIG < Sell_zIG || Med_zIG > Buy_zIG) return(0);
if(Sell_zIG > Buy_zIG) return(0);
//Íåò íè îäíîãî îðäåðà => âûñòàâëÿåì "Ñòîïû"
FirstType = OP_BUYSTOP;
FirstPrice = NormalizeDouble(Buy_zIG, Digits);
FirstSL = NormalizeDouble(FirstPrice - SL * Point, Digits);
SecondPrice = NormalizeDouble(Sell_zIG, Digits);
if(TP == 0)
{
FirstTP = 0;
SecondTP = 0;
}
else
{
FirstTP = NormalizeDouble(FirstPrice + TP * Point, Digits);
SecondTP = NormalizeDouble(SecondPrice - TP * Point, Digits);
}
SecondType = OP_SELLSTOP;
SecondSL = NormalizeDouble(SecondPrice + SL * Point, Digits);
Order(FirstType, Symbol(), 0.1, FirstPrice,
FirstSL,
FirstTP, MAGIC, "Ïðîáîé zIG", TimeCurrent() + HourLife * 60 * 60);
Order(SecondType, Symbol(), 0.1, SecondPrice,
SecondSL,
SecondTP, MAGIC, "Ïðîáîé zIG", TimeCurrent() + HourLife * 60 * 60);
return(0);
}
if(CountOrder > 0)
{
//Åñòü õîòÿ áû îäèí îðäåð
CountOrder = OrdersCount(OP_BUY) + OrdersCount(OP_SELL);
if(CountOrder > 0)
{
//Îòêðûëñÿ ðûíî÷íûé îðäåð => Òðåéëèì
if(UseTrailing)
TrailingPositions();
}
CountOrder = OrdersCount(OP_BUYSTOP) + OrdersCount(OP_SELLSTOP);
if(CountOrder > 0 && MoveOrder)
{
//Åñòü îòëîæåííûå îðäåðà È ñòîèò ïðèçíàê - äâèãàòü ñòîïû
int orders = 0;
int cnt = OrdersTotal();
for (int i=0; i<cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != MAGIC) continue;
if (OrderType() == OP_BUYSTOP)
{
//Ïîéìàëè îðäåð BUYSTOP
FirstPrice = NormalizeDouble(Buy_zIG, Digits);
FirstSL = NormalizeDouble(FirstPrice - SL * Point, Digits);
if(TP == 0)
{
FirstTP = 0;
}
else
{
FirstTP = NormalizeDouble(FirstPrice + TP * Point, Digits);
}
if(
MathAbs(NormalizeDouble(OrderOpenPrice(), Digits) - FirstPrice) >= deltaPoint * Point
)
{
OrderModify(OrderTicket(), FirstPrice, FirstSL, FirstTP, OrderExpiration());
}
}
if (OrderType() == OP_SELLSTOP)
{
//Ïîéìàëè îðäåð SELLSTOP
FirstPrice = NormalizeDouble(Sell_zIG, Digits);
FirstSL = NormalizeDouble(FirstPrice + SL * Point, Digits);
if(TP == 0)
{
FirstTP = 0;
}
else
{
FirstTP = NormalizeDouble(FirstPrice - TP * Point, Digits);
}
if(
MathAbs(NormalizeDouble(OrderOpenPrice(), Digits) - FirstPrice) >= deltaPoint * Point
)
{
OrderModify(OrderTicket(), FirstPrice, FirstSL, FirstTP, OrderExpiration());
}
}
}
}
}
//----
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
---