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

 
一部のバーでUpper[i]が未入力(0に等しい)である可能性があります。
 
Sergey Savinkin:
一部のバーでUpper[i]が埋まっていない(0に等しい)可能性があります。

コードを実行する前に、現在の価格の状態に対して条件を書き込むと、ログに以下のように出力されるようになり、解決の糸口が見えたような気がします。

重要なポイント - これらのパラメータは、すでに以前に生成された 価格と一致します。

明確にすること。

これは、ログの最後のラインが、価格がアッパーラインを超えたことを示すものです。唯一の疑問は、なぜそんなことをしたのか、ということです。インジケーターの再計算中に、これらのイベントを登録し、最後のイベントで停止するバージョンを持っています - それは価格と現在のログデータの違いを説明しますが、他の何も説明していません - 私は、ロジックで単純な比較を行うコードが必要 "価格は上限線を超えた - アラートを与えるが何も起こらない"。

また、価格が上の線より下にある場合のコード条件もチェックしましたが、上のスクリーンショットにあるように、単にログにイベントを記録しませんでした。

 

友人たちよ、私はMQL5を使い始めたばかりなので、もしここに書いている問題が私自身の落ち度であっても、あまり蹴らないでほしい。

多通貨のフクロウを作りたかったのですが、ストラテジーテスターで多通貨のテスト時のみ 現れる奇妙な現象に直面しました。メインのチャートシンボル以外の時系列シンボルが変に移動してしまうのですが。私は、ゼロと最初のバーのオープン時間を各バー開始時に2つのシンボルで取得する簡単なフクロウを作りました。なぜか第2シンボルの時系列が1小節後にずれるようになった。あらゆるシンボル、あらゆる時間枠で表示されます。EURUSDでテストしていたのですが、2つ目のシンボルはGBPUSDでした。その逆も試したし、他のペアでも試したが、いつもエラーが出る。М15でテストした後のジャーナルからの写真です。

H1でのテスト後のログ画像。

ストラテジーテスターの設定。

以下は、そのテストのためのコードです。

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
input string SecondSymbol="GBPUSD";

int OnInit()
  {
   SymbolSelect(SecondSymbol,true);//выбираем второй символ в MarketWatch(для тестера)
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
//---

  }

void OnTick()
  {
   static datetime BarTime;//время начала бара
   int per=PeriodSeconds(PERIOD_CURRENT);

   datetime time_curr=TimeCurrent()/per*per;
   if(time_curr!=BarTime)
     {
      BarTime=time_curr;

      datetime Time_One[],Time_Two[];
      bool yes=ArraySetAsSeries(Time_One,true);
      yes=ArraySetAsSeries(Time_Two,true);

      int i=CopyTime(NULL,PERIOD_CURRENT,0,2,Time_One);    //текущий символ
      i=CopyTime(SecondSymbol,PERIOD_CURRENT,0,2,Time_Two);//второй символ
      
      Print("ВремяНачалаБара по ",Symbol(),":",Time_One[0]," ВремяНачалаБара по ",SecondSymbol,":",Time_Two[0]);
     }
  }

ご協力をお願いします。

 
stroganow:

友人たちよ、私はMQL5を使い始めたばかりなので、もしここに書いている問題が私自身の落ち度であっても、あまり蹴らないでほしい。

多通貨のフクロウを作りたかったのですが、ストラテジーテスターで多通貨のテスト時のみ 現れる奇妙な現象に直面しました。メインのチャートシンボル以外の時系列シンボルが変に移動してしまうのですが。私は、ゼロと最初のバーのオープン時間を各バー開始時の2つのシンボルで取得する簡単なフクロウを作りました。なぜか第2シンボルの時系列が1小節後にずれるようになった。あらゆるシンボル、あらゆる時間枠で表示されます。EURUSDでテストしていたのですが、2つ目のシンボルはGBPUSDでした。その逆も試したし、他のペアでも試したが、いつもエラーが出る。М15でテストした後のジャーナルからの写真です。

H1でのテスト後のログ画像。

ストラテジーテスターの設定。

テスト用のコードです。

ご協力をお願いします。

テスターは正常に動作します。プログラムロジックに誤りがあります:2つの記号は異なる人の2つの人生のようなものです(ここで「人」は「記号」に類似しています)。また、2人目は1人目と同じ時間に目覚める必要はありません(「目覚める」は「新しいバーが 現れる」と類似しています)。

つまり、新しいバーが最初のシンボルの上に、そして2番目のシンボルの上に現れるのを待つ必要があるのです。


記事「新しいバー」のイベントハンドラを 追加しました。

 

ここに強気のピンバーの絵がありますが、それを認識するための条件の原則コードはどのようなものなのか教えてください。

if(low[i] <= open[i] && high[i] > close[i] && open[i] >= close[i] && close[i] <= Base[i]) // верно ли это утверждение?
 
clickaider:

ここに強気のピンバーの絵がありますが、それを認識するための条件の原則コードはどのようなものなのか教えてください。

これは弱気のピンバーです。キャンドルの向きは重要ではありません。長い影の位置が重要で、上がれば弱気、下がれば強気となる。そして、レベル指標による確認が必要です。
 
Artyom Trishkin:
これは弱気のピンバーです。キャンドルの向きは重要ではありません。長い影の位置が重要で、上がれば弱気、下がれば強気となる。そして、レベル指標による確認が必要です。
コード構成で示せるか?ただ、どのようなコードにすればよいのかがよくわかりません。
 
clickaider:
コード構成で示すことは可能でしょうか?ただ、どのようなコードにすればいいのかがよくわかりません
携帯からではコードを書けません。一目でわかる。
High Lowからのローソクの大きさ、ローソクの本体の大きさ、ローソク全体の大きさに対する本体の割合、短い影の大きさが一定の閾値を超えないこと(それがない、あるいは本体に対して相対的に小さいように)、ローソクの全サイズに対する上部/下部本体の位置が必要です。
こんな感じかな...。
 
Artyom Trishkin:
携帯電話からではコードを書けません。一目でわかる。
High Lowからのローソクの大きさ、ローソクの本体の大きさ、ローソク全体の大きさに対する本体の割合、短い影の大きさが一定の閾値を超えないこと(それがない、あるいは本体に対して相対的に小さいように)、ローソクの全サイズに対する上部/下部本体の位置が必要です。
こんな感じかな...。

グラフィック的にはこのような感じです。

 
clickaider:

グラフィック的にはこのような感じです。

今度は、図式化したものを言葉で表現してください。高値、安値、開値、閉値を使用する。
言葉で表現した時点で、すでに自分にとってのToRが出来上がっているのです :)
あとは、言葉の構文をコードに置き換えるだけです。
理由: