问吧! - 页 11 1...456789101112131415161718...182 新评论 cramnhoj 2006.05.15 04:00 #101 你说的是要有一个脚本或什么东西来作为服务器,以便于EA能够沟通。 我想,metaquotes需要一段时间才能想出这样的办法。 然而,在mql4.com上,他们说我所说的函数,GlobalVariableSetOnCondition()是原子式执行的。 有了这个,我也许可以想出一组函数来做我需要的事情。 pete7 2006.05.15 05:39 #102 谁能帮助我:https://www.mql5.com/en/forum/174184? hellkkas 2006.05.15 07:40 #103 帮助 -零除法? 嗨,所有的编码员... 我应该怎么做才能解决这个错误:零除法? 谢谢你的帮助... 附加的文件: ok.gif 16 kb error.gif 16 kb ttm_stoch.mq4 5 kb shwetha 2006.05.15 13:08 #104 jma 你好codersguru。 我可以在EA代码中使用jma而不是ema吗? FXMan77 2006.05.18 09:58 #105 HoggZilla 2006.05.18 18:12 #106 需要帮助 - 调整后的MACD 我试图创建一个指标,根据RSI的值来调整信号线。真的,我想在MACD上画出另一条调整后的信号线,并将常规的信号线留在原地。 编辑。 我让指标在同一窗口中画出RSI线(第一步)。但由于某些原因,它不能画出最后一期。请看附件。 附加的文件: modifiedmacd.mq4 4 kb automatedtrader 2006.05.19 02:17 #107 任何帮助都将是巨大的 以下是我遇到问题的代码:////,当我在Northfinace上加载它时,它可以工作,然后再也没有进行交易......但它在Interbank上没有任何作用......它是一个使用kama的反转系统,0.0005是反转点......我不知道发生了什么,因为当我第一次加载它时,它在Northfinance上进行了一次完美交易,但这是一个现有的交易,应该已经进行了...... automatedtrader 2006.05.19 02:18 #108 的代码 #属性版权 "专家顾问生成器" #属性链接 "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/" 外部int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = True; 外置双数 Lots = 1; extern int Slippage = 3; extern bool StopLossMode = True; 外置 int StopLoss = 40; 外部 bool TakeProfitMode = False; extern int TakeProfit = 60; 外部 bool TrailingStopMode = True; 外置 int TrailingStop = 35; #define SIGNAL_NONE 0 #define SIGNAL_BUY 1 #define SIGNAL_SELL 2 #define SIGNAL_CLOSEBUY 3 #define SIGNAL_CLOSESELL 4 int BarCount; int Current; bool TickCheck = False; //+------------------------------------------------------------------+ //| 专家初始化函数 | //+------------------------------------------------------------------+ int init() { BarCount = Bars; 如果(EachTickMode)Current = 0;否则Current = 1。 return(0); } //+------------------------------------------------------------------+ //| 专家去初始化功能| //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| 专家启动功能| //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); 订单 = SIGNAL_NONE; //+------------------------------------------------------------------+ //| 变量开始 | //+------------------------------------------------------------------+ double Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Current + 0)。 double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Current + 0); double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Current + 0); 双重Buy1_1 = Var1 ; 双倍Buy1_2 = 25; 双倍Buy2_1 = Var2 ; 双倍Buy2_2 = 80。 双倍Buy3_1 = Var3 ; 双份Buy3_2 = 50。 双份Sell1_1 = Var1 ; 双份Sell1_2 = -25。 双份Sell2_1 = Var2 。 双份Sell2_2 = -80。 双份Sell3_1 = Var3 ; 双份Sell3_2 = -50。 double CloseBuy1_1 = Var1 ; 双份CloseBuy1_2 = -25。 double CloseBuy2_1 = Var2 ; 双倍CloseBuy2_2 = -80。 double CloseBuy3_1 = Var3 ; 双倍CloseBuy3_2 = -50。 double CloseSell1_1 = Var1 ; 双份CloseSell1_2 = 25。 双份CloseSell2_1 = Var2 。 双份CloseSell2_2 = 80。 双份CloseSell3_1 = Var3 。 双份CloseSell3_2 = 50。 //+------------------------------------------------------------------+ //| 变量结束 | //+------------------------------------------------------------------+ //检查位置 bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) { IsTrade = True。 如果(OrderType() == OP_BUY){ //关闭 //+------------------------------------------------------------------+ //| 信号开始(退出买入)| //+------------------------------------------------------------------+ if (CloseBuy1_1 <= CloseBuy1_2 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| 信号结束(退出购买) | //+------------------------------------------------------------------+ 如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。 if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False; 继续。 } //拖曳止损 if(TrailingStopMode && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { 如果(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。 if (!EachTickMode) BarCount = Bars; 继续。 } } } } else { //关闭 //+------------------------------------------------------------------+ //| 信号开始(退出卖出)| //+------------------------------------------------------------------+ if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) Order = SIGNAL_CLOSESELL; //+------------------------------------------------------------------+ //| 信号结束(退出卖出)| //+------------------------------------------------------------------+ 如果(Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){ OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。 如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) BarCount = Bars; IsTrade = False。 继续。 } //拖曳止损 if(TrailingStopMode && TrailingStop > 0) { if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { 如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。 if (!EachTickMode) BarCount = Bars; 继续。 } } } } } } //+------------------------------------------------------------------+ //| Signal Begin(Entry) | //+------------------------------------------------------------------+ 如果(Buy1_1 >= Buy1_2 && Buy2_1 >= Buy2_2 && Buy3_1 >= Buy3_2) Order = SIGNAL_BUY; 如果(Sell1_1 <= Sell1_2 && Sell2_1 = Sell3_2) Order = SIGNAL_SELL; //+------------------------------------------------------------------+ //| 信号结束 | //+------------------------------------------------------------------+ //买入 如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){ if(!IsTrade) { //检查自由保证金 如果(AccountFreeMargin() < (1000 * Lots)) { Print("我们没有钱。Free Margin = ", AccountFreeMargin())。 return(0); } if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0; if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) 。 如果(Ticket > 0) { 如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY订单打开:", OrderOpenPrice())。 if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else { Print("打开买入订单出错。", GetLastError())。 } } if (EachTickMode) TickCheck = True; 如果(!EachTickMode) BarCount = Bars; return(0); } } //卖出 如果(Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){ if(!IsTrade) { //检查自由保证金 如果(AccountFreeMargin() < (1000 * Lots)) { Print("我们没有钱。Free Margin = ", AccountFreeMargin())。 return(0); } if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0; if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) 。 如果(Ticket > 0) { 如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("Sell order opened : " , OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell")。 } else { Print("错误打开卖出订单。", GetLastError())。 } } if (EachTickMode) TickCheck = True; 如果(!EachTickMode) BarCount = Bars; return(0); } } 如果(!EachTickMode) BarCount = Bars; return(0); } //+------------------------------------------------------------------+ 如何编码? Ask! ICustom函数 automatedtrader 2006.05.19 07:27 #109 我改变了专家中的指标值.0005,因为它只显示通道线,最终水平是你需要改变的,25,-25为.0005...30,,-30为.0006,等等... Ted 2006.05.21 00:50 #110 盈亏平衡和追踪止损的问题你好。我正在使用Codersguru的MQL4教程学习编码,我正在做 "My_First_EA"。这确实是我的第一个EA。它运行得很好,但我想写一个盈亏平衡止损,但我想不出来。我遇到的问题是,盈亏平衡止损就像拖曳式止损一样跟随价格。我想让最初的止损在我赚取15点时保持1个点的利润(例如),然后我想让止损保持在盈亏平衡点(1个点的利润),直到移动止损在25点利润时开始工作。然后,我希望追踪止损像往常一样,每赚一个点就移动一次。我想问题可能出在 "OrderStopLoss() "上,但我现在什么都不知道了。我的大脑一片混乱。谢谢你以下是我所做的相关代码。外来的双倍TrailingStop=25.0。外设 double BreakEvenProfit=15.0;外置双倍BreakEvenStop=1;......................我在这里的进场和开仓代码运行良好......................for (cnt=0;cnt<total;cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。如果(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()){如果(OrderType()==OP_BUY)//长仓被打开{//是否应该平仓?如果(FSAR > FMA) //我的退出信号{//----CLOSE LONG POSITION工作正常OrderClose(OrderTicket(),OrderLots(),Bid,3, Magenta);return(0);//exit}////////////////////,这是下面的问题区域/////////。//----检查 盈亏平衡停止多头头寸------如果(Bid-OrderOpenPrice() > BreakEvenProfit*Point){如果(OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow)。返回(0)。}}//-----,下面的一切都作为典型的追踪止损工作。//---- 检查跟踪止损的长线位置 如果(TrailingStop>0) {如果(Bid-OrderOpenPrice()>Point*TrailingStop){如果(OrderStopLoss()<Bid-Point*TrailingStop){OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop, OrderTakeProfit(),0,Yellow)。返回(0)。}}}}否则//进入空头状态 原始想法 如何编码? Raw Ideas 1...456789101112131415161718...182 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你说的是要有一个脚本或什么东西来作为服务器,以便于EA能够沟通。 我想,metaquotes需要一段时间才能想出这样的办法。 然而,在mql4.com上,他们说我所说的函数,GlobalVariableSetOnCondition()是原子式执行的。 有了这个,我也许可以想出一组函数来做我需要的事情。
谁能帮助我:https://www.mql5.com/en/forum/174184?
帮助 -零除法?
嗨,所有的编码员...
我应该怎么做才能解决这个错误:零除法?
谢谢你的帮助...
jma
你好codersguru。
我可以在EA代码中使用jma而不是ema吗?
需要帮助 - 调整后的MACD
我试图创建一个指标,根据RSI的值来调整信号线。真的,我想在MACD上画出另一条调整后的信号线,并将常规的信号线留在原地。
编辑。
我让指标在同一窗口中画出RSI线(第一步)。但由于某些原因,它不能画出最后一期。请看附件。
任何帮助都将是巨大的
以下是我遇到问题的代码:////,当我在Northfinace上加载它时,它可以工作,然后再也没有进行交易......但它在Interbank上没有任何作用......它是一个使用kama的反转系统,0.0005是反转点......我不知道发生了什么,因为当我第一次加载它时,它在Northfinance上进行了一次完美交易,但这是一个现有的交易,应该已经进行了......
的代码
#属性版权 "专家顾问生成器"
#属性链接 "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
外部int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
外置双数 Lots = 1;
extern int Slippage = 3;
extern bool StopLossMode = True;
外置 int StopLoss = 40;
外部 bool TakeProfitMode = False;
extern int TakeProfit = 60;
外部 bool TrailingStopMode = True;
外置 int TrailingStop = 35;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| 专家初始化函数 |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
如果(EachTickMode)Current = 0;否则Current = 1。
return(0);
}
//+------------------------------------------------------------------+
//| 专家去初始化功能|
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| 专家启动功能|
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
订单 = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| 变量开始 |
//+------------------------------------------------------------------+
double Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Current + 0)。
double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Current + 0);
double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Current + 0);
双重Buy1_1 = Var1 ;
双倍Buy1_2 = 25;
双倍Buy2_1 = Var2 ;
双倍Buy2_2 = 80。
双倍Buy3_1 = Var3 ;
双份Buy3_2 = 50。
双份Sell1_1 = Var1 ;
双份Sell1_2 = -25。
双份Sell2_1 = Var2 。
双份Sell2_2 = -80。
双份Sell3_1 = Var3 ;
双份Sell3_2 = -50。
double CloseBuy1_1 = Var1 ;
双份CloseBuy1_2 = -25。
double CloseBuy2_1 = Var2 ;
双倍CloseBuy2_2 = -80。
double CloseBuy3_1 = Var3 ;
双倍CloseBuy3_2 = -50。
double CloseSell1_1 = Var1 ;
双份CloseSell1_2 = 25。
双份CloseSell2_1 = Var2 。
双份CloseSell2_2 = 80。
双份CloseSell3_1 = Var3 。
双份CloseSell3_2 = 50。
//+------------------------------------------------------------------+
//| 变量结束 |
//+------------------------------------------------------------------+
//检查位置
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) {
IsTrade = True。
如果(OrderType() == OP_BUY){
//关闭
//+------------------------------------------------------------------+
//| 信号开始(退出买入)|
//+------------------------------------------------------------------+
if (CloseBuy1_1 <= CloseBuy1_2 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| 信号结束(退出购买) |
//+------------------------------------------------------------------+
如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。
if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
继续。
}
//拖曳止损
if(TrailingStopMode && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
如果(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
} else {
//关闭
//+------------------------------------------------------------------+
//| 信号开始(退出卖出)|
//+------------------------------------------------------------------+
if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| 信号结束(退出卖出)|
//+------------------------------------------------------------------+
如果(Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。
如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False。
继续。
}
//拖曳止损
if(TrailingStopMode && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
如果(Buy1_1 >= Buy1_2 && Buy2_1 >= Buy2_2 && Buy3_1 >= Buy3_2) Order = SIGNAL_BUY;
如果(Sell1_1 <= Sell1_2 && Sell2_1 = Sell3_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| 信号结束 |
//+------------------------------------------------------------------+
//买入
如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){
if(!IsTrade) {
//检查自由保证金
如果(AccountFreeMargin() < (1000 * Lots)) {
Print("我们没有钱。Free Margin = ", AccountFreeMargin())。
return(0);
}
if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) 。
如果(Ticket > 0) {
如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY订单打开:", OrderOpenPrice())。
if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("打开买入订单出错。", GetLastError())。
}
}
if (EachTickMode) TickCheck = True;
如果(!EachTickMode) BarCount = Bars;
return(0);
}
}
//卖出
如果(Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){
if(!IsTrade) {
//检查自由保证金
如果(AccountFreeMargin() < (1000 * Lots)) {
Print("我们没有钱。Free Margin = ", AccountFreeMargin())。
return(0);
}
if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) 。
如果(Ticket > 0) {
如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Sell order opened : " , OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell")。
} else {
Print("错误打开卖出订单。", GetLastError())。
}
}
if (EachTickMode) TickCheck = True;
如果(!EachTickMode) BarCount = Bars;
return(0);
}
}
如果(!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
我改变了专家中的指标值.0005,因为它只显示通道线,最终水平是你需要改变的,25,-25为.0005...30,,-30为.0006,等等...
盈亏平衡和追踪止损的问题
你好。
我正在使用Codersguru的MQL4教程学习编码,我正在做 "My_First_EA"。这确实是我的第一个EA。它运行得很好,但我想写一个盈亏平衡止损,但我想不出来。我遇到的问题是,盈亏平衡止损就像拖曳式止损一样跟随价格。我想让最初的止损在我赚取15点时保持1个点的利润(例如),然后我想让止损保持在盈亏平衡点(1个点的利润),直到移动止损在25点利润时开始工作。然后,我希望追踪止损像往常一样,每赚一个点就移动一次。我想问题可能出在 "OrderStopLoss() "上,但我现在什么都不知道了。我的大脑一片混乱。谢谢你
以下是我所做的相关代码。
外来的双倍TrailingStop=25.0。
外设 double BreakEvenProfit=15.0;
外置双倍BreakEvenStop=1;
......................
我在这里的进场和开仓代码运行良好
......................
for (cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。
如果(OrderType()<=OP_SELL&&OrderSymbol()==Symbol())
{
如果(OrderType()==OP_BUY)//长仓被打开
{
//是否应该平仓?
如果(FSAR > FMA) //我的退出信号
{
//----CLOSE LONG POSITION工作正常
OrderClose(OrderTicket(),OrderLots(),Bid,3, Magenta);
return(0);//exit
}
////////////////////,这是下面的问题区域/////////。
//----检查 盈亏平衡停止多头头寸------
如果(Bid-OrderOpenPrice() > BreakEvenProfit*Point)
{
如果(OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow)。
返回(0)。
}
}
//-----,下面的一切都作为典型的追踪止损工作。
//---- 检查跟踪止损的长线位置
如果(TrailingStop>0){
如果(Bid-OrderOpenPrice()>Point*TrailingStop)
{
如果(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop, OrderTakeProfit(),0,Yellow)。
返回(0)。
}
}
}
}
否则//进入空头状态