正方形や長方形を描画する本当に助けが必要だ... - ページ 4

 
Alex_Profit:

オブジェクトの作成時に、"_H", "_L "という値が帰属することが判明しました。

まあ、考えないといけないのは、そうなんですけどね。それに、私はあまりお酒を飲まないんです。

時間が経てば良くなると思います。ありがとうございます。

objName+"_H",

objName+"_L",

あなたのことではないんです...あの答えを書いたときは、あまりシラフではなかった。
 
アガメンヌさん、ありがとうございます。ステージ1が終了しました。
 
indicator_chart_windowパラメータをindicator_separate_windowに変更すると、なぜかメインウィンドウの画像がサブウィンドウに表示さ れないのですが、教えてください。
 
Alex_Profit:
indicator_chart_windowパラメータをindicator_separate_windowに変更すると、なぜかサブウィンドウにメインウィンドウの画像が表示 されないのですが、教えてください。
インジケータをチャートから削除し、再度追加する必要があります。
 

エラーがあれば教えてください。ひし形と十字がゼロバー上ではなく、バー自体の上に描かれるように変更する必要がある点。(毎月の最初のバーで)。

ありがとうございます。

//+------------------------------------------------------------------+

#property strict

#property indicator_chart_window

   

    //---  Внешние Глобальные переменные 

extern int     barsToProcess = 5;        //--- Кол-во отображаемых периодов (линий) 


    //---  Глобальные переменные    

string Name_Obj;  //--- Имя Элементов


#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue


double Buf_High[];

double Buf_Low[];


MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


//+------------------------------------------------------------------+

int init()

  {  

     SetIndexBuffer(0,Buf_High);     

     SetIndexStyle (0,DRAW_ARROW,0,0);  

     SetIndexArrow (0,116);

     

     SetIndexBuffer(1,Buf_Low);

     SetIndexStyle (1,DRAW_ARROW,0,0); 

     SetIndexArrow (0,116);


    return(0);

  }

//+------------------------------------------------------------------+

int deinit()

  {

   int i;  

         for (i=0; i<Bars; i++)                                        //--- Выбираем все установленные объекты  

           {

              ObjectDelete(Name_Obj  + " High"   + DoubleToStr(i,0));  //--- Удаляем все объекты

              ObjectDelete(Name_Obj  + " Low"    + DoubleToStr(i,0));  //--- Удаляем все объекты

           }       

   return(0);

  }

//+------------------------------------------------------------------+

int start()

{                  

int counted_bars = IndicatorCounted();     //--- перем counted_bars = функц.  Возвращает количество баров

int limit;                                 //--- переменная  старт кол-во баров. Линии рисуем о по всем барам

if(counted_bars > 0) counted_bars --;      //--- последний посчитанный бар будет пересчитан 

  //--- основной цикл 

  limit = Bars - counted_bars;         

  for(int i = 0; i < limit; i ++)

      {

 //+------------------------ При выборе кол-ва линий отобразим их ко-во------------------------+                 

         if(limit > barsToProcess)                                     //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) 

         {

          limit = barsToProcess;                                       //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)

 //+------------------------ Рисуем линии -----------------------------------------------------+                 

             while (i<limit)                                           //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.                        

             {   

               datetime t_Line = iTime(Symbol(),PERIOD_MN1,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

               CopyRates(_Symbol, PERIOD_W1, t_Line, 1, mqlRates);

   {

             Buf_High[i] = mqlRates[i].high;

             Buf_Low[i]  = mqlRates[i].low;

      //+------------------------ Рисуем Объекты -----------------------------------------------------+                 

      //--- Строим линию по Хай      

     ObjectCreate    (0,Name_Obj + " High" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].high,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].high);

     ObjectSetInteger(0,Name_Obj + " High" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

  

     //--- Строим линию по Лоу      

     ObjectCreate    (0,Name_Obj + " Low" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].low,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].low);

     ObjectSetInteger(0,Name_Obj + " Low" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

 }

  i++;

             }

          }

      }

   return(0);

}


 
Alex_Profit:

エラーがあれば教えてください。ひし形と十字がゼロバー上ではなく、バー自体の上に描かれるように変更する必要がある点。(毎月の最初のバーで)。

ありがとうございます。

もう新しい構文を学び始めてください。古い言語でしか書けない、再教育する気のない古い恐竜ならわかりますが、数年前から陳腐化した構文を学び始めたばかりで、新しいものを散りばめただけの立ち位置は、変質的としか言いようがありません。

そして、少なくとも何が起こっているのかを理解するために、ヘルプを読み始めるだけでいいのです。

 

それは理解できるのですが、どこが新しくて、どこが古いのか?そして、ハンドブックを読むと、あまりにも巧みな言葉で書かれているのです。

特に、ご批判をありがとうございました。正しい方向に進むことができるんです。

 

ヒントを教えてください。四半期ごとのマークアップはどのように行うのですか?

これらの日付が発生したときに、縦線を 引く必要があるのです。

1月1日、4月1日、7月1日、10月1日。

 

まず、私の言葉をよく読んでから、言語のドキュメント、特に「グラフィカル・オブジェクト」のセクションを読んでください。

ドキュメントには、グラフィカル・オブジェクトを作成する 際に、どのようなパラメータが必要であるかが明記されています。そのうちのひとつがTIMEで、このパラメータに入れる必要があるのは日付です。縦線では値段は重要ではありませんが、機能的には必要です。難しいことはありません。

 
AlexeyVik:

まず、私の言葉をよく読み、次に言語ドキュメント、特に「グラフィックオブジェクト」のセクションをよく読んでください。

ドキュメントには、グラフィカル・オブジェクトを作成する際にどのようなパラメータが必要かが明確に記載されています。そのうちのひとつがTIMEで、これはあなたの日付であり、このパラメータに挿入されるべきものです。価格は縦線では重要ではありませんが、関数では必須なので0を入れてください。難しいことはありません。

どうすればいいのかわからない。どうすればいいのか教えてください。期間は最長で1ヶ月です。

変数t_Line.に1st,2nd,3rd,4th,kvの値を入れる必要が あります。

理解できない。

ぜひお願いします。

int start()

{                  

int counted_bars = IndicatorCounted();     //--- перем counted_bars = функц.  Возвращает количество баров

int limit;                                 //--- переменная  старт кол-во баров. Линии рисуем о по всем барам

   

if(counted_bars > 0) counted_bars --;      //--- последний посчитанный бар будет пересчитан 

  //--- основной цикл 

  limit = Bars - counted_bars;         

  for(int i = 0; i < limit; i ++)

      {

         if(limit > barsToProcess)                                     //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) 

         {

          limit = barsToProcess;                                      //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)

             while (i<limit)                                           //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.                        

             {   

               datetime t_Line = iTime(Symbol(),PERIOD_MN1,i);                 //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

             {


    ObjectCreate (Name_VLine + " VLine" + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0);         //--- Создаём обьект вертикальную линию

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_STYLE,2);              //--- Со стилем

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_COLOR,DimGray);        //--- Со цветом  

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_WIDTH,0);              //--- С  толщиной

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_BACK,0);               //--- С типом отображения. Объект на заднем плане

 }

  i++;

             }

          }

      }      

   return(0);

}


理由: