エラー、バグ、質問 - ページ 133

 
Interesting:
発生を理解する限り、デモでもテスターでもそうですが...。
何それ、再起不能?
 
Dmitriy2:

そのため、ログに値を出力する際に、一度だけ(初めて)放物線関数、つまりCopyBufferが、エラー時にあるべき-1ではなく0を返します(本来はそうではないのですが、すべてのデータはそこにあり、すべてダウンロードされ、大きな多次元配列は なく、エラーは発生しません!)そしてこれはテスターでのみ、一度だけ発生するのです。これ以降はすべて正常に動作します。

基本的なコードでは、関数が何を返すかは気にしません。結局、トレードのリクエストになると、リクエストに対して受け取った値をユニバーサル関数でチェックし、すべてがOKならリクエストを送信し、OKでなければ-OKになるのを待ちます...」と。

放物線状の値を取得する関数で、以下のコードを試してみてください。

double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   int Parabolic=iSAR(Symbol(),период,step,maximum);
   int cb=CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   if(cb!=1) Print("BarsCalculated ",BarsCalculated(Parabolic),", CopyBuffer ", cb, ", ArrayValue ",ЗначениеParabolic[0]);
   return(ЗначениеParabolic[0]);
  }

ログに以下のような内容が表示されます。

2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1    SLпоПервойТочкеПараболика=true

なぜ-1ではなく0になるのか、その理由を説明します。

3回目のリピートです。データはあるが、その時点の指標値がまだ算出されていない可能性がある。ヘルプに書いてありますよ〜。

 
maryan.dirtyn:
再暗号化か発生か?
オーバークリはFCに悩まされ、MTはずっとアクセル全開。通常日はシングル、水曜日は×3(トリプルスワップの日を 明確にすべき)...。
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
FCは過剰蓄積に苦しみ、MTは生涯蓄積を続けてきた。通常日はシングル、水曜日は×3(トリプルスワップの日を 明確にすべき)...。
fcが何なのかわからない...ただ、チャンピオンシップでどうなるのか知りたい。
 
alexvd:

パラボリックの値を得るために、あなたの関数でこのコードを試してみてください。

ログにはおおよそ次のような出力が得られます。

これで、なぜ-1でなく0になるのかがわかります。

3回目もリピートします。データは存在するが、その時点の指標値がまだ計算されていない可能性がある。ヘルプに書いてありますよ!

その通り、CopyBufferのレスポンスではなく、パラボリックの値を取得しています...。

いい放物線関数を、あなたが提供したもの(プリント付き)に変更します。

forループの中でプリントを追加しています(ゼロプロテクトはしていません)。

if(НапрСигнала==ORDER_TYPE_BUY)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("бай, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iLow(PERIOD_CURRENT,i+1,1)<Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("бай, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД>ЗначениеSAR) //bay
         slтики=(int)NormalizeDouble((АСК-ЗначениеSAR)/ТИК,0);
     }
   if(НапрСигнала==ORDER_TYPE_SELL)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("селл, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iHigh(PERIOD_CURRENT,i+1,1)>Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("селл, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД<ЗначениеSAR) //sell
         slтики=(int)NormalizeDouble((ЗначениеSAR-БИД)/ТИК,0);
     }

テスターで実行する

JQ      0       Core 1  15:16:37        agent process started
NJ      0       Core 1  15:16:37        connecting to 127.0.0.1:3000
NJ      0       Core 1  15:16:39        connected
GP      0       Core 1  15:16:39        authorized (agent build 328)
LK      0       Tester  15:16:39        EURUSD,H1 (MetaQuotes-Demo): testing of Experts\Отладка.ex5 from 2010.01.01 00:00 to 2010.09.11 00:00 to be started
RH      0       Core 1  15:16:41        common synchronization completed
RS      0       Core 1  15:16:41        3124 bytes of account info loaded
RI      0       Core 1  15:16:41        3768 bytes of group info loaded
MN      0       Core 1  15:16:41        7170 bytes of tester parameters loaded
EL      0       Core 1  15:16:41        275 bytes of selected symbols loaded
IK      0       Core 1  15:16:41        expert file added: Experts\Отладка.ex5. 6597 bytes loaded
LE      0       Core 1  15:16:41        initial deposit 10000.00 USD, leverage 1:100
KO      0       Core 1  15:16:41        successfully initialized
RQ      0       Core 1  15:16:41        23 Kb of total initialization data received
KK      0       Core 1  15:16:41        performance: 72
HP      0       Core 1  15:16:41        EURUSD: symbol synchronized, 2904 bytes of symbol info received
RI      0       Core 1  15:16:43        EURUSD: load 27 bytes of history data to synchronize
MG      0       Core 1  15:16:43        EURUSD: history synchronized from 1993.05.13 to 2010.09.10
MP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CD      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ON      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ER      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
MG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IN      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
OE      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QS      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KJ      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EN      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0

