정사각형 또는 직사각형 그리기. 정말 도움이 필요해요... - 페이지 5

 
Alex_Profit :

방법을 모르겠습니다. 말해 주세요. 최대 기간은 한 달입니다.

t_Line 변수로. 1st, 2nd, 3rd, 4th, square의 값을 삽입해야 합니다.

내가 이해할 수없는.

고마울거야.

오, 글쎄, 프로그램은 ... 그가 쓴 것을 이해 했습니까? 아니면 무엇입니까? 한 카운터에 두 개의 주기가 있는 이유는 무엇입니까? 최소한 수동으로 각 반복에서 변수 i 의 값을 추정하십시오.

barToProcess 는 누구입니까? 어디에 선언되어 있으며 무엇과 같습니까? 다시 말하지만, 두 사이클에 대한 하나의 제한 , 이것은 좋은 것으로 이어지지 않습니다. 그렇게 쓸 때 손을 때려야 무례합니다.

음, 차트가 실행되는 TF의 막대를 MN1 기간과 함께 사용하는 것은 의미가 없습니다.

분기마다 한 줄씩 차트에서 계속 실행되는 지표를 작성할 필요는 없다고 생각합니다. 스크립트가 실행되고 차트에 표시되고 언로드되는 작업에 적합하다고 생각합니다.

 

나는 그것을 쓰지 않았다. 나는 유사성에 대한 지표를 발견하고 그것을 분해하기 시작했습니다. 입력함으로써 나는 그러한 "프로그램"을 얻었습니다. 나는 나 자신이 각각 시작했고 별로 좋지 않은 것으로 판명되었습니다. 도움말을 읽었지만 항상 명확하지는 않습니다. 여기 "삐걱 거리는 소리"와 함께 이동하십시오. 조언을 구할 수 있는 포럼이 있다는 것은 좋은 일입니다. 누군가와 프로그래밍에 대해 이야기하는 것이 좋을 것입니다.

비판해 주셔서 감사합니다. 그러나 문제는 아직 해결되지 않은 상태로 남아 있습니다. 친절에 감사드립니다.

 
Alex_Profit :

나는 그것을 쓰지 않았다. 나는 유사성에 대한 지표를 발견하고 그것을 분해하기 시작했습니다. 입력함으로써 나는 그러한 "프로그램"을 얻었습니다. 나는 나 자신이 각각 시작했고 별로 좋지 않은 것으로 판명되었습니다. 도움말을 읽었지만 항상 명확하지는 않습니다. 여기 "삐걱 거리는 소리"와 함께 이동하십시오. 조언을 구할 수 있는 포럼이 있다는 것은 좋은 일입니다. 누군가와 프로그래밍에 대해 이야기하는 것이 좋을 것입니다.

비판해 주셔서 감사합니다. 그러나 문제는 아직 해결되지 않은 상태로 남아 있습니다. 응답해 주셔서 감사합니다.

예를 들어, 대략적인 스케치는 지금 무릎에 빠른 스크립트를 작성했습니다.

 void OnStart ()
{
   int limit=iBars( _Symbol , PERIOD_MN1 );
   for ( int i= 0 ;i<=limit;i++)
   {
       datetime timemn=iTime( _Symbol , PERIOD_MN1 ,i);
       int   month=TimeMonth(timemn);
       if (month== 1 || month== 4 || month== 7 || month== 10 )
      {
         int qt= 0 ;
         switch (month)
         {
             default : break ;
             case 1 : qt= 1 ; break ;
             case 4 : qt= 2 ; break ;
             case 7 : qt= 3 ; break ;
             case 10 : qt= 4 ; break ;
         }
 
         string name= StringConcatenate ( "Qt" + IntegerToString (qt)+ ", " +TimeToStr(timemn));
         ObjectCreate (name, OBJ_VLINE , 0 ,timemn, 0 );         //--- Создаём обьект вертикальную линию
         ObjectSet    (name, OBJPROP_STYLE , 2 );               //--- Со стилем
         ObjectSet    (name, OBJPROP_COLOR ,DimGray);         //--- Со цветом  
         ObjectSet    (name, OBJPROP_WIDTH , 0 );               //--- С  толщиной
         ObjectSet    (name, OBJPROP_BACK , 0 );               //--- С типом отображения. Объект на заднем плане
      }
   }   
}

