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

 
Alexey Kozitsyn:
まあ...そこまで掘り下げて考える必要はないと思いますが、ループでのリクエストは、本当に最初に目に飛び込んでくるものです。

もし、このデータが1回だけ、あるいは1時間に1回だけ必要だとしたらどうでしょう?なぜ無駄なループを作るのか?

質問者本人を除いては、誰も彼が何を望んでいるのかわからないのです。だから、彼がアドバイスされたように、テレパシークラブで自分の質問の立て方の失敗を読んでくるようにとアドバイスするしかないのである。そして、少し笑うことにした人たちに気を悪くしないでください。

 
Alexey Kozitsyn:
トローラー:)より良い提案は、価格をループさせることでしょう。従って、配列に格納する。
お好きなときにお読み ください)。
 
私の質問が明確でなかったと答えればよかったのに。 そして、あなたは "塩と胡椒..."。憤り
 
STARIJ:

私見では、もっとシンプルにこのように考えています。

画面に即座にアラート出力。これがテーブルの最後です


質問をお読みになりましたか?見逃しているようですね。
 
Romal001:
私の質問が明確でなかったとだけ答えればよかったのに。 そして、あなたは "塩、コショウ..."。攻撃的

最初の返信を読んでください、あなたへの質問でした。はっきり答えてくれれば、また違う話になったかもしれません。

どのような信号のことを聞いていたのですか?

キャンドルデータとどう関係があるのでしょうか?

 
#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}

一日だけでなく、履歴を表示するためにループにそれを置く方法、すべての蛇のようにねじれが動作しません、興味が技術的であり、私はかゆいです))

 

2つの機械が重なる部分を正しく、より正確に価格を知るにはどうしたらいいのでしょうか。


 
missha32:   2つの機械が交差する場所で、より正確な価格を知る方法をアドバイスしてください。

棒と棒の間が交点で、棒を基準に計算します。それとも、もっと正確さが必要なのでしょうか?補間することは可能ですが、しなければならないのでしょうか?スローMaは同じ値です。

 
STARIJ:

バーとバーの間の交差点で、バー単位で計算されます。それとも、もっと正確さが必要なのでしょうか?補間することは可能だが、そうすべきなのか?スローマも同じ値です。

この図では、MA1(1)>MA2(1)、MA1(2)<=MA2(2)が交差の事実となります。括弧内のバーはMA1、MA2を取ったときのバー
 

MAクロスはバーとバーの間で発生する - わかりやすい例を捕らえよう

交差点の左右のバーのMAが、交差点での価格と異なっている。質問者は、隣のバーの値ではなく、正確な交差点の値が欲しいのだと理解しています。この正確な値は、バーとバーの間のMAが直線で構成されているため、線形補間を用いて得ることができる。または、隣接するバー上の各MAの座標を取る。2本の直線を解析的に構成し、その交点を計算する。2つの相似な三角形を考えて計算することが可能です。なぜ、それが必要なのかという疑問が生まれます。そのコストは、結果の価値に見合っているか?結局、MAパラメータを最小に変更すれば交点は移動する。ほとんどの場合、コースプロジェクトの 責任者から要求されます