エラー、バグ、質問 - ページ 811 1...804805806807808809810811812813814815816817818...3185 新しいコメント Alexey Da 2012.08.16 14:08 #8101 abeiks: こんにちは。 MQL5を使おうとしているのですが、どうすればいいですか?exp_tema.mq5を逆アセンブル し、コードを修正しました。今、私は各ローソク(最後の20)のログMAで印刷する必要があります。しかし、なぜログにいくつかのエントリが欠落しているのか理解できない。ログにma[3]がない場合、ma[13]がないことに 気がつきました。なぜ、このようなことが起こるのでしょうか?そこでのエラーはどこにあるのでしょうか? これです。if(CopyBuffer(Handle[Number],0,0,20,ma)<0) は明らかにチェックが抜けています。BarsCalculated>= 20CopyBuffer==20 ファイル: exp_tema.mq5 27 kb Fia 2012.08.16 14:12 #8102 sergeev:動画は必要ありません。コード内で詳細なPrintを行い、中間変数が何に等しいかをログで確認できるようにします。#property copyright "Copyright 2011, "#property link "http://www.mql5.com"#property version "1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+ int OnInit() {//--- double Vhod=0; Print("Начало_Vhod="+DoubleToString(Vhod,2)); Vhod=linfunc(15); Print("Конец_Vhod="+DoubleToString(Vhod,2));//--- return(0); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+ void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+ void OnTick() {//--- }//+------------------------------------------------------------------+ double linfunc(double b) // имя функции и список параметров { double a=1; while((a/b)<1 && !IsStopped())//------------------- { Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2)); a=a+1; } Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2)); Print("a+b="+DoubleToString(a+b,2)); double f=a+b; // составной оператор return(f); // возвращаемое значение }//+------------------------------------------------------------------+以下はそのコードです。以下はそのプリントです。GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00 FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07 JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13 CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20 EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27 KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33 PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40 PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47 HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53 MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60 JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67 FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73 OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80 MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87 KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93 EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00 DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00 RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00 NH 2 1 (EURUSD,M1) 18:11:24 デバッグを終了しました。 Errors, bugs, questions trade.PositionClose() is not working Bar Alexey Da 2012.08.16 14:39 #8103 Fia:デバッグEX5をエディタからではなく、ターミナルから直接実行しても、同じ結果になるのでしょうか?デバッグEX5を添付していただけますか? Vladimir Gomonov 2012.08.16 14:43 #8104 Fia:彼のプリントはこちらGM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00 FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07 JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13 CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20 EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27 KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33 PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40 PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47 HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53 MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60 JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67 FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73 OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80 MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87 KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93 EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00 DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00 RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00 NH 2 1 (EURUSD,M1) 18:11:24 デバッグを終了しました。再生されない。2012.08.16 18:42:34 Test_001 (GBPUSD,M15) Конец_Vhod=30.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) a+b=30.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=15.00, b=15.00, a/b=1.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=14.00, b=15.00, a/b=0.93 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=13.00, b=15.00, a/b=0.87 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=12.00, b=15.00, a/b=0.80 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=11.00, b=15.00, a/b=0.73 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=10.00, b=15.00, a/b=0.67 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=9.00, b=15.00, a/b=0.60 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=8.00, b=15.00, a/b=0.53 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=7.00, b=15.00, a/b=0.47 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=6.00, b=15.00, a/b=0.40 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=5.00, b=15.00, a/b=0.33 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=4.00, b=15.00, a/b=0.27 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=3.00, b=15.00, a/b=0.20 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=2.00, b=15.00, a/b=0.13 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=1.00, b=15.00, a/b=0.07 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) Начало_Vhod=0.00 Win7 x64MT5 x64ビルド687 Fia 2012.08.16 14:50 #8105 alexvd:デバッグEX5をエディタからではなく、ターミナルから直接実行しても、同じ結果になるのでしょうか?デバッグEX5を添付できますか?面白いことに、テスターから実行すると30、EAとして実行すると印刷でも30が出ます。デバッグに戻ると、0が返ってくる。メタドライバ どのような作りで、どのような種類(失礼)で効果があったのでしょうか。この奇跡を再現できない人がいるならば、やはりビデオを並べるべきだろう。 ファイル: 1.ex5 5 kb Nauris Zukas 2012.08.16 15:39 #8106 alexvd:そこそこ 明らかにチェックが甘いBarsCalculated >= 20CopyBuffer==20ありがとうございます、追加してみます。 Fia 2012.08.16 16:36 #8107 動画はこちら(ただし、720以上の解像度を選択しないと、すべてがソープになります)。https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.beWin7 64bit MT5 687ビルド調べたところ、returnが0になったときの効果は、デバッガでしか起きないようです。同時に、「ながらステップ」ボタンだけを使うと、うまくいくようです。ステップインボタンでwhileループに入り終了させると、出力が0になったままうまくいきません。一般的に、ビデオはすべてを示していますが、私は理解していないまで、どのようにあると何をすべきか(そして、なぜそれが唯一の私をそうですか?) Vladimir Gomonov 2012.08.16 16:50 #8108 Fia: Win7 64bit MT5 687ビルド 端末のビットレートは? Konstantin Chernov 2012.08.16 17:12 #8109 最適化中に理解不能な記号が表示される。垂直方向の最適化グラフタブでは、すべての値が-1になっています Nauris Zukas 2012.08.17 09:50 #8110 alexvd:そこそこ 明らかにチェックが甘いBarsCalculated >= 20CopyBuffer==20しかし、バッファについてはまだ問題があります。 読めばすべてがわかるのですが、コードでどのように実装すればよいのかがわかりません。もしご面倒でなければ、コードに挿入していただけませんでしょうか? 1...804805806807808809810811812813814815816817818...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
MQL5を使おうとしているのですが、どうすればいいですか?exp_tema.mq5を逆アセンブル し、コードを修正しました。今、私は各ローソク(最後の20)のログMAで印刷する必要があります。しかし、なぜログにいくつかのエントリが欠落しているのか理解できない。ログにma[3]がない場合、ma[13]がないことに 気がつきました。なぜ、このようなことが起こるのでしょうか?そこでのエラーはどこにあるのでしょうか?
これです。
は明らかにチェックが抜けています。
動画は必要ありません。
コード内で詳細なPrintを行い、中間変数が何に等しいかをログで確認できるようにします。
#property copyright "Copyright 2011, "
#property link "http://www.mql5.com"#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod=0;
Print("Начало_Vhod="+DoubleToString(Vhod,2));
Vhod=linfunc(15);
Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(double b) // имя функции и список параметров
{
double a=1;
while((a/b)<1 && !IsStopped())//-------------------
{
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
a=a+1;
}
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
Print("a+b="+DoubleToString(a+b,2));
double f=a+b;
// составной оператор
return(f); // возвращаемое значение
}
//+------------------------------------------------------------------+
以下はそのコードです。
以下はそのプリントです。
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 デバッグを終了しました。
デバッグEX5をエディタからではなく、ターミナルから直接実行しても、同じ結果になるのでしょうか?
デバッグEX5を添付していただけますか?
彼のプリントはこちら
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 デバッグを終了しました。
再生されない。
Win7 x64
MT5 x64ビルド687
デバッグEX5をエディタからではなく、ターミナルから直接実行しても、同じ結果になるのでしょうか?
デバッグEX5を添付できますか?
面白いことに、テスターから実行すると30、EAとして実行すると印刷でも30が出ます。
デバッグに戻ると、0が返ってくる。
メタドライバ
どのような作りで、どのような種類(失礼)で効果があったのでしょうか。
この奇跡を再現できない人がいるならば、やはりビデオを並べるべきだろう。
そこそこ
明らかにチェックが甘い
ありがとうございます、追加してみます。
動画はこちら(ただし、720以上の解像度を選択しないと、すべてがソープになります)。
https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be
Win7 64bit MT5 687ビルド
調べたところ、returnが0になったときの効果は、デバッガでしか起きないようです。
同時に、「ながらステップ」ボタンだけを使うと、うまくいくようです。
ステップインボタンでwhileループに入り終了させると、出力が0になったままうまくいきません。
一般的に、ビデオはすべてを示していますが、私は理解していないまで、どのようにあると何をすべきか(そして、なぜそれが唯一の私をそうですか?)
Win7 64bit MT5 687ビルド
最適化中に理解不能な記号が表示される。
垂直方向の最適化グラフタブでは、すべての値が-1になっています
そこそこ
明らかにチェックが甘い
しかし、バッファについてはまだ問題があります。 読めばすべてがわかるのですが、コードでどのように実装すればよいのかがわかりません。もしご面倒でなければ、コードに挿入していただけませんでしょうか?