PDA

View Full Version : 如何更改EA以使用部分拍品



Savotks
02-12-2009 17:33, 05:33 PM
是否有可能修改此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);
}

CHohanna
08-18-2023 05:35, 05:35 AM
请将代码包装在代码标签中。或者只是发布你的mq4文件。任何人阅读不被缩进或缩进的代码都非常繁琐。

Savotks
08-18-2023 06:56, 06:56 AM
1附件对不起Zen_Leow。这是专家。
https://www.forex-pedia.com/attachments/15189548041760350181.mq4

Savotks
08-18-2023 08:17, 08:17 AM
是否有一段特定的代码定义EA是否能够以小数点运行?