初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1238

 
Alexey Viktorov:

そして、セリフの最初の部分と質問全体は?

まあ、私たちはプログラマーですからね。枕元のグラスが満タンだったり空だったり...。

しかし、メインの指標計算のサイクルに、3つの可能なシナリオとその間に起こることを書きました。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

アルチョム・トリシキン さん 2020.08.06 15:17

rates_total - prev_calculates は非常に効率的なアルゴリズムです。

  • 0 の場合は、現在のバーで tick 単位で計算することを意味します。
  • 1の場合、新しいバーが あることを意味し、前のバーと現在のバーの2本が計算されます。
  • 1より大きい場合、履歴データの初回実行または変更を意味する
限界値を計算するのです。そして、リミットからゼロ以上までのループの中で、指標となるデータを計算する。そして、リミット=rates_total - prev_calculatesを計算するときに、何がリミットなのかを計算する。

4つ目のシチュエーションである氷点下は、かなり可能性があります。ただ、計算されたループの中で処理されていないだけです for(int i=limit; i>=0; i--) ...

ただ、考えたい人は少なく、大抵はコピー&ペーストするだけです。それに対応して、最初の起動と履歴の変更はlimit>1の時なので、そのような時の最初の起動について書き、prev_calculatedが0かどうかチェックしないようにします。

 
Сергей Таболин:

Alexeiさん、興味あります ))))しかし、エラーが表示されないのですそして、学ぶことは恥ずかしいことではありません。また、より賢い人や経験豊富な人がいれば、それも問題ないと思います。

ローソクの大きさの入力パラメータを大きくして、インジケータを実行したところ。もっと小さい燭台が欲しい。

ローソク足の価格は全てインジケーターバッファから 計算され、初期化されます。すべて正解です。しかし、レンダリングがない。その理由がわからない。

私はあなたに提案しました。

Alexey Viktorov:

.................................N数以降のバー、または少なくとも最後の閉じたバーを選択して開始します。試してみましたか?レンダリングはできますか?

そして、もう一度言いますが、少なくとも最後のクローズドバーを選択することから始めることをお勧めします。陽性反応が出たら、はじめて計算と条件に進みます。

 
Alexey Viktorov:

私はあなたに提案しました。

そして、少なくとも最後の閉店したバーを選ぶことから始めたらどうでしょう。陽性反応が出たら、はじめて計算と条件に進みます。

私はあなたを理解することはできませんが...どのバーを割り当てるか?私が作ったもの?それともチャート上?

チャート上にあるのなら、アプリオリにいらない。この指標は、どのタイムフレームでも同じと考えられます。

以前はH1で計算していましたが、今回はH4で計算します。結果は同じです。

2020.08.08 11:06:14.580 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора.
2020.08.08 11:06:14.789 newCandles (USDJPY,H4)  2019.01.02 06:00:00 >>> Свеча 00000 >> open = 109.419 hihg = 109.462 low = 105.388 close = 105.388 > Сформирована за 122162 тика.
2020.08.08 11:06:15.230 newCandles (USDJPY,H4)  2019.01.03 00:41:15 >>> Свеча 00001 >> open = 105.388 hihg = 109.388 low = 105.268 close = 109.388 > Сформирована за 1336258 тиков.
2020.08.08 11:06:19.056 newCandles (USDJPY,H4)  2019.01.17 21:50:34 >>> Свеча 00002 >> open = 109.388 hihg = 112.398 low = 105.388 close = 105.388 > Сформирована за 11546466 тиков.
2020.08.08 11:06:20.788 newCandles (USDJPY,H4)  2019.08.09 18:57:55 >>> Свеча 00003 >> open = 105.388 hihg = 109.388 low = 104.453 close = 109.388 > Сформирована за 5400916 тиков.
2020.08.08 11:06:22.592 newCandles (USDJPY,H4)  2019.11.07 17:57:24 >>> Свеча 00004 >> open = 109.388 hihg = 112.225 low = 105.384 close = 105.384 > Сформирована за 5555641 тик.
2020.08.08 11:06:22.725 newCandles (USDJPY,H4)  2020.03.06 11:47:26 >>> Свеча 00005 >> open = 105.384 hihg = 105.732 low = 101.377 close = 101.377 > Сформирована за 272724 тика.
2020.08.08 11:06:22.822 newCandles (USDJPY,H4)  2020.03.09 15:37:48 >>> Свеча 00006 >> open = 101.377 hihg = 105.378 low = 101.187 close = 105.378 > Сформирована за 314847 тиков.
2020.08.08 11:06:23.736 newCandles (USDJPY,H4)  2020.03.10 21:05:27 >>> Свеча 00007 >> open = 105.378 hihg = 109.385 low = 103.094 close = 109.385 > Сформирована за 2045775 тиков.
2020.08.08 11:06:27.124 newCandles (USDJPY,H4)  2020.03.19 04:13:11 >>> Свеча 00008 >> open = 109.385 hihg = 111.711 low = 105.385 close = 105.385 > Сформирована за 10250092 тика.
2020.08.08 11:06:27.296 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора закончен.
 
