是否有可能修改此EA以使用部分手段?我的交易平台允许.1,.2,.3等。您在EA的X点有一个关闭部分的订单,但您必须交易至少2个标准手数才能使用。
这是我可以修改的东西吗?
// ----------------------------------------------- -------------------
//| luktom视觉订单editor.mq4 |
//| luktom ::£ukasz Tomaszkiewicz |
//|
http://luktom.biz/|
// ----------------------------------------------- -------------------
#property copyright luktom ::£ukasz Tomaszkiewicz
#property链接
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;
外部颜色sl_color =红色;
extern int sl_style = STYLE_DASH;
外部颜色tp_color =水色;
extern int tp_style = STYLE_DASH;
外部颜色be_color =黄色;
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;
外部颜色cp_color =蓝色;
extern int cp_style = STYLE_DASH;
extern int cp_level = 0;
extern int cp_closedlevel = 0;
extern double cp_lots = 0;
外部颜色ol_sell_color =橙色;
extern int ol_sell_style = STYLE_DASH;
外部颜色ol_buy_color =蓝色;
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){
计时器();
}
}
void timer(){
while(true){
睡眠(1000);
if(IsStopped()){
返回;
}
开始();
}
}
void deinit(){
if(delete_on_deinit){
for(int i = 0; ilt; ObjectsTotal(); i ){
字符串名称= ObjectName(i);
if(String Substr(name,0,4)== love){
ObjectDelete(名);
}
}
}
}
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){
if(OrderType()== OP_SELLLIMIT || OrderType()== OP_SELLSTOP){
ObjectCreate(lvoe_ol_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice());
ObjectSet(lvoe_ol_ OrderTicket(),OBJPROP_COLOR,ol_sell_color);
ObjectSet(lvoe_ol_ OrderTicket(),OBJPROP_STYLE,ol_sell_style);
}
if(OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP){
ObjectCreate(lvoe_ol_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice());
ObjectSet(lvoe_ol_ OrderTicket(),OBJPROP_COLOR,ol_buy_color);
ObjectSet(lvoe_ol_ OrderTicket(),OBJPROP_STYLE,ol_buy_style);
}
} else {
if(OrderType()== OP_SELL || OrderType()== OP_BUY){
ObjectDelete(lvoe_ol_ OrderTicket());
}
align(lvoe_ol_ OrderTicket());
如果(NormalizeDouble(OrderOpenPrice(),dgts)!= NormalizeDouble(ObjectGet(lvoe_ol_ OrderTicket(),OBJPROP_PRICE1),dgts)){
如果(!OrderModify(OrderTicket(),ObjectGet(lvoe_ol_ OrderTicket(),OBJPROP_PRICE1),OrderStopLoss(),OrderTakeProfit(),OrderExpiration(),CLR_NONE)){
//警报(ErrorDescription中(GetLastError函数()));
}
继续;
}
}
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 loss,11);
} else {
align(lvoe_sl_ OrderTicket());
如果(NormalizeDouble(OrderStopLoss(),dgts)!= NormalizeDouble(ObjectGet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1),dgts)){
如果(!OrderModify(OrderTicket(),OrderOpenPrice(),ObjectGet(),OrderVoice()
//警报(ErrorDescription中(GetLastError函数()));
}
继续;
}
}
} 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());
如果(NormalizeDouble(OrderTakeProfit(),4)!= NormalizeDouble(ObjectGet(lvoe_tp_ OrderTicket(),OBJPROP_PRICE1),4)){
如果(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ObjectGet(lvoe_tp_ OrderTicket(),OBJPROP_PRICE1),OrderExpiration(),CLR_NONE)){
//警报(ErrorDescription中(GetLastError函数()));
}
继续;
}
}
} 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 || OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP){
if(OrderStopLoss()lt; OrderOpenPrice()){
ObjectCreate(lvoe_cp_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() cp_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_COLOR,cp_color);
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_STYLE,cp_style);
}
} else {
if(OrderStopLoss()gt; OrderOpenPrice()){
ObjectCreate(lvoe_cp_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() - cp_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_COLOR,cp_color);
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_STYLE,cp_style);
}
}
} else {
if(OrderType()== OP_BUY){
如果(MarketInfo(OrderSymbol(),MODE_BID)> ObjectGet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1)){
如果(OrderClose(OrderTicket(),cp_lots,MarketInfo(OrderSymbol(),MODE_BID),0)){
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1,MarketInfo(OrderSymbol(),MODE_BID) cp_closedlevel * MarketInfo(OrderSymbol(),MODE_POINT));
}
继续;
}
}
if(OrderType()== OP_SELL){
如果(MarketInfo(OrderSymbol(),MODE_ASK)lt; ObjectGet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1)){
如果(OrderClose(OrderTicket(),cp_lots,MarketInfo(OrderSymbol(),MODE_ASK),0)){
ObjectSet(lvoe_cp_ OrderTicket(),OBJPROP_PRICE1,MarketInfo(OrderSymbol(),MODE_ASK)-cp_closedlevel * MarketInfo(OrderSymbol(),MODE_POINT));
}
继续;
}
}
}
}
if(use_be){
if(ObjectFind(lvoe_be_ OrderTicket())== - 1){
if(OrderType()== OP_BUY || OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP){
if(OrderStopLoss()lt; OrderOpenPrice()){
ObjectCreate(lvoe_be_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() default_be_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_be_ OrderTicket(),OBJPROP_COLOR,be_color);
ObjectSet(lvoe_be_ OrderTicket(),OBJPROP_STYLE,be_style);
}
} else {
if(OrderStopLoss()gt; OrderOpenPrice()){
ObjectCreate(lvoe_be_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() - default_be_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_be_ OrderTicket(),OBJPROP_COLOR,be_color);
ObjectSet(lvoe_be_ OrderTicket(),OBJPROP_STYLE,be_style);
}
}
} else {
if(OrderType()== OP_BUY){
(MarketInfo(OrderSymbol(),MODE_BID)> ObjectGet(lvoe_be_ OrderTicket(),OBJPROP_PRICE1)){
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice() be_offset * MarketInfo(OrderSymbol(),MODE_POINT));
/*
如果(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),OrderExpiration(),CLR_NONE)){
//警报(ErrorDescription中(GetLastError函数()));
}
*
继续;
}
}
if(OrderType()== OP_SELL){
if(MarketInfo(OrderSymbol(),MODE_ASK); ObjectGet(lvoe_be_ OrderTicket(),OBJPROP_PRICE1)){
ObjectSet(lvoe_sl_ OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice() - be_offset * MarketInfo(OrderSymbol(),MODE_POINT));
/*
如果(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),OrderExpiration(),CLR_NONE)){
//警报(ErrorDescription中(GetLastError函数()));
}
*
继续;
}
}
}
}
if(use_cl){
if(ObjectFind(lvoe_cl_ OrderTicket())== - 1){
if(OrderType()!= OP_BUY OrderType()!= OP_SELL){
if(OrderType()== OP_BUY || OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP){
ObjectCreate(lvoe_cl_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() - default_cl_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_cl_ OrderTicket(),OBJPROP_COLOR,cl_color);
ObjectSet(lvoe_cl_ OrderTicket(),OBJPROP_STYLE,cl_style);
} else {
ObjectCreate(lvoe_cl_ OrderTicket(),OBJ_HLINE,0,Time [0],OrderOpenPrice() default_cl_level * MarketInfo(OrderSymbol(),MODE_POINT));
ObjectSet(lvoe_cl_ OrderTicket(),OBJPROP_COLOR,cl_color);
ObjectSet(lvoe_cl_ OrderTicket(),OBJPROP_STYLE,cl_style);
}
}
} else {
if(OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP){
如果(MarketInfo(OrderSymbol(),MODE_BID)lt; ObjectGet(lvoe_cl_ OrderTicket(),OBJPROP_PRICE1)){
OrderDelete(OrderTicket());
}
}
if(OrderType()== OP_SELLLIMIT || OrderType()== OP_SELLSTOP){
如果(MarketInfo(OrderSymbol(),MODE_ASK)> ObjectGet(lvoe_cl_ OrderTicket(),OBJPROP_PRICE1)){
OrderDelete(OrderTicket());
}
}
if(OrderType()== OP_BUY || OrderType()== OP_SELL){
ObjectDelete(lvoe_cl_ OrderTicket());
}
}
}
}
}
}
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){
对象集(姓名,OBJPROP_PRICE1,NormalizeDouble(ObjectGet(姓名,OBJPROP_PRICE1),位数));
}
int orderDir(int oType){
如果(oType == OP_BUY || oType == OP_BUYLIMIT || oType == OP_BUYSTOP)return(1);
if(oType == OP_SELL || oType == OP_SELLLIMIT || oType == OP_SELLSTOP)return(-1);
}