Might it be possible to alter that EA to operate with Partial Lots? My trading platform allows .1, .2, .3 and so forth. There is a Close Part of the order at X pips within this EA but you have to be trading at least two lots for the purpose to work.
Is this something I can modify?
// ------------------------------------------------------------------
//| luktom visual order editor.mq4 |
//| luktom :: #ukasz Tomaszkiewicz |
//| http://luktom.biz/ |
// ------------------------------------------------------------------
#property copyright luktom :: #ukasz Tomaszkiewicz
#property link http://luktom.biz/
#include lt;stderror.mqhgt;
#include lt;stdlib.mqhgt;
extern bool use_timer=true;
extern int default_sl_level=10;
extern int default_tp_level=500;
extern color sl_color=Red;
extern int sl_style=STYLE_DASH;
extern color tp_color=Aqua;
extern int tp_style=STYLE_DASH;
extern color be_color=Yellow;
extern int be_style=STYLE_DASH;
extern int be_offset=1;
extern color cl_color=Purple;
extern int cl_style=STYLE_DASH;
extern bool use_cp=false;
extern color cp_color=Blue;
extern int cp_style=STYLE_DASH;
extern int cp_level=0;
extern int cp_closedlevel=0;
extern double cp_lots=0;
extern color ol_sell_color=Orange;
extern int ol_sell_style=STYLE_DASH;
extern color ol_buy_color=Blue;
extern int ol_buy_style=STYLE_DASH;
extern bool use_be=false;
extern int default_be_level=10;
extern bool use_cl=false;
extern int default_cl_level=0;
extern bool delete_on_deinit=true;
void init()
if(use_timer)
timer();
void timer()
while(true)
Sleep(1000);
if(IsStopped())
return;
start();
void deinit()
if(delete_on_deinit)
for(int I=0;ilt;ObjectsTotal();I )
string name=ObjectName(I);
if(StringSubstr(name,0,4)==lvoe)
ObjectDelete(name);
void start() {
for(int I=0; ilt;OrdersTotal();I ) {
if(OrderSelect(I,SELECT_BY_POS)) {
if(OrderSymbol()==Symbol()) {
int dgts=MarketInfo(OrderSymbol(),MODE_DIGITS);
if(ObjectFind(lvoe_ol_ OrderTicket())==-1) else
if(OrderStopLoss()gt;0 || default_sl_levelgt;0)
if(ObjectFind(lvoe_sl_ OrderTicket())==-1)
if(OrderStopLoss()==0)
ObjectCreate(lvoe_sl_ OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice()-orderDir(OrderType())*default_sl_level*Point);
else
ObjectCreate(lvoe_sl_ OrderTicket(),OBJ_HLINE,0,Time[0],OrderStopLoss());
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_COLOR,sl_color);
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_STYLE,sl_style);
ObjectSetText(lvoe_sl_ OrderTicket(),# OrderTicket() stop reduction,11);
else
align(lvoe_sl_ OrderTicket());
if(NormalizeDouble(OrderStopLoss(),dgts)!) =NormalizeDouble(ObjectGet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1),dgts))
if(! OrderModify(OrderTicket(),OrderOpenPrice(),ObjectG et(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1),OrderTakeProfit(),Or derExpiration(),CLR_NONE))
//Alert(ErrorDescription(GetLastError()));
persist;
else
if(ObjectFind(lvoe_sl_ OrderTicket())!) =-1)
ObjectDelete(lvoe_sl_ OrderTicket());
if(OrderTakeProfit()gt;0 || default_tp_level)
if(ObjectFind(lvoe_tp_ OrderTicket())==-1)
if(OrderTakeProfit()==0)
ObjectCreate(lvoe_tp_ OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice() orderDir(OrderType())*default_tp_level*Point);
else
ObjectCreate(lvoe_tp_ OrderTicket(),OBJ_HLINE,0,Time[0],OrderTakeProfit());
ObjectSet(lvoe_tp_ OrderTicket(),OBJPROP_COLOR,tp_color);
ObjectSet(lvoe_tp_ OrderTicket(),OBJPROP_STYLE,tp_style);
else
align(lvoe_tp_ OrderTicket());
if(NormalizeDouble(OrderTakeProfit(),4)! =NormalizeDouble(ObjectGet(lvoe_tp_ OrderTicket(),OBJPROP_PRICE1),4))
if(! OrderModify(OrderTicket(),OrderOpenPrice(),OrderSt opLoss(),ObjectGet(lvoe_tp_ OrderTicket(),OBJPROP_PRICE1),OrderExpiration(),CL R_NONE))
//Alert(ErrorDescription(GetLastError()));
persist;
else
if(ObjectFind(lvoe_tp_ OrderTicket())!) =-1)
ObjectDelete(lvoe_tp_ OrderTicket());
if(use_cp cp_levelgt;0)
if(ObjectFind(lvoe_cp_ OrderTicket())==-1)
if(OrderType()==OP_BUY else
if(OrderType()==OP_BUY)
if(MarketInfo(OrderSymbol(),MODE_BID)gt;ObjectGet( lvoe_cp_ OrderTicket(),OBJPROP_PRICE1))
if(OrderClose(OrderTicket(),cp_lots,MarketInfo(Ord erSymbol(),MODE_BID),0))
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1,MarketInfo(OrderSymbo l(),MODE_BID) cp_closedlevel*MarketInfo(OrderSymbol(),MODE_POINT ));
persist;
if(OrderType()==OP_SELL)
if(MarketInfo(OrderSymbol(),MODE_ASK)lt;ObjectGet( lvoe_cp_ OrderTicket(),OBJPROP_PRICE1))
if(OrderClose(OrderTicket(),cp_lots,MarketInfo(Ord erSymbol(),MODE_ASK),0))
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1,MarketInfo(OrderSymbo l(),MODE_ASK)-cp_closedlevel*MarketInfo(OrderSymbol(),MODE_POINT ));
persist;
if(use_be) {
if(ObjectFind(lvoe_be_ OrderTicket())==-1) else {
if(OrderType()==OP_BUY) {
if(MarketInfo(OrderSymbol(),MODE_BID)gt;ObjectGet( lvoe_be_ OrderTicket(),OBJPROP_PRICE1)) {
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice() be_offset*MarketInfo(OrderSymbol(),MODE_POINT));
/*
if(! OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),OrderExpiration(),CLR_ NONE))
//Alert(ErrorDescription(GetLastError()));
*/
persist;
}
}
if(OrderType()==OP_SELL)
if(MarketInfo(OrderSymbol(),MODE_ASK)lt;ObjectGet( lvoe_be_ OrderTicket(),OBJPROP_PRICE1))
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice()-be_offset*MarketInfo(OrderSymbol(),MODE_POINT));
/*
if(! OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),OrderExpiration(),CLR_ NONE))
//Alert(ErrorDescription(GetLastError()));
*/
persist;
}
}
if(use_cl)
if(ObjectFind(lvoe_cl_ OrderTicket())==-1)
if(OrderType()!) =OP_BUY OrderType()! =OP_SELL)
else OrderType()==OP_SELLSTOP)
if(MarketInfo(OrderSymbol(),MODE_ASK)gt;ObjectGet( lvoe_cl_ OrderTicket(),OBJPROP_PRICE1))
OrderDelete(OrderTicket());
if(OrderType()==OP_BUY
}
}
}
for(I=0;ilt;OrdersHistoryTotal();I )
if(OrderSelect(I,SELECT_BY_POS,MODE_HISTORY))
if(ObjectFind(lvoe_ol_ OrderTicket())!) =-1)
ObjectDelete(lvoe_ol_ OrderTicket());
if(ObjectFind(lvoe_tp_ OrderTicket())!) =-1)
ObjectDelete(lvoe_tp_ OrderTicket());
if(ObjectFind(lvoe_sl_ OrderTicket())!) =-1)
ObjectDelete(lvoe_sl_ OrderTicket());
if(ObjectFind(lvoe_be_ OrderTicket())!) =-1)
ObjectDelete(lvoe_be_ OrderTicket());
if(ObjectFind(lvoe_cl_ OrderTicket())!) =-1)
ObjectDelete(lvoe_cl_ OrderTicket());
if(ObjectFind(lvoe_cp_ OrderTicket())!) =-1)
ObjectDelete(lvoe_cp_ OrderTicket());
}
void align(string name)
ObjectSet(title,OBJPROP_PRICE1,NormalizeDouble(Obj ectGet(title,OBJPROP_PRICE1),Digits));
int orderDir(int oType)