编码帮助 - 页 469 1...462463464465466467468469470471472473474475476...786 新评论 [删除] 2015.05.06 15:18 #4681 你好,交易员。 谁能帮帮我,知道这两个.ex4文件中的指标是什么? 最好的问候,oink! 附加的文件: str_alertsignal.ex4 12 kb str_conf_1.ex4 10 kb Mladen Rakic 2015.05.06 16:10 #4682 oink!: 你好,交易员。谁能帮帮我,知道这两个.ex4文件中的指标是什么? 最好的问候,oink! 警报信号是一个简单的之字形,用于显示箭头。 附加的文件: zz.gif 76 kb [删除] 2015.05.06 17:35 #4683 谢谢 mladen,我从大约10000个Indikators中知道你的名字!;-) 然后我在谷歌上搜索人字形+箭头的指标。 另一个是未定义的? 最好的问候,oink! Mladen Rakic 2015.05.06 18:01 #4684 oink!:Thanksmladen,我从大约10000个指标中知道你的名字!;-)然后我在谷歌上搜索 "之字形+箭头 "指标。 另一个是未定义的? 最好的问候,Oink! 坦率地说,我无法识别另一个。抱歉 Jovager 2015.05.07 04:28 #4685 你好。 我不明白为什么这个EA不工作,编译正常,日志和专家标签中没有任何内容,但没有任何交易。 谢谢你。 琼 外置 int magicNum=200; 外置双数TakeProfit=50。 外部双数 Lots = 0.01; 外置双倍追踪止损=30。 //extern double MACDOpenLevel=3; //extern double MACDCloseLevel=2; 外置双MATrendPeriod=5。 开始() { 双重MaCurrent,MaPrevious,MavPrevious。 double close=iClose(Symbol(),0,0); double vclose=iClose(Symbol(),0,1); 双重vvclose=iClose(Symbol(),0,2)。 // double MacdCurrent, MacdPrevious, SignalCurrent; // double SignalPrevious, MaCurrent, MaPrevious; //双倍RSIj,RSIv。 int cnt, ticket, total; // 初始数据检查 // 确保专家是在一个正常的图表中工作的,并且用户没有对图表进行修改,这是非常重要的。 // 图表,并且用户在设置外部变量时没有犯任何错误。 // 变量(Lots, StopLoss, TakeProfit, // 在我们的案例中,我们检查TakeProfit。 // 在我们的案例中,我们在少于100条的图表中检查获利 如果(Bars<100) { Print("小于100的条数")。 return(0); } 如果(TakeProfit<10) { Print("TakeProfit小于10")。 return(0); // 检查TakeProfit } // 为了简化编码和加快访问速度 // 数据被放入内部变量 // MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)。 // MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1)。 // SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)。 // SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1)。 MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0)。 MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1)。 MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2)。 double PlusHaut =High; double PlusBas =Low; double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66); 双重TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。 // RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0)。 // RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1)。 total=OrdersTotal(); if(total<1) { // 没有确定的开仓订单 如果(AccountFreeMargin()<(1000*Lots)) { Print("我们没有钱。Free Margin = ", AccountFreeMargin())。 return(0); } // 检查多头头寸(BUY)的可能性 如果 // (RSIv30) ( MaCurrent >MaPrevious) // && (MaPreviousvclose || vclose>vvclose)) // (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&) // MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green) 。 如果(ticket>0) { 如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice()); } 否则 Print("打开BUY订单错误。",GetLastError())。 return(0); } // 检查空头头寸(SELL)的可能性 // 如果(RSIv>70 && RSIj<70) 如果 ( MaCurrent <MaPrevious) // && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose)) // (MacdCurrent>0 && MacdCurrentSignalPrevious &&) // MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red)。 如果(ticket>0) { 如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice()); } 否则 Print("打开卖出订单错误。",GetLastError())。 return(0); } return(0); } // 正确地进入市场是很重要的。 // 但更重要的是正确退出...... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 if(OrderType()<=OP_SELL && // 检查开仓位置 OrderSymbol()==Symbol()) //检查符号 { 如果(OrderType()==OP_BUY) // 多头头寸已经建立 { //是否应该平仓? // if(MacdCurrent>0 && MacdCurrentSignalPrevious &&) // MacdCurrent>(MACDCloseLevel*Point)) // 如果(RSIv>70 && RSIj<70) 如果 ( MaCurrent <MaPrevious) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 平仓 return(0); // 退出 } // 检查拖曳止损 如果(TrailingStop>0){ 如果(Bid-OrderOpenPrice()>Point*TrailingStop) { 如果(OrderStopLoss()<Bid-Point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。 返回(0)。 } } } } 否则 // 转入空头头寸 { //应该平仓吗? // if(MacdCurrentSignalCurrent &&) // MacdPrevious(MACDCloseLevel*Point)) 如果 // (RSIv30) ( MaCurrent >MaPrevious) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置 return(0); // 退出 } // 检查拖曳止损 如果(TrailingStop>0){ 如果((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { 如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。 返回(0)。 } } } } } } return(0); } //结束。 新手的问题 Coding help 如何编码? Mladen Rakic 2015.05.07 04:54 #4686 Jovager: 你好。我不明白为什么这个EA不工作,编译正常,日志和专家标签中没有任何内容,但没有任何交易。 谢谢你。 琼 外置 int magicNum=200; 外置双数TakeProfit=50。 外部双数 Lots = 0.01; 外置双倍追踪止损=30。 //extern double MACDOpenLevel=3; //extern double MACDCloseLevel=2; 外置双MATrendPeriod=5。 开始() { 双重MaCurrent,MaPrevious,MavPrevious。 double close=iClose(Symbol(),0,0); double vclose=iClose(Symbol(),0,1); 双重vvclose=iClose(Symbol(),0,2)。 // double MacdCurrent, MacdPrevious, SignalCurrent; // double SignalPrevious, MaCurrent, MaPrevious; //双倍RSIj,RSIv。 int cnt, ticket, total; // 初始数据检查 // 确保专家是在一个正常的图表中工作的,并且用户没有对图表进行修改,这是非常重要的。 // 图表,并且用户在设置外部变量时没有犯任何错误。 // 变量(Lots, StopLoss, TakeProfit, // 在我们的案例中,我们检查TakeProfit。 // 在我们的案例中,我们在少于100条的图表中检查获利 如果(Bars<100) { Print("小于100的条数")。 return(0); } 如果(TakeProfit<10) { Print("TakeProfit小于10")。 return(0); // 检查TakeProfit } // 为了简化编码和加快访问速度 // 数据被放入内部变量 // MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)。 // MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); // SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)。 // SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1)。 MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0)。 MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1)。 MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2)。 double PlusHaut =High; double PlusBas =Low; double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66); 双重TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。 // RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0)。 // RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1)。 total=OrdersTotal(); if(total<1) { // 没有确定的开仓订单 如果(AccountFreeMargin()<(1000*Lots)) { Print("我们没有钱。Free Margin = ", AccountFreeMargin())。 return(0); } // 检查多头头寸(BUY)的可能性 如果 // (RSIv30) ( MaCurrent >MaPrevious) // && (MaPreviousvclose || vclose>vvclose)) // (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&) // MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green) 。 如果(ticket>0) { 如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice()); } 否则 Print("打开BUY订单错误。",GetLastError())。 return(0); } // 检查空头头寸(卖出)的可能性 // 如果(RSIv>70 && RSIj<70) 如果 ( MaCurrent <MaPrevious) // && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose)) // (MacdCurrent>0 && MacdCurrentSignalPrevious &&) // MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red)。 如果(ticket>0) { 如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice()); } 否则 Print("打开卖出订单错误。",GetLastError())。 return(0); } return(0); } // 正确地进入市场是很重要的。 // 但更重要的是正确退出...... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 if(OrderType()<=OP_SELL && // 检查开仓位置 OrderSymbol()==Symbol()) //检查符号 { 如果(OrderType()==OP_BUY) // 多头头寸已经建立 { //是否应该平仓? // if(MacdCurrent>0 && MacdCurrentSignalPrevious &&) // MacdCurrent>(MACDCloseLevel*Point)) // 如果(RSIv>70 && RSIj<70) 如果 ( MaCurrent <MaPrevious) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 平仓 return(0); // 退出 } // 检查拖曳止损 如果(TrailingStop>0){ 如果(Bid-OrderOpenPrice()>Point*TrailingStop) { 如果(OrderStopLoss()<Bid-Point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。 返回(0)。 } } } } 否则 // 转入空头头寸 { //应该平仓吗? // if(MacdCurrentSignalCurrent &&) // MacdPrevious(MACDCloseLevel*Point)) 如果 // (RSIv30) ( MaCurrent >MaPrevious) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置 return(0); // 退出 } // 检查拖曳止损 如果(TrailingStop>0){ 如果((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { 如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。 返回(0)。 } } } } } } return(0); } //结束。 在我后面的测试中,它是有效的。 附加的文件: jo.gif 90 kb sunshineh 2015.05.07 05:12 #4687 你好mladen。 我想对我的profitOrder进行部分出售,其值与我的变量 "LossValue "相同。 我试图通过以下步骤来计算手数。 -从profitOrder中读出实际利润 -计算ProfitPerLotstep -计算LossValue/ProfitPerLotstep,将手数结果取整。 -但如果我卖出这个手数,利润值就太小了(我想是因为点差)。 正确的计算方式是什么? sunshineh 2015.05.07 05:52 #4688 这里有一个额外的问题。 如果我做了部分平仓,那么剩下的头寸就会被经纪人自动打开。之前我给头寸做了注释,以区别该头寸。现在我怎样才能识别它呢? Mladen Rakic 2015.05.07 11:01 #4689 sunshineh: 这里有一个额外的问题,如果我做了部分平仓,那么剩余的头寸就会被经纪商自动打开。之前我给头寸做了注释,以区别该头寸。现在我怎样才能识别它? sunshineh 你不能做任何事情 只有经纪人可以改变订单的评论栏。也许经纪人会改变评论的方式,如 "从nnnn",其中nnnn是以前的票号,但在大多数情况下,他们不会这样做,所以你没有解决方案,在这样的情况下,可以唯一地识别以前的订单。 sunshineh 2015.05.07 11:34 #4690 谢谢mladen!你有办法解决我之前的帖子中提到的根据定义的值(如100欧元)计算手数的问题吗? 1...462463464465466467468469470471472473474475476...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,交易员。
谁能帮帮我,知道这两个.ex4文件中的指标是什么?
最好的问候,oink!
你好,交易员。
谁能帮帮我,知道这两个.ex4文件中的指标是什么?
最好的问候,oink!警报信号是一个简单的之字形,用于显示箭头。
谢谢 mladen,我从大约10000个Indikators中知道你的名字!;-)
然后我在谷歌上搜索人字形+箭头的指标。
另一个是未定义的?
最好的问候,oink!
Thanksmladen,我从大约10000个指标中知道你的名字!;-)
然后我在谷歌上搜索 "之字形+箭头 "指标。
另一个是未定义的?
最好的问候,Oink!坦率地说,我无法识别另一个。抱歉
你好。
我不明白为什么这个EA不工作,编译正常,日志和专家标签中没有任何内容,但没有任何交易。
谢谢你。
琼
外置 int magicNum=200;
外置双数TakeProfit=50。
外部双数 Lots = 0.01;
外置双倍追踪止损=30。
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
外置双MATrendPeriod=5。
开始()
{
双重MaCurrent,MaPrevious,MavPrevious。
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
双重vvclose=iClose(Symbol(),0,2)。
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
//双倍RSIj,RSIv。
int cnt, ticket, total;
// 初始数据检查
// 确保专家是在一个正常的图表中工作的,并且用户没有对图表进行修改,这是非常重要的。
// 图表,并且用户在设置外部变量时没有犯任何错误。
// 变量(Lots, StopLoss, TakeProfit,
// 在我们的案例中,我们检查TakeProfit。
// 在我们的案例中,我们在少于100条的图表中检查获利
如果(Bars<100)
{
Print("小于100的条数")。
return(0);
}
如果(TakeProfit<10)
{
Print("TakeProfit小于10")。
return(0); // 检查TakeProfit
}
// 为了简化编码和加快访问速度
// 数据被放入内部变量
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)。
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1)。
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)。
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1)。
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0)。
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1)。
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2)。
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
双重TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0)。
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1)。
total=OrdersTotal();
if(total<1)
{ // 没有确定的开仓订单
如果(AccountFreeMargin()<(1000*Lots))
{
Print("我们没有钱。Free Margin = ", AccountFreeMargin())。
return(0);
}
// 检查多头头寸(BUY)的可能性
如果
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&)
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green) 。
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
}
否则 Print("打开BUY订单错误。",GetLastError())。
return(0);
}
// 检查空头头寸(SELL)的可能性
// 如果(RSIv>70 && RSIj<70)
如果 ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&)
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red)。
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice());
}
否则 Print("打开卖出订单错误。",GetLastError())。
return(0);
}
return(0);
}
// 正确地进入市场是很重要的。
// 但更重要的是正确退出......
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && // 检查开仓位置
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_BUY) // 多头头寸已经建立
{
//是否应该平仓?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&)
// MacdCurrent>(MACDCloseLevel*Point))
// 如果(RSIv>70 && RSIj<70)
如果 ( MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 平仓
return(0); // 退出
}
// 检查拖曳止损
如果(TrailingStop>0){
如果(Bid-OrderOpenPrice()>Point*TrailingStop)
{
如果(OrderStopLoss()<Bid-Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。
返回(0)。
}
}
}
}
否则 // 转入空头头寸
{
//应该平仓吗?
// if(MacdCurrentSignalCurrent &&)
// MacdPrevious(MACDCloseLevel*Point))
如果
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置
return(0); // 退出
}
// 检查拖曳止损
如果(TrailingStop>0){
如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。
返回(0)。
}
}
}
}
}
}
return(0);
}
//结束。
你好。
我不明白为什么这个EA不工作,编译正常,日志和专家标签中没有任何内容,但没有任何交易。
谢谢你。
琼
外置 int magicNum=200;
外置双数TakeProfit=50。
外部双数 Lots = 0.01;
外置双倍追踪止损=30。
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
外置双MATrendPeriod=5。
开始()
{
双重MaCurrent,MaPrevious,MavPrevious。
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
双重vvclose=iClose(Symbol(),0,2)。
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
//双倍RSIj,RSIv。
int cnt, ticket, total;
// 初始数据检查
// 确保专家是在一个正常的图表中工作的,并且用户没有对图表进行修改,这是非常重要的。
// 图表,并且用户在设置外部变量时没有犯任何错误。
// 变量(Lots, StopLoss, TakeProfit,
// 在我们的案例中,我们检查TakeProfit。
// 在我们的案例中,我们在少于100条的图表中检查获利
如果(Bars<100)
{
Print("小于100的条数")。
return(0);
}
如果(TakeProfit<10)
{
Print("TakeProfit小于10")。
return(0); // 检查TakeProfit
}
// 为了简化编码和加快访问速度
// 数据被放入内部变量
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)。
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)。
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1)。
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0)。
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1)。
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2)。
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
双重TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0)。
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1)。
total=OrdersTotal();
if(total<1)
{ // 没有确定的开仓订单
如果(AccountFreeMargin()<(1000*Lots))
{
Print("我们没有钱。Free Margin = ", AccountFreeMargin())。
return(0);
}
// 检查多头头寸(BUY)的可能性
如果
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&)
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green) 。
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
}
否则 Print("打开BUY订单错误。",GetLastError())。
return(0);
}
// 检查空头头寸(卖出)的可能性
// 如果(RSIv>70 && RSIj<70)
如果 ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&)
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red)。
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice());
}
否则 Print("打开卖出订单错误。",GetLastError())。
return(0);
}
return(0);
}
// 正确地进入市场是很重要的。
// 但更重要的是正确退出......
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && // 检查开仓位置
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_BUY) // 多头头寸已经建立
{
//是否应该平仓?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&)
// MacdCurrent>(MACDCloseLevel*Point))
// 如果(RSIv>70 && RSIj<70)
如果 ( MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 平仓
return(0); // 退出
}
// 检查拖曳止损
如果(TrailingStop>0){
如果(Bid-OrderOpenPrice()>Point*TrailingStop)
{
如果(OrderStopLoss()<Bid-Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。
返回(0)。
}
}
}
}
否则 // 转入空头头寸
{
//应该平仓吗?
// if(MacdCurrentSignalCurrent &&)
// MacdPrevious(MACDCloseLevel*Point))
如果
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置
return(0); // 退出
}
// 检查拖曳止损
如果(TrailingStop>0){
如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。
返回(0)。
}
}
}
}
}
}
return(0);
}
//结束。在我后面的测试中,它是有效的。
你好mladen。
我想对我的profitOrder进行部分出售,其值与我的变量 "LossValue "相同。
我试图通过以下步骤来计算手数。
-从profitOrder中读出实际利润
-计算ProfitPerLotstep
-计算LossValue/ProfitPerLotstep,将手数结果取整。
-但如果我卖出这个手数,利润值就太小了(我想是因为点差)。
正确的计算方式是什么?
这里有一个额外的问题。
如果我做了部分平仓,那么剩下的头寸就会被经纪人自动打开。之前我给头寸做了注释,以区别该头寸。现在我怎样才能识别它呢?
这里有一个额外的问题,如果我做了部分平仓,那么剩余的头寸就会被经纪商自动打开。之前我给头寸做了注释,以区别该头寸。现在我怎样才能识别它?
sunshineh
你不能做任何事情
只有经纪人可以改变订单的评论栏。也许经纪人会改变评论的方式,如 "从nnnn",其中nnnn是以前的票号,但在大多数情况下,他们不会这样做,所以你没有解决方案,在这样的情况下,可以唯一地识别以前的订单。
谢谢mladen!你有办法解决我之前的帖子中提到的根据定义的值(如100欧元)计算手数的问题吗?