작은 단점은 분기가 주말에 시작하는 경우 금요일의 마지막 막대에 선이 그려집니다 . 글쎄요, 예를 들어 역사가 2일에 시작된다면 역사의 1분기도 줄 없이 남을 것입니다. 해당 월의 날짜는 이미 지정해야 하며, 1이 아니면 다음 날짜를 지정합니다.

차트에서 이 스크립트의 모든 줄을 제거하려면 다음을 실행할 수 있습니다.

 void OnStart ()
{
     ObjectsDeleteAll ( 0 , "Qt" );
}

반복 스크립트를 만들어 원하는 막대에 특정 줄이 있는지 확인하여 이미 그려진 줄 위에 줄을 추가하려는 시도가 없도록 하고 스크립트가 초기화 해제될 때 마크업을 삭제할 수 있습니다.

설정에서 라인 매개변수를 표시할 수도 있습니다. 훨씬 더 많은 작업을 수행할 수 있습니다.

 
evillive :

예를 들어, 대략적인 스케치는 지금 무릎에 빠른 스크립트를 작성했습니다.

모든 것이 최고입니다. 매우 감사합니다.

이 칩을 마스터하는 데 얼마나 걸립니까?

 

언어 도움말을 읽고 거기에 무엇이 있고 어디에 있는지 기억하는 데 걸리는 대략적인 시간입니다.

이것은 C와 유사한 언어 중 하나 이상에 프로그래밍 기술이 있는 경우에 제공됩니다. 기술은 구문에만 있는 것이 아닙니다. 여기서 프로그램이 어떻게 "살아가는지"와 다음 내용을 이해해야 합니다.

이것이 사실이 아니지만 배우고자 하는 열망이 있다면 1년이면 충분합니다.

 
evillive :

이것이 사실이 아니지만 배우고자 하는 열망이 있다면 1년이면 충분합니다.

이해합니다.

 

저도 신청 방법을 모르겠습니다. 마지막 터치를 끝내야 합니다. 그리고 아직까지는 생각하지 않을 것입니다.

수직선 이 그려지는데 문제가 없습니다. 그러나 높은 막대에 파란색 줄무늬를 붙이는 방법은 여전히 나에게 미스터리입니다.

그날부터 줄. 버퍼에 바인딩하려는 시도가 결과로 이어지지 않았습니다.

도움을 주시면 대단히 감사하겠습니다.

고맙습니다.

 
Alex_Profit :

저도 신청 방법을 모르겠습니다. 마지막 터치를 끝내야 합니다. 그리고 아직까지는 생각하지 않을 것입니다.

수직선이 그려지는데 문제가 없습니다. 그러나 높은 막대에 파란색 줄무늬를 붙이는 방법은 여전히 나에게 미스터리입니다.

낮부터 라인. 버퍼에 바인딩하려는 시도가 결과로 이어지지 않았습니다.

도움을 주시면 대단히 감사하겠습니다.

고맙습니다.

코드를 보여주시면 함께 수정하겠습니다.
 

킥할 필요는 없으며 코드는 "서투른" 것입니다. 이미 이해했습니다. 예시와 실수를 통해 논리적인 결과를 얻고 싶습니다.

작업은 최소이며 작동합니다. 글쎄, 경험과 "더 예쁘다"가 될 것입니다.

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

#property strict

#property indicator_chart_window

   

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

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


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

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

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


//MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


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

int init()

  {  

    return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

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

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

              ObjectDelete(Name_CHECK + "L_CHECK"  + 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_H4,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

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

   {


         //--- кубики по хай (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high);

         ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

   

         //--- кубики по лоу (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low);

         ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

        

    //+------------------------ Рисуем вертикальную линии -----------------------------------------------------+                 

    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);

}


 
Alex_Profit :

킥할 필요는 없으며 코드는 "서투른" 것입니다. 이미 이해했습니다. 예시와 실수를 통해 논리적인 결과를 얻고 싶습니다.

작업은 최소이며 작동합니다. 글쎄, 경험과 "더 예뻐"가 될 것입니다.

글쎄, 그는 어디에서 일합니까? 선은 TK가 아니라 각 막대에 그려집니다. 또는 TF=H1 위의 그림에서?

루프의 각 반복에서 한계i 가 같아지는 종이에 다시 계산하십시오.

위에 표시된 예는 내가 이해하는 한 고려되지 않았습니다.

화살표 확인란은 표시기 버퍼 를 사용하여 그릴 수 있으며 촛불 그림자를 연결하는 선도 그릴 수 있습니다.