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

 
Askr:

ありがとうございます。

他にも、もしかしたら1)はブロッキングブローカーかもしれない、というのを見つけた。

https://www.mql5.com/ru/forum/38456/page127

https://www.mql5.com/ru/forum/304679

2)110%と70%が常に強くジャンプしているのを見たことがある、まだ数えたことがない。負荷と関係があるのかもしれませんが、私はそうは思いません。小さいものを開けたら、スペックのレバレッジが同じで、バランスもほぼ同じ。

信号に関する共通点はこれ
https://www.mql5.com/ru/forum/10603/page394
情報については

FAQ по сервису Сигналы
FAQ по сервису Сигналы
  • 2020.04.18
  • www.mql5.com
Узнать за 15 минут: смотри обучающие видео по торговым сигналам в MetaTrader 4 и MetaTrader 5 Здесь будут собраны и обработаны наиболее частые вопр...
 
Sergey Dzyublik:

MT5 (build 2390) で、クラス構造の 記述に含まれる中括弧が正しくカウントされない不具合を修正しました。

投稿ありがとうございます、修正しました

 

というわけです。

   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction==0?0:direction>0?30:-30);

じゃなくて

   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction*30);

方向 -1; +1; 0

 
Igor Zakharov:

というわけです。

じゃなくて

方向 -1; +1; 0

というわけで

ObjectSetDouble (0,name,OBJPROP_ANGLE,( direction==0?0:direction>0?30:-30));
 
Alexey Viktorov:

そして、このように。

も動作しますが、2番目のオプションは動作しません。

 
   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction*30.0);
を int で宣言しています。それが、あなたの手に入るのです。最近、多くの機能が値についてかなり細かくなってきています。変換で確保したほうがいい。
私自身、最近そのような問題に直面しました。以前は何の問題もなかったのですが。しかし、コードを修正するように言われ、ダブルにキャストするまではまともに動こうとしなかったのです。
 
Konstantin Nikitin:
持っている方向はintで宣言されています。それが、あなたの手に入るのです。最近、多くの機能が値についてかなり細かくなってきています。変換を大事にしたほうがいい。
私自身、最近そのような問題に直面しました。以前は何の問題もなかったのですが。しかし、コードの修正を依頼され、ダブルに持っていくまでまともに動こうとしなかった。

はい、intです。 しかし、掛け算です。整数では、30*1=30でもあります。数年前のビルドでは、この30個がピッキングによって決定されたので、2番目のバリエーションでも問題なく動作したことを100%確信しています。

は、MT5のもう一つの「機能」のような気がします...。少なくともブロックは装飾的ですが、どこかにautolotやstoplossのような場合 - 悲しみが起こるかもしれない - 私はしばしば-1によって乗算することによって逆にして...

ありがとう、別の松葉杖を使うよ...。

 
Igor Zakharov:

も動作しますが、2番目のオプションは動作しません。

ああ、うっかりして間違ったコードをコピーしてしまった。

Konstantinの言う通り、なぜdoubleを期待するところにintを置くのか...。これはmql5の特徴ではなく、オーダーに慣れるための試行錯誤なのです。

 

よろしくお願いします。

インジケータがarray out of rangeエラーで投げ出される。

このコードでは、バッファを定義しています。

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_width1 1

#property indicator_plots  1 // количество графических построений

#property indicator_type1   DRAW_ARROW


グローバル変数の 宣言

double Buf1[];

double Buf2[];

Init()の中で、プロパティを定義しています。

    PlotIndexSetInteger(0,PLOT_ARROW,code); 

//--- установим пустое значение 

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   SetIndexBuffer(0,Buf1,INDICATOR_DATA);

   PlotIndexSetString(0, PLOT_LABEL, "Break");



//----

   PlotIndexSetInteger(1,PLOT_ARROW,code);  

//--- установим пустое значение 

   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);

   SetIndexBuffer(1,Buf2,INDICATOR_CALCULATIONS);

   PlotIndexSetString(1, PLOT_LABEL, "Break");


OnCalculate()では、条件であるup変数を定義しています。

もし、それが真であれば、次のコードが実行されます。

  i=nPoint1; BreakUp=false; BreakDn=false;
  
while(i>=0 && BreakUp==false && BreakDn==false)
  {              Print("i  ",i);                 tmp=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i);        tmp1=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i)-resultL;        if(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits()) && NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                   BreakUp=true;          if(channelbreak) Buf1[i]=tmp;          Comm="\nПробой вверх на уровне " + DoubleToString(tmp,Digits());         }        else        if(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                          BreakDn=true;          if(channelbreak) Buf1[i]=tmp1;          Comm="\nПробой вниз на уровне "+DoubleToString(tmp1,Digits());         }        else        if(NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                   BreakUp=true;          if(channelbreak) Buf1[i]=tmp;          Comm="\nПробой вверх на уровне "+DoubleToString(tmp,Digits());         }        else Comm="\nПробоя канала нет";        //i--;       }     } Ошибка происходит при входе в цикл while при присвоении значения переменной значению буфера. Проверка на размер массива буфера выдает ноль. Т.е. буфер не инициализируется. Всю голову сломал, не могу понять почему. В чем затык?
nPoint1 - это индекс бара (сдвиг от нулевого).
削除済み  
Ilyas:

インジケーターのデバッグ中に、このインジケーターの値が開いたチャートに 表示されないのは正常なことなのか、明らかにしてください。すなわち、例えば、デバッガでMACDを開く。バッファに値を書き込むサイクルでブレークポイントを設定しました。ChartRedraw()書き込み後の値。値が書き込まれた後、この値が一度にチャートに表示されることを期待しますが、空のウィンドウが表示されるだけです。

ビルド2380 x64。