错误、漏洞、问题 - 页 3076 1...306930703071307230733074307530763077307830793080308130823083...3184 新评论 Yury Lemeshev 2021.08.31 18:42 #30751 Vladimir Karputov #:第一个问题:这段代码是你自己写的,并且给了这些变量名? 是的。 Vladimir Karputov 2021.08.31 18:43 #30752 Yury Lemeshev #:是的。 非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。 Yury Lemeshev 2021.08.31 18:47 #30753 Vladimir Karputov #:非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。 int intLevelOrderProfit() { int iLOP,iL; ProfitCycle=GlobalVariableGet("["+MAGICs+"] Profit Cycle"); iL=GlobalVariableGet("["+MAGICs+"] Level Orders")-1; ArrayResize(LOP,GlobalVariableGet("["+MAGICs+"] Level Orders")-1); int LOPc;LOPc=0; for(i=0; i<GlobalVariablesTotal(); i++) { if(StringFind(GlobalVariableName(i),"["+MAGICs+"] Level Order #")!=-1) { iLOP=GlobalVariableGet(GlobalVariableName(i)); if(iLOP<GlobalVariableGet("["+MAGICs+"] Level Orders")) { /*MT5*/if(PositionSelectByTicket(StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))))==true) ///*MT4*/if(OrderSelect(StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))),SELECT_BY_TICKET,MODE_TRADES)==true) { LOPc++; ArrayFill(LOP,(iLOP-1)*5+0,1,MAGICs); /*MT5*/ArrayFill(LOP,(iLOP-1)*5+1,1,LOP[iLOP-1][1]+PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP)); ///*MT4*/ArrayFill(LOP,(iLOP-1)*5+1,1,LOP[iLOP-1][1]+OrderProfit()+OrderSwap()+OrderCommission()); if(LOPc==1){ArrayFill(LOP,((iLOP-1)*5)+3,1,StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))));} if(LOPc==2){ArrayFill(LOP,((iLOP-1)*5)+4,1,StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))));} if(LOPc==2){LOPc=0;} } } } } if(ArraySize(LOP)>0) { int iLOPP; iLOPP=Profit; if(CloseLevelOrders==ECLO2){iLOPP=Profit*(GlobalVariableGet("["+MAGICs+"] Level Orders"));} for(i=0; i<ArraySize(LOP)/5; i++) { if(NormalizeDouble(LOP[i][0],0)==MAGICs) { if((-LOP[i][1])<(-iLOPP*2) && (-LOP[i][1])<(-LOP[i][2]*2)) {ArrayFill(LOP,(i*5)+2,1,(LOP[i][1])/2);} if(LOP[i][1]>iLOPP && LOP[i][1]<=LOP[i][2]) { if(LOP[i][3]>0) { ticket=LOP[i][3];Print("-673- Closing by profit "+(LOP[i][2])+" ticket "+ticket);intClosePosition();CloseMode="CloseOneMagic";intDeleteGlobalVariables();GlobalVariableSet("["+MAGICs+"] Profit Cycle",LOP[i][2]/2+ProfitCycle); } if(LOP[i][4]>0) { ticket=LOP[i][4];Print("-677- Closing by profit "+(LOP[i][2])+" ticket "+ticket);intClosePosition();CloseMode="CloseOneMagic";intDeleteGlobalVariables();GlobalVariableSet("["+MAGICs+"] Profit Cycle",LOP[i][2]/2+ProfitCycle); } GlobalVariableSet("["+MAGICs+"] INDEX",GlobalVariableGet("["+MAGICs+"] INDEX")/DeMultiplicationVoltage); //Edition 26082021 ArrayFill(LOP,(i*5)+2,1,0); } } ArrayFill(LOP,(i*5)+0,1,0); ArrayFill(LOP,(i*5)+1,1,0); ArrayFill(LOP,(i*5)+3,1,0); ArrayFill(LOP,(i*5)+4,1,0); } } return(0); } Yury Lemeshev 2021.08.31 18:50 #30754 Vladimir Karputov #:非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。 我把我的专家顾问中的所有东西都分为函数,iFunctionExample(),以及代表int的 变量iFE1,iFE2,iFE3和代表double的变量dFE1, dFE2, dFE3。这使我更容易理解所有东西的来历。 Vladimir Karputov 2021.08.31 18:51 #30755 Yury Lemeshev #:在我的专家顾问中,我用函数划分一切,iFunctionExample(),在这些函数中,有变量iFE1,iFE2,iFE3代表int,而dFE1, dFE2, dFE3 代表double。对我来说,这样更容易理解其中的内容。 好的。谢谢你的澄清,也谢谢你开始弄清代码。 Maxim Kuznetsov 2021.08.31 19:25 #30756 Yury Lemeshev #:我同时在处理两个或更多的订单。格。我检查低于或高于条件进入点的价格。条件进入点原来是在数组中,现在是在全局的。而事实证明,有一个数字的交换,但上帝禁止交换。只要正确地进行比较就可以了。但替换的故障也是如此。 我看到SymbolInfoBid(name,SYMBOL_BID)可能会返回0或EMPTY_VALUE,所以值得检查它是否有效。 但双重比较如果(A>B && B-A<0)读起来相当有趣:"它比B多吗? 即使如此? 不要害怕使用日志--打印你的变量,看看到底发生了什么。 PS/ 当然,变量名是个麻烦事......你怎么读和写这样的代码:-),最重要的是记住 Yury Lemeshev 2021.08.31 19:31 #30757 Maxim Kuznetsov #:SymbolInfoBid(name,SYMBOL_BID)可能会返回0或EMPTY_VALUE,值得检查它是否正确。但双重比较如果(A>B && B-A<0)读起来相当有趣:"它比B大吗? 即使如此?不要害怕使用日志--打印你的变量,看看到底发生了什么。PS/ 当然,变量名是个麻烦事......你怎么读和写这样的代码:-),最重要的是记住 我将编写一个EA,其中这个错误应该是很明显的,否则我不会遇到它。我以后会写到。 B-A<0的额外检查,以确保函数不被击中,但其他字符采取的数据绕过了这个检查。 Yury Lemeshev 2021.08.31 21:35 #30758 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #property version "1.00" #property strict #property script_show_inputs input int Magic =100; input double Volume =0.01; input bool EURUSD =true; input bool EURGBP =true; input bool GBPUSD =true; input double Grid =0.5; extern int Slippage =5; int i,type,ticket,MagiX; double price; string symbol,iOrderComment; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int iGridCreate() { double dGC1; dGC1=SymbolInfoDouble(symbol,SYMBOL_BID); for(i=0; i<25; i++) {GlobalVariableSet(symbol+" BUY "+(1001+i),NormalizeDouble(dGC1=dGC1-(dGC1/100*Grid),SymbolInfoInteger(symbol,SYMBOL_DIGITS)));} dGC1=SymbolInfoDouble(symbol,SYMBOL_BID); for(i=0; i<25; i++) {GlobalVariableSet(symbol+" SELL "+(1001+i),NormalizeDouble(dGC1=dGC1+(dGC1/100*Grid),SymbolInfoInteger(symbol,SYMBOL_DIGITS)));} return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int iMagic() { MagiX=Magic; return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int iGridOpen() { double dGO1; string sGO1; for(i=0; i<GlobalVariablesTotal(); i++) { sGO1=GlobalVariableName(i); symbol=StringSubstr(sGO1,0,StringFind(sGO1," ",0)); dGO1=SymbolInfoDouble(symbol,SYMBOL_BID); if(StringFind(sGO1,"BUY",0)!=-1) { if(dGO1<GlobalVariableGet(sGO1)) { type=0; iOrderComment=dGO1+"<"+GlobalVariableGet(sGO1); intOpenPosition(); GlobalVariableDel(sGO1); } } if(StringFind(sGO1,"SELL",0)!=-1) { if(dGO1>GlobalVariableGet(sGO1)) { type=1; iOrderComment=dGO1+">"+GlobalVariableGet(sGO1); intOpenPosition(); GlobalVariableDel(sGO1); } } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int intOpenPosition() { MqlTradeRequest TradeRequest={}; MqlTradeResult TradeResult={}; ZeroMemory(TradeRequest);ZeroMemory(TradeResult); TradeRequest.action=TRADE_ACTION_DEAL; TradeRequest.symbol=symbol; TradeRequest.volume=Volume; TradeRequest.type=type; if(type==0){price=SymbolInfoDouble(symbol,SYMBOL_ASK);} if(type==1){price=SymbolInfoDouble(symbol,SYMBOL_BID);} TradeRequest.price=price; TradeRequest.deviation=Slippage; TradeRequest.magic=MagiX; TradeRequest.comment=iOrderComment; if(!OrderSend(TradeRequest,TradeResult)){Print("110");intOpenPosition();} else{ticket=TradeResult.deal;} return(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { iMagic(); iGridOpen(); if(EURUSD==true) { symbol="EURUSD"; SymbolSelect(symbol,true); if(GlobalVariablesTotal()==0){iGridCreate();} for(i=0; i<GlobalVariablesTotal(); i++) { if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;} } if(i==GlobalVariablesTotal()){iGridCreate();} } if(EURGBP==true) { symbol="EURGBP"; SymbolSelect(symbol,true); if(GlobalVariablesTotal()==0){iGridCreate();} for(i=0; i<GlobalVariablesTotal(); i++) { if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;} } if(i==GlobalVariablesTotal()){iGridCreate();} } if(GBPUSD==true) { symbol="GBPUSD"; SymbolSelect(symbol,true); if(GlobalVariablesTotal()==0){iGridCreate();} for(i=0; i<GlobalVariablesTotal(); i++) { if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;} } if(i==GlobalVariablesTotal()){iGridCreate();} } } Yury Lemeshev 2021.08.31 21:41 #30759 6、7、8号票还没有收到他们的数据。如果我写错了什么,请你告诉我哪里错了,我将非常感激。然而,我试着做了许多改变,错误仍然存在。 我在可视化模式的MT5测试器中看到了这个问题。 附加的文件: bhshrzc2g7.png 27 kb Yury Lemeshev 2021.09.01 11:34 #30760 试图解决这个问题。 注意到以下情况。 测试员停止写日志,不管是什么类型。而在这一点上,有一个崩溃,元气大伤。 2020.08.17 06:12:21 EURGBP 0.90496 2020.08.17 06:12:21 EURGBP买入0.90496 2020.08.17 06:47:12 GBPUSD 1.3098 2020.08.17 06:47:12 英镑兑美元买入 1.3098 就在6:34:15,有一笔不应该开仓的交易。 请在测试器上检查我的代码。在我看来,在最新的更新之后,测试器似乎不能正常工作。 附加的文件: du8ozf0qs9.png 67 kb 1...306930703071307230733074307530763077307830793080308130823083...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
第一个问题:这段代码是你自己写的,并且给了这些变量名?
是的。
是的。
非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。
非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。
非常奇怪的名字--看起来像是反编译的。请多展示你的其他代码--你自己写的代码。
我把我的专家顾问中的所有东西都分为函数,iFunctionExample(),以及代表int的 变量iFE1,iFE2,iFE3和代表double的变量dFE1, dFE2, dFE3。这使我更容易理解所有东西的来历。
在我的专家顾问中,我用函数划分一切,iFunctionExample(),在这些函数中,有变量iFE1,iFE2,iFE3代表int,而dFE1, dFE2, dFE3 代表double。对我来说,这样更容易理解其中的内容。
好的。谢谢你的澄清,也谢谢你开始弄清代码。
我同时在处理两个或更多的订单。格。我检查低于或高于条件进入点的价格。条件进入点原来是在数组中,现在是在全局的。
而事实证明,有一个数字的交换,但上帝禁止交换。只要正确地进行比较就可以了。但替换的故障也是如此。
我看到SymbolInfoBid(name,SYMBOL_BID)可能会返回0或EMPTY_VALUE,所以值得检查它是否有效。
但双重比较如果(A>B && B-A<0)读起来相当有趣:"它比B多吗? 即使如此?
不要害怕使用日志--打印你的变量,看看到底发生了什么。
PS/ 当然,变量名是个麻烦事......你怎么读和写这样的代码:-),最重要的是记住
SymbolInfoBid(name,SYMBOL_BID)可能会返回0或EMPTY_VALUE,值得检查它是否正确。
但双重比较如果(A>B && B-A<0)读起来相当有趣:"它比B大吗? 即使如此?
不要害怕使用日志--打印你的变量,看看到底发生了什么。
PS/ 当然,变量名是个麻烦事......你怎么读和写这样的代码:-),最重要的是记住
我将编写一个EA,其中这个错误应该是很明显的,否则我不会遇到它。我以后会写到。
B-A<0的额外检查,以确保函数不被击中,但其他字符采取的数据绕过了这个检查。
6、7、8号票还没有收到他们的数据。如果我写错了什么,请你告诉我哪里错了,我将非常感激。然而,我试着做了许多改变,错误仍然存在。
我在可视化模式的MT5测试器中看到了这个问题。
试图解决这个问题。
注意到以下情况。
测试员停止写日志,不管是什么类型。而在这一点上,有一个崩溃,元气大伤。
2020.08.17 06:12:21 EURGBP 0.90496
2020.08.17 06:12:21 EURGBP买入0.90496
2020.08.17 06:47:12 GBPUSD 1.3098
2020.08.17 06:47:12 英镑兑美元买入 1.3098
就在6:34:15,有一笔不应该开仓的交易。
请在测试器上检查我的代码。在我看来,在最新的更新之后,测试器似乎不能正常工作。