@broketrader
thank you for trying
thank you for trying
MT4 - Terminal window in separate window? 44 replies
script to maximise/minimise chart window 3 replies
Indi that plots the data-window in the main chart-window? 0 replies
Need MT4 Script hiding every indicators on chart window 4 replies
Stoch window above price window/ separate price indicator? 2 replies
//+------------------------------------------------------------------+
//| _eSisTest.mq4 |
//| Copyright © 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#import "EasyOrder.dll"
int EasyOrder(int hwnd);
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int EasyOrder(int hwnd);
int start()
{
string obj;
int i;
int hwnd = WindowHandle(Symbol(),0);
if(hwnd==0) {
return(0);
}
int ret = EasyOrder(hwnd);
if(ret<0) {
Alert("Dll function failed!");
return(0);
}
if(ret==1) {
ModifyOrder();
} else {
for(i=ObjectsTotal()-1; i>=0; i--) {
obj = ObjectName(i);
if(StringFind(obj,"EASYORDER",0)>=0) ObjectDelete(obj);
}
}
InitLines();
return (0);
}
//+------------------------------------------------------------------+
void InitLines()
{
int i, pos, ticket;
bool bdelete;
string obj;
for(i=ObjectsTotal()-1; i>=0; i--) {
obj = ObjectName(i);
if(StringFind(obj,"EASYORDER_MOD")>=0) {
bdelete = True;
pos = StringFind(obj,"#",1);
if(pos<0) continue;
ticket = StrToDouble(StringSubstr(obj,pos+1,StringLen(obj)-pos-1));
if(OrderSelect(ticket,SELECT_BY_TICKET)) {
if(OrderCloseTime()==0) bdelete = false;
}
if(bdelete) ObjectDelete(obj);
}
}
double sl, tp;
for(i=0; i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()==Symbol()) {
ticket = OrderTicket();
obj = "EASYORDER_MOD_SL_#"+ticket;
sl = OrderStopLoss();
tp = OrderTakeProfit();
if(sl==0) sl = OrderOpenPrice();
if(tp==0) tp = OrderOpenPrice();
if(ObjectFind(obj)>=0) ObjectMove(obj,0,Time[0],sl);
else DrawLine("SL",ticket,sl);
obj = "EASYORDER_MOD_TP_#"+ticket;
if(ObjectFind(obj)>=0) ObjectMove(obj,0,Time[0],tp);
else DrawLine("TP",ticket,tp);
if(OrderType()>OP_SELL) {
obj = "EASYORDER_MOD_PRICE_#"+ticket;
if(ObjectFind(obj)>=0) ObjectMove(obj,0,Time[0],OrderOpenPrice());
else DrawLine("PRICE",ticket,OrderOpenPrice());
}
}
}
}
void ModifyOrder()
{
string obj;
int i, ticket;
double sl, price, tp;
double osl, otp;
for(i=0; i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()==Symbol()) {
ticket = OrderTicket();
sl = 0; price = 0; tp = 0;
obj = "EASYORDER_MOD_SL_#"+ticket;
osl = OrderStopLoss();
if(osl==0) osl = OrderOpenPrice();
otp = OrderStopLoss();
if(otp==0) otp = OrderOpenPrice();
if(ObjectFind(obj)>=0) {
if(MathAbs(ObjectGet(obj,OBJPROP_PRICE1)-osl)>Point) sl = ObjectGet(obj,OBJPROP_PRICE1);
}
obj = "EASYORDER_MOD_TP_#"+ticket;
if(ObjectFind(obj)>=0) {
if(MathAbs(ObjectGet(obj,OBJPROP_PRICE1)-otp)>Point) tp = ObjectGet(obj,OBJPROP_PRICE1);
}
if(OrderType()>OP_SELL) {
obj = "EASYORDER_MOD_PRICE_#"+ticket;
if(ObjectFind(obj)>=0) {
if(MathAbs(ObjectGet(obj,OBJPROP_PRICE1)-OrderOpenPrice())>Point) price = ObjectGet(obj,OBJPROP_PRICE1);
}
}
if(sl+tp+price>0) {
if(sl==0) sl = OrderStopLoss();
if(tp==0) tp = OrderTakeProfit();
if(price==0) price = OrderOpenPrice();
OrderModify(ticket,price,sl,tp,0,CLR_NONE);
}
}
}
}
void DrawLine(string type, int ticket, double level)
{
string obj = "EASYORDER_MOD_"+type+"_#"+ticket;
color clr = Red;
if(type=="PRICE") clr = LimeGreen;
//else if(type=="TP") clr = Blue;
ObjectCreate(obj,OBJ_HLINE,0,Time[0],level,0,0);
ObjectSet(obj,OBJPROP_COLOR,clr);
ObjectSet(obj,OBJPROP_STYLE,STYLE_DASHDOT);
}