Сергей Таболин:

私はあなたを理解することはできませんが...どのバーを強調するのか?私の上に形成されたもの?それともチャート上?

チャート上にあるのなら、アプリオリにいらない。この指標は、どのタイムフレームでも同じと考えられます。

以前はH1で計算していましたが、今回はH4で計算します。結果は同じです。

アレクセイは、まずインジケータにロウソクを描かせるくらいはした方がいいと言ったんですね。そのまま。少なくとも現在のバーでは。もし、それができたら、理解への第一歩を踏み出したと考えよう。しかし、いろいろなパラメータを試して見つけるのではなく、自分の頭で考えることが望ましい。

ア・プリオリとの関係は?4つの値しかないロウソクを描けない人には、とても必要なものです。

 
Artyom Trishkin:

アレクセイは、まずインジケータをせめてローソク足だけでも描けるようにしろと言いましたね。そのまま。少なくとも現在のバーでは。なんとかできたら、理解への第一歩を踏み出したと考えましょう。しかし、いろいろなパラメータを試して見つけるのではなく、自分の頭で考えることが望ましい。

それが「アプリオリ」とどう関係があるのでしょうか。4つの値だけではロウソクを描けないので、本当に必要なのです。

了解です。そうします ...

 
フォーラムユーザーの皆様、こんにちは。信号の順次受信の方法を教えてください。例えば、最初に4hのタイムフレームから取得し、次に1時間のタイムフレーム、15分、最小値のみでエントリーするのですが?CodeBaseから コードを拝借しました。
//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool  SearchTradingSignals(void)
  {
   if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
      return(true);
//---
   double  ma[];
   MqlRates  rates_1[],rates_2[],rates_3[],rates_4[];
   ArraySetAsSeries(ma,true);
   ArraySetAsSeries(rates_1,true);
   ArraySetAsSeries(rates_2,true);
   ArraySetAsSeries(rates_3,true);
   ArraySetAsSeries(rates_4,true);
   int  start_pos=0,count=3;
   if(!iGetArray(handle_iMA,0,start_pos,count,ma) ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_1,start_pos,count,rates_1)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_2,start_pos,count,rates_2)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_3,start_pos,count,rates_3)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_4,start_pos,count,rates_4)!=count)
     {
      return(false);
     }
   int  size_need_position=ArraySize(SPosition);
   if(size_need_position>0)
      return(true);

   if((rates_1[0].open<rates_1[0].close) && (rates_2[0].open<rates_2[0].close) &&
      (rates_3[0].open<rates_3[0].close) && (rates_4[0].open<rates_4[0].close) && ma[2]<ma[1] && ma[1]<ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
     }
   if((rates_1[0].open>rates_1[0].close) && (rates_2[0].open>rates_2[0].close) &&
      (rates_3[0].open>rates_3[0].close) && (rates_4[0].open>rates_4[0].close) && ma[2]>ma[1] && ma[1]>ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+

Four Timeframes 2
Four Timeframes 2
  • www.mql5.com
На одном из таймфреймов (задается через параметр 'MA Trend ') создаётся трендовый индикатор iMA (Moving Average, MA). Именно этот индикатор будет работать в качестве трендового фильтра. Тренд определяется так: MA на трёх барах (#2, #1 и #0) имеет одно направление. Советник проверяет направление бара #0 (это самый правый бар, который Вы видите...
 
こんにちは。私は、mql5言語とmt5プラットフォームの両方をマスターしようと決心しました。テスターについて質問です。引用について質問です。Weltradeのプラットフォームにaudcadのペアを置いています。Expert Advisorに小さな情報パネルが あります。可視化モードでは、スプレッドが正しくない(非常に小さく、ユーロスプレッドに似ている)ことがわかります。会社(Veltrade)のテクニカルサポートに連絡し、mt4とmt5でスプレッドが違うのか聞いてみました。同じだと答えた。テスターに通信がない場合はどうすればよいですか?遺伝暗号を使って最適化しようとしたんです。CPUの負荷は100%で、数分の作業でパソコンがクラッシュしました(プロセッサはphenom II x4 955(4コア、3.2GHz)、クーラーは予備を使用していました)。2回目にして、これ以上リスクを冒すのはやめようと思ったんです。そのような状況をどのように理解すればよいのでしょうか。そして、ビジュアライゼーションなしのテストでは、取引情報がまったくなく、チャートだけが表示されます。それは本当なのか、それとも私が何か間違ったことをしているのか?可視化モードでは情報性がやや劣る。実は、スプレッドに合わないことが一番心配なんです。つまり、第一印象は「期待はずれ」。でも、まだわかっていないのだと割り切っています。
 
Youri Lazurenko:
こんにちは。私は、mql5言語とmt5プラットフォームの両方をマスターしようと決心しました。テスターについて質問です。見積もりについて質問です。Weltradeのプラットフォームにaudcadのペアを置いています。Expert Advisorに小さな情報パネルが あるのですが、これは何ですか?可視化モードでは、スプレッドが正しくない(非常に小さく、ユーロスプレッドに似ている)ことがわかります。会社(Veltrade)のテクニカルサポートに連絡し、mt4とmt5でスプレッドが違うのか聞いてみました。同じだと答えた。テスターに通信がない場合はどうすればよいですか?遺伝暗号を使って最適化しようとしたんです。CPUの負荷は100%で、数分の作業でパソコンがクラッシュしました(プロセッサはphenom II x4 955(4コア、3.2GHz)、クーラーは予備を使用していました)。2回目にして、これ以上リスクを冒すのはやめようと思ったんです。そのような状況をどのように理解すればよいのでしょうか。そして、ビジュアライゼーションなしのテストでは、取引情報がまったくなく、チャートだけが表示されます。それは本当なのか、それとも私が何か間違ったことをしているのか?可視化モードでは情報性がやや劣る。実は、スプレッドの矛盾が一番心配なんです。つまり、第一印象は「期待はずれ」。でも、まだわかっていないのだと割り切っています。

実際のティックに基づいたテストを設定します。そうすれば、普及の妥当性についての疑問はすべて消えるでしょう。


 
Alexey Viktorov:

実際のティックに基づいたテストを設定します。そうすれば、普及の妥当性についての疑問はすべて消えるでしょう。


ありがとうございます、これからやってみます。最適化についてのアドバイスをお願いします。それよりもスピードに興味があります。後日、テスト時に品質を修正することもあります。

P.S.アドバイス通りやってみました、スプレッドは同じです。わざとアカウントタイプを確認しました。audcad 4.1(floating)上で展開する仕様となっています。同じ口座(デモチャート)では、4.7(フローティング)です。テスターでは、mt5、最大2.8(小さいほうに浮く)。

 
Youri Lazurenko:

ありがとうございます、試してみます。最適化に関するアドバイスをお願いします。それよりも、スピードに興味があるんです。品質は後からテスト時に調整することが可能です。

何のアドバイスもできない。オプティマイゼーションは使わない。ただのヤラセだと思います。