MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1434

 
Fast235:

というのは、私の場合です。

コンパイル時にすべてのドットがチャートに配置されるまで余分なタイムラグが発生する

必要であれば(例えば再コンパイル)、OnDeinit でターミナル変数 expetname.deinitreason.ChartId() を作成し、フラグを一時的に与え、そこに理由コードを入れてください。関連データも同様です(必要な場合もあります)。

OnInitで - 変数が存在するかどうかを確認し、その値で動作します。

で、その変数を削除してください。

---

ヒント - 異常終了は同じ方法でキャッチされますが、逆です :-)OnInitでは変数のチェックと作成、OnDeinitでは変数の削除を行う。クリティカルエラーが 発生し、EA/端末がクラッシュしただけの場合は、変数が残ります。

 
Maxim Kuznetsov:

必要であれば(再コンパイルなど)、OnDeinitでターミナル変数expetname.deinitreason.ChartId()を作成し、フラグtemporaryを与え、そこに理由コードを配置します。関連データも同様です(必要な場合もあります)。

OnInitで - 変数が存在するかどうかを確認し、その値で動作します。

で、その変数を削除してください。

---

ヒント - 異常終了は同じ方法でキャッチされますが、逆です :-)OnInitでは変数のチェックと作成、OnDeinitでは変数の削除を行う。クリティカルエラーが 発生し、EA/端末がクラッシュしただけの場合は、変数が残ります。

私はファイルやグローバル変数に精通しているので、これを作成する価値はありません、多分開発者はコンパイルから- 0を削除し、あるいは端末が開始されたという状態を追加します、例えば、私は入力の代わりにマルチシンボルの履歴ローダーを追加することができます。

 

皆さん、こんにちは! キャンドルの向き(上か下か)によって、キャンドルの色、ボリュームを変えるというアイデアです。しかし、最後のローソクは、時間の経過とともにローソクの方向が変化するため、異なる色になる。そして、時間が経つと、すべてのキャンドルが異なる色になります。問題は、最後のろうそくの色を変えて、他のろうそくを変えない方法です。あるいは、別のアイデアも。



//+------------------------------------------------------------------+
//|                                      VSA_Volume_Color            |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3

//////////////
datetime PrevTime = 0;
double iVolume_UP[];
double iVolume_DWN[];
double iVolume_NULL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(5);
//--- indicator buffers mapping
   SetIndexBuffer(0, iVolume_UP);
   SetIndexBuffer(1, iVolume_DWN);
   SetIndexBuffer(2, iVolume_NULL);
//---
   SetIndexStyle(0, DRAW_HISTOGRAM,EMPTY,2,clrGreen);
   SetIndexStyle(1, DRAW_HISTOGRAM,EMPTY,2,clrWhite);
   SetIndexStyle(2, DRAW_HISTOGRAM,EMPTY,2,clrRed);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int i = 0, counted_bars = IndicatorCounted();
   i = Bars - counted_bars - 1;
   if(counted_bars < 0)
      return(-1);
//---
   if(counted_bars > 0)
      counted_bars--;
//--- return value of prev_calculated for next call
///////////
   while(i >= 0)
     {
      if(Close[i] > Open[i])
         iVolume_UP[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] < Open[i])
         iVolume_DWN[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] == Open[i])
         iVolume_NULL[i] =  iVolume(NULL, 0, i) * 1.0;
      i--;
     }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   return(rates_total);
  }
//+------------------------------------------------------------------+
ありがとうございました。
 

不要なバッファをリセットする

iVolume_UP[i]=EMPTY_VALUE;
 

link to the separate topic -SERIES_LASTBAR_DATEを 経由した新しいバー。

シグナルはカスタムイベントを通じてインジケータから送られ、SERIES_LASTBAR_DATEを 使用して新しいバーをチェックします。

印刷では前のバーのデータではなく、新しい...、 7文字の合計で約50取引は、そのようなスリップ、あなたは何を見ることができ、任意のアイデア? 150をピン。

Ryzen 3700x プロセッサー 16スレッド

----

同じようなマルチシンボル方式を使う場合、2、3台の端末でリアルタイムに試しましたが、例えばM1では、1日40~50回の取引で、このようにスキップするのに数時間から半日待ちます。

プロセッサの負荷はロボットの数%で、ほとんどスリープ状態。

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
 

30~50で1トレード、よし、黒字で引けるか黒字で引けるか、でも

私は総利益を計算するシステムを持っていますが、これはかなり厄介で、次のシグナルではなく、今このトレードに関与する必要があります。

5年間はもっと深く掘り下げることができます。

イベントモデルが曲がって いるのなら、開発者に知らせて破棄してください。spyの初期の投稿から判断すると、異なるバリエーションがテストされ、散発的にミスもあったのでは?
 
Aleksei Stepanenko:

不要なバッファをリセットする

素晴らしい。すべてうまくいく)。ありがとうございました。
 
ArraySetAsSeries(Buffer,true)関数を適用した場合、
、インデックスだけが展開されるのでしょうか?それとも、バッファの値も展開されるのでしょうか?
 
Roman:

ArraySetAsSeries(Buffer,true)関数を適用した場合、 、インデックスだけが展開されるのでしょうか?それとも、バッファの値も展開されるのでしょうか?
trueの場合、インジケータバッファのゼロバーがチャート上の一番右のバーとなります。falseの場合、一番左のバーとなる。
他にはありません。
 
Artyom Trishkin:
trueの場合、バッファのゼロバーがチャートの一番右に表示されます。falseの時は一番左です。
それだけなんです。

ありがとうございます。
アーテム もう1つ教えてください。
機能

ChartSetInteger(ChartID(), CHART_SHOW, false)
メインチャートウィンドウ、およびインストールされているインジケータのサブウィンドウを非表示にします。
メインチャートウィンドウだけを隠すにはどうしたらいいですか?同時に、インジケーターサブウィンドウは表示されたままにしておきます。