エラー、バグ、質問 - ページ 3076 1...306930703071307230733074307530763077307830793080308130823083...3185 新しいコメント 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 #:とても不思議な名前ですね。デコンパイルのようです。他のコード、つまり自分で書いたコードをもっと見せてください。 Expert Advisor のすべてを iFunctionExample() という関数に分割し、int 型は iFE1,iFE2,iFE3 という変数、double 型は dFE1, dFE2, dFE3 という変数に分割しているのです。 これによって、すべてのものがどこから来たのかがわかりやすくなりました。 Vladimir Karputov 2021.08.31 18:51 #30755 Yury Lemeshev #:Expert Advisorでは、iFunctionExample()という関数と、intなら iFE1、iFE2、iFE3、doubleならdFE1、dFE3という 変数ですべてを分割しています。 この方が出てくるものがわかりやすいんです。 オッケーです。このように明確になり、正しいコードの取得を始めることができ、ありがとうございました。 Maxim Kuznetsov 2021.08.31 19:25 #30756 Yury Lemeshev #:同時に2つ以上の注文をこなしている。グリッド私は、条件付きエントリーポイントの下か上の価格をチェックします。条件付きエントリーポイントは、もともと配列の中にありましたが、今はグローバルなものの中にあります。そして、桁が入れ替わっていることが判明するのですが、入れ替わりは神頼みです。比較さえ正しく行われれば。でも、代用品も不具合。 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 GBPUSD買い 1.3098 ちょうど6:34:15に、開くべきでない取引の開始があります。 テスターで私のコードを確認してください。最新のアップデート後、テスターが正常に動作していないようです。 ファイル: du8ozf0qs9.png 67 kb 1...306930703071307230733074307530763077307830793080308130823083...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
最初の質問:このコードは自分で書いて、これらの変数名をつけたのですか?
はい。
はい。
とても不思議な名前ですね。デコンパイルのようです。もっと他のコード、つまり自分で書いたコードも見せてください。
とても不思議な名前ですね。デコンパイルのようです。もっと他のコード、つまり自分で書いたコードも見せてください。
とても不思議な名前ですね。デコンパイルのようです。他のコード、つまり自分で書いたコードをもっと見せてください。
Expert Advisor のすべてを iFunctionExample() という関数に分割し、int 型は iFE1,iFE2,iFE3 という変数、double 型は dFE1, dFE2, dFE3 という変数に分割しているのです。 これによって、すべてのものがどこから来たのかがわかりやすくなりました。
Expert Advisorでは、iFunctionExample()という関数と、intなら iFE1、iFE2、iFE3、doubleならdFE1、dFE3という 変数ですべてを分割しています。 この方が出てくるものがわかりやすいんです。
オッケーです。このように明確になり、正しいコードの取得を始めることができ、ありがとうございました。
同時に2つ以上の注文をこなしている。グリッド私は、条件付きエントリーポイントの下か上の価格をチェックします。条件付きエントリーポイントは、もともと配列の中にありましたが、今はグローバルなものの中にあります。
そして、桁が入れ替わっていることが判明するのですが、入れ替わりは神頼みです。比較さえ正しく行われれば。でも、代用品も不具合。
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 GBPUSD買い 1.3098
ちょうど6:34:15に、開くべきでない取引の開始があります。
テスターで私のコードを確認してください。最新のアップデート後、テスターが正常に動作していないようです。