编码帮助 - 页 507 1...500501502503504505506507508509510511512513514...786 新评论 Mladen Rakic 2015.07.28 12:56 #5061 tristantsh: 谢谢mntiwana和malden。但为什么我必须再次购买?你能在信息中发送这些指标吗? 请将您购买该指标时收到的带有链接的原始电子邮件发送至support@forex-tsd.com,如果一切正常,您将收到更新版本。 Tristan Tairo 2015.07.28 13:02 #5062 好吧,Mlanden.但NMC之前的指标看起来比NMC之后有趣。这只是我的感觉吗? Mladen Rakic 2015.07.28 13:13 #5063 tristantsh: 好的,Mlanden。但是nmc之前的指标看起来比nmc之后的有趣。这只是我的感觉吗? 与 "前nmc "版本相比,"nmc "版本的结果完全没有变化。"nmc "代表 "新的metatrader兼容"。 一切顺利 Jovager 2015.07.28 13:28 #5064 为什么? Mladen, 请你告诉我为什么这个EA不工作的原因。 //----------------------- ea参数 外部字符串 Expert_Name = "---------- Pending Order EA v1", Expert_Name2 = "---------- 对于当前价格设置EntryLevel = 0"; 外来的双倍 EntryLevel = 1.8600, 距离 = 100。 StopLoss = 50, TakeProfit = 50, 拖曳止损 = 50。 外部字符串 Order_Setting = "---------- Order Setting"; 外来的int NumberOfTries = 5, Slippage = 5, MagicNumber = 1234。 外部字符串 MM_Parameters = "---------- 资金管理"。 外来的双数 Lots =0.01; 外部 bool MM = false, //使用资金管理与否 AccountIsMicro = true; //使用微型账户或不使用微型账户 外部int 风险 = 0; //10%。 外部字符串 Testing_Parameters= "---------- Back Test Parameter"; 外部 bool Show_Settings = true; //----------------------- 全局变量 静态 int TimeFrame = 0; 弦乐 TicketComment = "PendingOrderEA v2", LastTrade; bool TradeAllow = true, EntryAllow = true; //+------------------------------------------------------------------+ //| 专家初始化功能 //+------------------------------------------------------------------+ int init() { //-----------------------,生成神奇数字和票据注释 //----------------------- source : pengie MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period())。 TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period())。 //-----------------------,在图表上显示ea设置。 //----------------------- source : codersguru if(Show_Settings) subPrintDetails(); else Comment("")。 return(0); } //+------------------------------------------------------------------+ //|专家去初始化功能| //+------------------------------------------------------------------+ int deinit() { //-----------------------,防止在用户改变时间框架时重新计数 //----------------------- source : codersguru TimeFrame=Period()。 return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { 双重 // BuyLevel。 SellLevel。 ǞǞǞ cnt, 票。 总数。 //----------------------- 设置买入和卖出的价格 if(EntryLevel==0) EntryLevel = Bid; // BuyLevel = EntryLevel + Distance*Point; SellLevel = EntryLevel - Distance*Point; // 如果((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point) // { // Comment("无效的进入价格或距离")。 // return(0); // } //-----------------------,如果使用资金管理,调整手数 if(MM) Lots = subLotSize(); //----------------------- ENTRY //----------------------- 基于magicnumber和符号的总订单 total = subTotalTrade(); //----------------------- 只设置1次订单 如果(TradeAllow) { //----------------------- If NO TRADE if(total<1 && EntryAllow) { ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point, SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red); // ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green) 。 EntryAllow = false; return(0); } if(total==1) { subDeleteOrder(); TradeAllow = false; } } //----------------------- 追踪止损部分 如果(TrailingStop>0 && subTotalTrade()>0){ total = OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 如果(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber) { subTrailingStop(OrderType())。 返回(0)。 } } } return(0); } //----------------------- END PROGRAM //+------------------------------------------------------------------+ //|函数定义 //+------------------------------------------------------------------+ //----------------------- 资金管理功能 //----------------------- source : codersguru double subLotSize() { double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100; if(AccountIsMicro==false) //正常账户 { 如果(lotMM < 0.1) lotMM = Lots; if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5; 如果(lotMM > 1.0) lotMM = MathCeil(lotMM); 如果(lotMM>100)lotMM=100。 } 否则 //微型账户 { 如果(lotMM < 0.01) lotMM = Lots; 如果(lotMM > 1.0) lotMM = MathCeil(lotMM); 如果(lotMM > 100) lotMM = 100; } 返回(lotMM)。 } //----------------------- 基于符号和magicnumber函数的订单数量 int subTotalTrade() { 符号 cnt, total = 0; for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。 如果(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() &&& OrderMagicNumber()==MagicNumber) total++; } return(total); } //----------------------- 删除订单功能 void subDeleteOrder() { int cnt, total = 0; total = OrdersTotal(); for(cnt=total-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 如果(OrderSymbol()==Symbol() &&) OrderMagicNumber()==MagicNumber) { switch(OrderType()) { // case OP_BUYLIMIT : // case OP_BUYSTOP : case OP_SELLLIMIT: case OP_SELLSTOP : OrderDelete(OrderTicket())。 } } } } //----------------------- 尾随止损功能 //----------------------- source : codersguru //----------------------- MODIFIED :火车头 空白的subTrailingStop(int Type) { 如果(Type==OP_BUY) //买入位置被打开 { 如果(Bid-OrderOpenPrice()>Point*TrailingStop &&) OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。 返回(0)。 } } if(Type==OP_SELL) // 卖出头寸已经打开 { 如果(OrderOpenPrice()-Ask>Point*TrailingStop) { 如果(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。 返回(0)。 } } } } //-----------------------,根据符号和时间框架函数生成神奇数字。 //----------------------- source : pengie //----------------------- MODIFIED :燃烧器 int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame) { int isymbol = 0; 如果(符号 == "EURUSD")isymbol = 1。 else if (symbol == "GBPUSD") isymbol = 2; else if (symbol == "USDJPY") isymbol = 3; else if (symbol == "AUDCAD") isymbol = 4; 否则,如果(符号=="AUDUSD")isymbol=5。 else if (symbol == "USDCAD") isymbol = 6; else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURJPY") isymbol = 8; else if (symbol == "EURCHF") isymbol = 9; else if (symbol == "EURAUD") isymbol = 10; else if (symbol == "EURCAD") isymbol = 11; else if (symbol == "GBPUSD") isymbol = 12; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPCAD") isymbol = 16; 否则isymbol = 17。 如果(isymbol<10) MagicNumber = MagicNumber * 10; 返回(StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))。 } //----------------------- 打印注释功能 //----------------------- source : codersguru 空白subPrintDetails() { string sComment = ""。 string sp = "----------------------------------------\n"; string NL = "\n"; sComment = sp; sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | " 。 sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "。 sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL; sComment = sComment + sp; sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | "。 sComment = sComment + "MM=" + subBoolToStr(MM) + " | " 。 sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL; sComment = sComment + sp; 评论(sComment)。 } //----------------------- boolen变量到字符串的函数 //----------------------- source : codersguru string subBoolToStr ( bool value) { if(value) return ("True"); 否则返回("False")。 } //----------------------- end function 提前感谢。 乔 Coding help 退出策略。阶梯式止损与拖曳式止损 Ojala EA gutu 2015.07.28 15:30 #5065 毫升登。 希望你一切顺利。以下是编译时出现的两个错误,请协助。 附加的文件: rstochalert-4tf.mq4 3 kb Mladen Rakic 2015.07.28 16:12 #5066 candyman752: mladen,希望你一切顺利。以下是编译时出现的两个错误。 candyman752 现在试试:rstochalert-4tf_1.mq4 附加的文件: rstochalert-4tf_1.mq4 3 kb mntiwana 2015.07.28 20:01 #5067 最亲爱的MLADEN。 (我的问题总是关于修理的帮助而不是编码的帮助) 我有一个请求,希望能理解.....,请看我添加的两张图片,第一张是有1个错误和2个警告,涉及第70和72行....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行的第二个警告仍然存在...如果保持原样,功能 上没有问题吗? 问候 mntiwana 附加的文件: 1-error_and_warning.png 150 kb 2-error__1_warning_removed.png 139 kb Mladen Rakic 2015.07.28 21:00 #5068 mntiwana: 亲爱的MLADEN,(我的问题总是关于修理的帮助而不是编码的帮助) 我有一个请求,希望能够理解.....,请看我添加的两张图片,第一张图片是关于第70和72行的1个错误和2个警告....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行仍然存在的第二个警告...如果保持现状,功能上没有问题吗? 问候 mntiwana mntiwana 这样就没有问题了。你做了修改。 mntiwana 2015.07.28 21:40 #5069 mladen: mntiwana 这样一来,一切都好了。你做了修改,OK 非常感谢伟大的老板对一个好奇的学生的鼓励。 我最好的问候 Mladen Rakic 2015.07.29 05:15 #5070 Jovager: Mladen,请你告诉我为什么这个EA不能工作的原因。 //----------------------- ea参数 外部字符串 Expert_Name = "---------- Pending Order EA v1", Expert_Name2 = "---------- 对于当前价格设置EntryLevel = 0"。 外来的双倍 EntryLevel = 1.8600, 距离 = 100。 StopLoss = 50, TakeProfit = 50, 拖曳止损 = 50。 外部字符串 Order_Setting = "---------- Order Setting"; 外来的int NumberOfTries = 5, Slippage = 5, MagicNumber = 1234。 外部字符串 MM_Parameters = "---------- 资金管理"。 外来的双数 Lots =0.01; 外部 bool MM = false, //使用资金管理与否 AccountIsMicro = true; //使用微型账户或不使用微型账户 外部int 风险 = 0; //10%。 外部字符串 Testing_Parameters= "---------- Back Test Parameter"; 外部 bool Show_Settings = true; //----------------------- 全局变量 静态 int TimeFrame = 0; 弦乐 TicketComment = "PendingOrderEA v2", LastTrade; bool TradeAllow = true, EntryAllow = true; //+------------------------------------------------------------------+ //| 专家初始化功能 //+------------------------------------------------------------------+ int init() { //-----------------------,生成神奇数字和票据注释 //----------------------- source : pengie MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period())。 TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period())。 //-----------------------,在图表上显示ea设置。 //----------------------- source : codersguru if(Show_Settings) subPrintDetails(); else Comment("")。 return(0); } //+------------------------------------------------------------------+ //|专家去初始化功能| //+------------------------------------------------------------------+ int deinit() { //-----------------------,防止在用户改变时间框架时重新计数 //----------------------- source : codersguru TimeFrame=Period()。 return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { 双重 // BuyLevel。 SellLevel。 ǞǞǞ cnt, 票。 总数。 //----------------------- 设置买入和卖出的价格 if(EntryLevel==0) EntryLevel = Bid; // BuyLevel = EntryLevel + Distance*Point; SellLevel = EntryLevel - Distance*Point; // 如果((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point) // { // Comment("无效的进入价格或距离")。 // return(0); // } //-----------------------,如果使用资金管理,调整手数 if(MM) Lots = subLotSize(); //----------------------- ENTRY //----------------------- 基于magicnumber和符号的总订单 total = subTotalTrade(); //----------------------- 只设置1次订单 如果(TradeAllow) { //----------------------- If NO TRADE if(total<1 && EntryAllow) { ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point, SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red); // ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green) 。 EntryAllow = false; return(0); } if(total==1) { subDeleteOrder(); TradeAllow = false; } } //----------------------- 追踪止损部分 如果(TrailingStop>0 && subTotalTrade()>0){ total = OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 如果(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber) { subTrailingStop(OrderType())。 返回(0)。 } } } return(0); } //----------------------- END PROGRAM //+------------------------------------------------------------------+ //|函数定义 //+------------------------------------------------------------------+ //----------------------- 资金管理功能 //----------------------- source : codersguru double subLotSize() { double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100; if(AccountIsMicro==false) //正常账户 { 如果(lotMM < 0.1) lotMM = Lots; if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5; 如果(lotMM > 1.0) lotMM = MathCeil(lotMM); 如果(lotMM>100)lotMM=100。 } 否则 //微型账户 { 如果(lotMM < 0.01) lotMM = Lots; 如果(lotMM > 1.0) lotMM = MathCeil(lotMM); 如果(lotMM > 100) lotMM = 100; } 返回(lotMM)。 } //----------------------- 基于符号和magicnumber函数的订单数量 int subTotalTrade() { 符号 cnt, total = 0; for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。 如果(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() &&& OrderMagicNumber()==MagicNumber) total++; } return(total); } //----------------------- 删除订单功能 void subDeleteOrder() { int cnt, total = 0; total = OrdersTotal(); for(cnt=total-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 如果(OrderSymbol()==Symbol() &&) OrderMagicNumber()==MagicNumber) { switch(OrderType()) { // case OP_BUYLIMIT : // case OP_BUYSTOP : case OP_SELLLIMIT: case OP_SELLSTOP : OrderDelete(OrderTicket())。 } } } } //----------------------- 尾随止损功能 //----------------------- source : codersguru //----------------------- MODIFIED :火车头 空白的subTrailingStop(int Type) { 如果(Type==OP_BUY) //买入位置被打开 { 如果(Bid-OrderOpenPrice()>Point*TrailingStop &&) OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。 返回(0)。 } } if(Type==OP_SELL) // 卖出头寸已经打开 { 如果(OrderOpenPrice()-Ask>Point*TrailingStop) { 如果(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。 返回(0)。 } } } } //-----------------------,根据符号和时间框架函数生成神奇数字。 //----------------------- source : pengie //----------------------- MODIFIED :燃烧器 int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame) { int isymbol = 0; 如果(符号 == "EURUSD")isymbol = 1。 else if (symbol == "GBPUSD") isymbol = 2; else if (symbol == "USDJPY") isymbol = 3; else if (symbol == "AUDCAD") isymbol = 4; 否则,如果(符号=="AUDUSD")isymbol=5。 else if (symbol == "USDCAD") isymbol = 6; else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURJPY") isymbol = 8; else if (symbol == "EURCHF") isymbol = 9; else if (symbol == "EURAUD") isymbol = 10; else if (symbol == "EURCAD") isymbol = 11; else if (symbol == "GBPUSD") isymbol = 12; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPCAD") isymbol = 16; 否则isymbol = 17。 如果(isymbol<10) MagicNumber = MagicNumber * 10; 返回(StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))。 } //----------------------- 打印评论功能 //----------------------- source : codersguru 空白subPrintDetails() { string sComment = ""。 string sp = "----------------------------------------\n"; string NL = "\n"; sComment = sp; sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | " 。 sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "。 sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL; sComment = sComment + sp; sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | "。 sComment = sComment + "MM=" + subBoolToStr(MM) + " | " 。 sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL; sComment = sComment + sp; 评论(sComment)。 } //----------------------- boolen变量到字符串的函数 //----------------------- source : codersguru string subBoolToStr ( bool value) { if(value) return ("True"); 否则返回("False")。 } //----------------------- end function 提前感谢。 琼 乔。 能否请你附上mq4文件?这样测试起来非常困难 1...500501502503504505506507508509510511512513514...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢mntiwana和malden。但为什么我必须再次购买?你能在信息中发送这些指标吗?
请将您购买该指标时收到的带有链接的原始电子邮件发送至support@forex-tsd.com,如果一切正常,您将收到更新版本。
好吧,Mlanden.但NMC之前的指标看起来比NMC之后有趣。这只是我的感觉吗?
好的,Mlanden。但是nmc之前的指标看起来比nmc之后的有趣。这只是我的感觉吗?
与 "前nmc "版本相比,"nmc "版本的结果完全没有变化。"nmc "代表 "新的metatrader兼容"。
一切顺利
为什么?
Mladen,
请你告诉我为什么这个EA不工作的原因。
//----------------------- ea参数
外部字符串
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- 对于当前价格设置EntryLevel = 0";
外来的双倍
EntryLevel = 1.8600,
距离 = 100。
StopLoss = 50,
TakeProfit = 50,
拖曳止损 = 50。
外部字符串
Order_Setting = "---------- Order Setting";
外来的int
NumberOfTries = 5,
Slippage = 5,
MagicNumber = 1234。
外部字符串
MM_Parameters = "---------- 资金管理"。
外来的双数
Lots =0.01;
外部 bool
MM = false, //使用资金管理与否
AccountIsMicro = true; //使用微型账户或不使用微型账户
外部int
风险 = 0; //10%。
外部字符串
Testing_Parameters= "---------- Back Test Parameter";
外部 bool
Show_Settings = true;
//----------------------- 全局变量
静态 int
TimeFrame = 0;
弦乐
TicketComment = "PendingOrderEA v2",
LastTrade;
bool
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| 专家初始化功能
//+------------------------------------------------------------------+
int init()
{
//-----------------------,生成神奇数字和票据注释
//----------------------- source : pengie
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period())。
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period())。
//-----------------------,在图表上显示ea设置。
//----------------------- source : codersguru
if(Show_Settings) subPrintDetails();
else Comment("")。
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//-----------------------,防止在用户改变时间框架时重新计数
//----------------------- source : codersguru
TimeFrame=Period()。
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
双重
// BuyLevel。
SellLevel。
ǞǞǞ
cnt,
票。
总数。
//----------------------- 设置买入和卖出的价格
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
SellLevel = EntryLevel - Distance*Point;
// 如果((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comment("无效的进入价格或距离")。
// return(0);
// }
//-----------------------,如果使用资金管理,调整手数
if(MM) Lots = subLotSize();
//----------------------- ENTRY
//----------------------- 基于magicnumber和符号的总订单
total = subTotalTrade();
//----------------------- 只设置1次订单
如果(TradeAllow)
{
//----------------------- If NO TRADE
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point, SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green) 。
EntryAllow = false;
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- 追踪止损部分
如果(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
如果(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol()&&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType())。
返回(0)。
}
}
}
return(0);
}
//----------------------- END PROGRAM
//+------------------------------------------------------------------+
//|函数定义
//+------------------------------------------------------------------+
//----------------------- 资金管理功能
//----------------------- source : codersguru
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //正常账户
{
如果(lotMM < 0.1) lotMM = Lots;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
如果(lotMM > 1.0) lotMM = MathCeil(lotMM);
如果(lotMM>100)lotMM=100。
}
否则 //微型账户
{
如果(lotMM < 0.01) lotMM = Lots;
如果(lotMM > 1.0) lotMM = MathCeil(lotMM);
如果(lotMM > 100) lotMM = 100;
}
返回(lotMM)。
}
//----------------------- 基于符号和magicnumber函数的订单数量
int subTotalTrade()
{
符号
cnt,
total = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。
如果(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() &&&
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//----------------------- 删除订单功能
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol()==Symbol() &&)
OrderMagicNumber()==MagicNumber)
{
switch(OrderType())
{
// case OP_BUYLIMIT :
// case OP_BUYSTOP :
case OP_SELLLIMIT:
case OP_SELLSTOP :
OrderDelete(OrderTicket())。
}
}
}
}
//----------------------- 尾随止损功能
//----------------------- source : codersguru
//----------------------- MODIFIED :火车头
空白的subTrailingStop(int Type)
{
如果(Type==OP_BUY) //买入位置被打开
{
如果(Bid-OrderOpenPrice()>Point*TrailingStop &&)
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。
返回(0)。
}
}
if(Type==OP_SELL) // 卖出头寸已经打开
{
如果(OrderOpenPrice()-Ask>Point*TrailingStop)
{
如果(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。
返回(0)。
}
}
}
}
//-----------------------,根据符号和时间框架函数生成神奇数字。
//----------------------- source : pengie
//----------------------- MODIFIED :燃烧器
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
如果(符号 == "EURUSD")isymbol = 1。
else if (symbol == "GBPUSD") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4;
否则,如果(符号=="AUDUSD")isymbol=5。
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7;
else if (symbol == "EURJPY") isymbol = 8;
else if (symbol == "EURCHF") isymbol = 9;
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11;
else if (symbol == "GBPUSD") isymbol = 12;
else if (symbol == "GBPJPY") isymbol = 13;
else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15;
else if (symbol == "GBPCAD") isymbol = 16;
否则isymbol = 17。
如果(isymbol<10) MagicNumber = MagicNumber * 10;
返回(StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))。
}
//----------------------- 打印注释功能
//----------------------- source : codersguru
空白subPrintDetails()
{
string sComment = ""。
string sp = "----------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | " 。
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "。
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | "。
sComment = sComment + "MM=" + subBoolToStr(MM) + " | " 。
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
评论(sComment)。
}
//----------------------- boolen变量到字符串的函数
//----------------------- source : codersguru
string subBoolToStr ( bool value)
{
if(value) return ("True");
否则返回("False")。
}
//----------------------- end function
提前感谢。
乔
毫升登。
希望你一切顺利。以下是编译时出现的两个错误,请协助。
mladen,希望你一切顺利。以下是编译时出现的两个错误。
candyman752
现在试试:rstochalert-4tf_1.mq4
最亲爱的MLADEN。
(我的问题总是关于修理的帮助而不是编码的帮助)
我有一个请求,希望能理解.....,请看我添加的两张图片,第一张是有1个错误和2个警告,涉及第70和72行....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行的第二个警告仍然存在...如果保持原样,功能 上没有问题吗?
问候
mntiwana
亲爱的MLADEN,
(我的问题总是关于修理的帮助而不是编码的帮助)
我有一个请求,希望能够理解.....,请看我添加的两张图片,第一张图片是关于第70和72行的1个错误和2个警告....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行仍然存在的第二个警告...如果保持现状,功能上没有问题吗?
问候
mntiwanamntiwana
这样就没有问题了。你做了修改。
mntiwana 这样一来,一切都好了。你做了修改,OK
非常感谢伟大的老板对一个好奇的学生的鼓励。
我最好的问候
Mladen,
请你告诉我为什么这个EA不能工作的原因。
//----------------------- ea参数
外部字符串
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- 对于当前价格设置EntryLevel = 0"。
外来的双倍
EntryLevel = 1.8600,
距离 = 100。
StopLoss = 50,
TakeProfit = 50,
拖曳止损 = 50。
外部字符串
Order_Setting = "---------- Order Setting";
外来的int
NumberOfTries = 5,
Slippage = 5,
MagicNumber = 1234。
外部字符串
MM_Parameters = "---------- 资金管理"。
外来的双数
Lots =0.01;
外部 bool
MM = false, //使用资金管理与否
AccountIsMicro = true; //使用微型账户或不使用微型账户
外部int
风险 = 0; //10%。
外部字符串
Testing_Parameters= "---------- Back Test Parameter";
外部 bool
Show_Settings = true;
//----------------------- 全局变量
静态 int
TimeFrame = 0;
弦乐
TicketComment = "PendingOrderEA v2",
LastTrade;
bool
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| 专家初始化功能
//+------------------------------------------------------------------+
int init()
{
//-----------------------,生成神奇数字和票据注释
//----------------------- source : pengie
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period())。
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period())。
//-----------------------,在图表上显示ea设置。
//----------------------- source : codersguru
if(Show_Settings) subPrintDetails();
else Comment("")。
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//-----------------------,防止在用户改变时间框架时重新计数
//----------------------- source : codersguru
TimeFrame=Period()。
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
双重
// BuyLevel。
SellLevel。
ǞǞǞ
cnt,
票。
总数。
//----------------------- 设置买入和卖出的价格
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
SellLevel = EntryLevel - Distance*Point;
// 如果((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comment("无效的进入价格或距离")。
// return(0);
// }
//-----------------------,如果使用资金管理,调整手数
if(MM) Lots = subLotSize();
//----------------------- ENTRY
//----------------------- 基于magicnumber和符号的总订单
total = subTotalTrade();
//----------------------- 只设置1次订单
如果(TradeAllow)
{
//----------------------- If NO TRADE
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point, SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green) 。
EntryAllow = false;
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- 追踪止损部分
如果(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
如果(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol()&&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType())。
返回(0)。
}
}
}
return(0);
}
//----------------------- END PROGRAM
//+------------------------------------------------------------------+
//|函数定义
//+------------------------------------------------------------------+
//----------------------- 资金管理功能
//----------------------- source : codersguru
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //正常账户
{
如果(lotMM < 0.1) lotMM = Lots;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
如果(lotMM > 1.0) lotMM = MathCeil(lotMM);
如果(lotMM>100)lotMM=100。
}
否则 //微型账户
{
如果(lotMM < 0.01) lotMM = Lots;
如果(lotMM > 1.0) lotMM = MathCeil(lotMM);
如果(lotMM > 100) lotMM = 100;
}
返回(lotMM)。
}
//----------------------- 基于符号和magicnumber函数的订单数量
int subTotalTrade()
{
符号
cnt,
total = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。
如果(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() &&&
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//----------------------- 删除订单功能
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol()==Symbol() &&)
OrderMagicNumber()==MagicNumber)
{
switch(OrderType())
{
// case OP_BUYLIMIT :
// case OP_BUYSTOP :
case OP_SELLLIMIT:
case OP_SELLSTOP :
OrderDelete(OrderTicket())。
}
}
}
}
//----------------------- 尾随止损功能
//----------------------- source : codersguru
//----------------------- MODIFIED :火车头
空白的subTrailingStop(int Type)
{
如果(Type==OP_BUY) //买入位置被打开
{
如果(Bid-OrderOpenPrice()>Point*TrailingStop &&)
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。
返回(0)。
}
}
if(Type==OP_SELL) // 卖出头寸已经打开
{
如果(OrderOpenPrice()-Ask>Point*TrailingStop)
{
如果(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。
返回(0)。
}
}
}
}
//-----------------------,根据符号和时间框架函数生成神奇数字。
//----------------------- source : pengie
//----------------------- MODIFIED :燃烧器
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
如果(符号 == "EURUSD")isymbol = 1。
else if (symbol == "GBPUSD") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4;
否则,如果(符号=="AUDUSD")isymbol=5。
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7;
else if (symbol == "EURJPY") isymbol = 8;
else if (symbol == "EURCHF") isymbol = 9;
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11;
else if (symbol == "GBPUSD") isymbol = 12;
else if (symbol == "GBPJPY") isymbol = 13;
else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15;
else if (symbol == "GBPCAD") isymbol = 16;
否则isymbol = 17。
如果(isymbol<10) MagicNumber = MagicNumber * 10;
返回(StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))。
}
//----------------------- 打印评论功能
//----------------------- source : codersguru
空白subPrintDetails()
{
string sComment = ""。
string sp = "----------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | " 。
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "。
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | "。
sComment = sComment + "MM=" + subBoolToStr(MM) + " | " 。
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
评论(sComment)。
}
//----------------------- boolen变量到字符串的函数
//----------------------- source : codersguru
string subBoolToStr ( bool value)
{
if(value) return ("True");
否则返回("False")。
}
//----------------------- end function
提前感谢。
琼乔。
能否请你附上mq4文件?这样测试起来非常困难