というように、キャンセルを押すまでずっと

チャート上のExpert Advisor

PJ      0       Experts 15:27:14        expert Отладка (EURUSD,M20) removed
MR      0       Trades  15:27:18        '677265' : instant buy 0.10 EURUSD at 1.29697
EH      0       Trades  15:27:19        '677265' : accepted instant buy 0.10 EURUSD at 1.29697
GL      0       Trades  15:27:21        '677265' : order #1350474 buy 0.10 EURUSD at 1.29697 done
LH      0       Trades  15:27:21        '677265' : deal #1426626 buy 0.10 EURUSD at 1.29697 done (based on order #1350474)
LI      0       Experts 15:27:56        expert Отладка (EURUSD,M20) loaded successfully
IR      0       Trades  15:28:07        '677265' : instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
IM      0       Trades  15:28:08        '677265' : accepted instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
RK      0       Trades  15:28:10        '677265' : order #1350477 sell 0.10 EURUSD at 1.29690 done
RO      0       Trades  15:28:10        '677265' : deal #1426629 sell 0.10 EURUSD at 1.29690 done (based on order #1350477)

ろくごうきじ

Expertsタブの画像を見てください。エラーメッセージもありません。

放物線を数えることができ、すべてがうまく一致し、12番目の放物線で、サイクルを終了する...

 

昔、MQL5で「あの時」「あの時」と気付いたことがあるんです。ここやあそこのデータは計算できないかもしれない...。しかし、それはおかしい、あなたはそれを修正する必要があり、コードに松葉杖を書くことではありません

ちなみに、パラボリックに 限らず、他のインジケーターでも同じことが言えます。

 
maryan.dirtyn:
FCが何であるかは知らないが、チャンピオンシップでどのようになるかを知りたい。

FC - Forex Clubと言い、その端末はRumus2です。

チャンピオンシップのテストアカウントはお持ちですか?試してみると、すべてがクリアになる...。

 
Dmitriy2:

昔、MQL5で「あの時」「あの時」と気付いたことがあるんです。ここやあそこのデータは計算できないかもしれない...。しかし、それはおかしい、あなたはそれを修正する必要があり、コードに松葉杖を書くことではありません

松葉杖を書かずに直さないと...ちなみに、パラボリックに限らず、他の指標でも同じことです。

議論の掛け算はやめましょう。

このテーマは何度も議論されてきました。少し前にリベンジされました(https://www.mql5.com/ru/forum/1951)

Тестер стратегий. Помогите разобраться с ошибкой.
Тестер стратегий. Помогите разобраться с ошибкой.
  • www.mql5.com
mq5) handle индикатора объявляется как глобальная переменная, индикатор инициализируется в OnInit() и передается в функцию.
 

座って...見ている...

MQL5とMQL4が同じチームで書かれたなんて、絶対に信じないぞ((

MQ4 - フライング...

MQ5は子供の遊びです。悪気はないのですが......((

 
alexvd:

議論はやめましょう。

このテーマは何度も議論されてきました。少し前にリベンジされました(https://www.mql5.com/ru/forum/1951)

このスレッドを見ていないのですが・・・。おなじく

要は、あらゆる場面ですべての行にチェックを入れて、コードを混乱させたり、ごちゃごちゃさせたりするような愚かなことはしない、ということです。それが問題外なら...松葉杖が追加され、十分に大きなプロジェクトがようやく完全にやり直されて動き出す...。

そして、総じて、このやり方には驚かされるばかりです......。それは、このような質問が発生するのは初めてではないことが判明した(そして、私は将来的に他の人に発生すると確信している)、そして、このバグを回避するために行う必要があるかを説明するためにあなたと他の人の作業時間の多くを費やすためにすべての時間 "初めての" ...

そのスレッドで推奨されているTESTERに、Expert Advisorの起動時にSleep(1000)を1つだけ追加するだけです。

シェルが不具合を意味するようなことがあってはならないし、そのような不具合はコードで避けなければならない。そして、TERMINALは正常に正しく動作しており、NO ERRORS(この状況では)です。しかし、テスターの動作は端末の動作とは異なります。

ps EQUこんにちは:)