编码帮助 - 页 507

 
tristantsh:
谢谢mntiwana和malden。但为什么我必须再次购买?你能在信息中发送这些指标吗?

请将您购买该指标时收到的带有链接的原始电子邮件发送至support@forex-tsd.com,如果一切正常,您将收到更新版本。

 

好吧,Mlanden.但NMC之前的指标看起来比NMC之后有趣。这只是我的感觉吗?

 
tristantsh:
好的,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

提前感谢。

 

毫升登。

希望你一切顺利。以下是编译时出现的两个错误,请协助。

附加的文件:
 
candyman752:
mladen,希望你一切顺利。以下是编译时出现的两个错误。

candyman752

现在试试:rstochalert-4tf_1.mq4

附加的文件:
 

最亲爱的MLADEN。

(我的问题总是关于修理的帮助而不是编码的帮助)

我有一个请求,希望能理解.....,请看我添加的两张图片,第一张是有1个错误和2个警告,涉及第70和72行....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行的第二个警告仍然存在...如果保持原样,功能 上没有问题吗?

问候

mntiwana

附加的文件:
 
mntiwana:
亲爱的MLADEN,

(我的问题总是关于修理的帮助而不是编码的帮助)

我有一个请求,希望能够理解.....,请看我添加的两张图片,第一张图片是关于第70和72行的1个错误和2个警告....,你可以在第二张图片中看到,我替换了1个错误和1个警告......,我的问题是...这样做对吗....,第二个问题是关于第80行仍然存在的第二个警告...如果保持现状,功能上没有问题吗?

问候

mntiwana

mntiwana

这样就没有问题了。你做了修改。

 
mladen:
mntiwana 这样一来,一切都好了。你做了修改,OK

非常感谢伟大的老板对一个好奇的学生的鼓励。

我最好的问候

 
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文件?这样测试起来非常困难