포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1033

 
abeiks :

안녕하세요.

이제 시간이 제대로 돌아가지 않습니다. 예를 들어 시간이 12.04인 경우 시간은 12.4 형식으로 반환됩니다. 이 기능을 올바르게 수행하는 방법을 제안할 수 있습니까?

음, 결국 Hour() 및 Minute()는 프로그램이 시작된 시점에서 마지막 서버 시간의 현재 시간과 현재 분을 반환합니다. 그리고 반환 값은 int 유형 입니다. 그리고 그것들은 단지 정수일 뿐입니다. 따라서 포맷해야 합니다. 예를 들면 다음과 같습니다.

 string label= IntegerToString (Hour(), 2 , '0' )+ ":" + IntegerToString (Minute(), 2 , '0' );
 
artmedia70 :

음, 결국 Hour() 및 Minute()는 프로그램이 시작된 시점에서 마지막 서버 시간의 현재 시간과 현재 분을 반환합니다. 그리고 반환 값은 int 유형입니다. 그리고 그것들은 단지 정수일 뿐입니다. 따라서 포맷해야 합니다. 예를 들면 다음과 같습니다.


고맙습니다 !
 
abeiks :
고맙습니다 !

별말씀을요. 비밀이 아니라면 프로그램의 마지막 실행 시간을 표시하는 레이블이 필요한 이유는 무엇입니까? 시간은 변경되지 않습니다.

그냥 쓸데없는 호기심...

 

안녕하세요!

바 1개당 1개의 거래를 제한하는 기능을 올바르게 구현하는 방법을 알려주십시오(즉, 거래가 이미 양초에서 열리거나 닫혀 있는 경우 이 양초에서 새 거래가 열리지 않은 경우)

많은 옵션을 찾았지만 코드에 올빼미를 올바르게 입력하는 방법을 알 수 없습니다(예: 전역 변수 의 어느 부분과 거래를 열기 위한 조건의 어느 부분)

다음은 이 옵션의 예입니다.

정수 TekBar = -1; // 현재 막대.

if (TekBar == 막대)return(0); // 막대당 하나의 거래만 있습니다.
TekBar = 바; // 막대당 하나의 거래만 있습니다.

{...}

올빼미 코드의 어느 위치에 이 스크립트의 어느 부분을 삽입해야 합니까?

 
DuKle :

안녕하세요!

바 1개당 1개의 거래를 제한하는 기능을 올바르게 구현하는 방법을 알려주십시오(즉, 거래가 이미 양초에서 열리거나 닫혀 있는 경우 이 양초에서 새 거래가 열리지 않은 경우)

많은 옵션을 찾았지만 코드에 올빼미를 올바르게 입력하는 방법을 알 수 없습니다(예: 전역 변수의 어느 부분과 거래를 열기 위한 조건의 어느 부분)

다음은 이 옵션의 예입니다.

정수 TekBar = -1; // 현재 막대.

if (TekBar == 막대)return(0); // 막대당 하나의 거래만 있습니다.
TekBar = 바; // 막대당 하나의 거래만 있습니다.

{...}

올빼미 코드의 어느 위치에 이 스크립트의 어느 부분을 삽입해야 합니까?

막대 번호 0에서 마지막 거래가 열렸는지 닫혔는지 확인해야 합니다.

이렇게 하려면 마지막 열린 거래와 마지막으로 마감된 거래를 찾아야 합니다.

마지막 열린 거래의 시작 막대와 마지막으로 마감된 거래의 닫는 막대를 봅니다.

이러한 값(마지막 열린 거래의 열린 막대 또는 마지막으로 마감된 거래의 닫는 막대) 중 하나 이상이 0이면 새 위치를 열 수 없습니다.

그리고 예: 이것은 스크립트가 아닙니다. 이해할 수 없는 코드의 일부일 뿐입니다. 그리고 올빼미에 아무 것도 넣을 필요가 없습니다. 올빼미는 야행성 포식자이며 새를 살게하십시오.

 

안녕하세요! 도와주세요, 제발!

아이디어는 있지만 구현 방법을 모르겠습니다. 그리고 가장 중요한 것은 이 문제에 해결책이 있는지 모르겠습니다.

핵심은 다음과 같습니다. 주어진 막대 수 에 대해 차트에 특정 선을 그리는 지표가 있습니다.

선의 왼쪽 "끝"을 마우스로 드래그하여 선이 그려지는 막대의 수를 변경할 수 있도록 할 수 있습니까? 드래그 후 표시기는 계산에 사용된 새로운 막대 수를 기억해야 합니다. 다음은 수정하려는 지표의 예입니다.

 //+------------------------------------------------------------------+
//|                                                      Canal__.mq4 |
//+------------------------------------------------------------------+
//----------------------------------
#property indicator_chart_window
//----------------------------------
extern int Hours= 20 ;
extern color col=Red;
//------------------
double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,fs;
ulong sName;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2;
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double price_p1,price_p0,price_p2,price_01,price_00,price_02;
int p1,p0,p2,fp;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   p=Hours* 60 / Period ();
   if (fs== 0 )
     {
      sName= TimeCurrent (); 
      fs= 1 ;
     }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete ( "1" +( string )sName);
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,n;
//----
   if (f== 1 )
     {
      p1=iBarShift( Symbol (), Period (),( datetime )ObjectGet( "1" +( string )sName,OBJPROP_TIME1));
       if (fp== 0 && p!=p1) {p=p1; fp= 1 ;}
     }
//----
   sx= 0 ; sy= 0 ; sxy= 0 ; sx2= 0 ;
   for (n= 0 ; n<=p; n++)
     {
      sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+= MathPow (n, 2 );
     }
   aa=(sx*sy-(p+ 1 )*sxy)/( MathPow (sx, 2 )-(p+ 1 )*sx2); bb=(sy-aa*sx)/(p+ 1 );
//----
   for (i= 0 ; i<=p; i++)
     {
      lr=bb+aa*i;
      dh=High[i]-lr; dl=Low[i]-lr;
       //----
       if (i<p/ 2 )
        {
         if (i== 0 )
           {
            dh_1= 0.0 ; dl_1= 0.0 ; ai_1=i; bi_1=i;
           }
         if (dh>=dh_1) {dh_1=dh; ai_1=i;}
         if (dl<=dl_1) {dl_1=dl; bi_1=i;}
        }
       //----
       if (i>=p/ 2 )
        {
         if (i==p/ 2 )
           {
            dh_2= 0.0 ; dl_2= 0.0 ; ai_2=i; bi_2=i;
           }
         if (dh>=dh_2) {dh_2=dh; ai_2=i;}
         if (dl<=dl_2) {dl_2=dl; bi_2=i;}
        }
     }
   lr0=bb; lrp=bb+aa*(i+p);
//===================================================
   if ( MathAbs (ai_1-ai_2)> MathAbs (bi_1-bi_2)) f= 1 ;
   if ( MathAbs (ai_1-ai_2)< MathAbs (bi_1-bi_2)) f= 2 ;
   if ( MathAbs (ai_1-ai_2)== MathAbs (bi_1-bi_2))
     {
       if ( MathAbs (dh_1-dh_2)< MathAbs (dl_1-dl_2)) f= 1 ; if ( MathAbs (dh_1-dh_2)>= MathAbs (dl_1-dl_2)) f= 2 ;
     }
//=================================================
   if (f== 1 )
     {
       for (n= 0 ; n<= 20 ; n++)
        {
         f1= 0 ;
         for (i= 0 ; i<=p; i++)
           {
            hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
             if (i== 0 || i==p/ 2 ) dhm= 0.0 ;
             if (High[i]-hai>dhm && i<p/ 2 ) {ai_1=i; f1= 1 ;}
             if (High[i]-hai>dhm && i>=p/ 2 ) {ai_2=i; f1= 1 ;}
           }
         if (f== 0 ) break ;
        }
       //----------------------------
       for (i= 0 ; i<=p; i++)
        {
         hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
         dli=Low[i]-hai;
         if (i== 0 ) dlm= 0.0 ; if (dli<dlm) dlm=dli;
        }
      ha0=High[ai_1]*( 0 -ai_2)/(ai_1-ai_2)+High[ai_2]*( 0 -ai_1)/(ai_2-ai_1);
      hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
       //----------------------------
      price_p1=hap+dlm/ 2 ;
      price_01=ha0+dlm/ 2 ;
     }
//=================================================
   if (f== 2 )
     {
       for (n= 0 ; n<= 20 ; n++)
        {
         f1= 0 ;
         for (i= 0 ; i<=p; i++) 
           {
            lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
             if (i== 0 || i==p/ 2 ) dlm= 0.0 ;
             if (Low[i]-lai<dlm && i<p/ 2 ) {bi_1=i; f1= 1 ;}
             if (Low[i]-lai<dlm && i>=p/ 2 ) {bi_2=i; f1= 1 ;}
           }
         if (f== 0 ) break ;
        }
       //----------------------------
       for (i= 0 ; i<=p; i++)
        {
         lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
         dhi=High[i]-lai;
         if (i== 0 ) dhm= 0.0 ; if (dhi>dhm) dhm=dhi;
        }
      la0=Low[bi_1]*( 0 -bi_2)/(bi_1-bi_2)+Low[bi_2]*( 0 -bi_1)/(bi_2-bi_1);
      lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
       //----------------------------------------------------------------
      price_p1=lap+dhm/ 2 ;
      price_01=la0+dhm/ 2 ;
     }
//=================================================================================== отрисовка линий
   ObjectCreate ( "1" +( string )sName, 2 , 0 ,Time[p],price_p1,Time[ 0 ],price_01);
//-----------------------------------------------------------------
   ObjectSet( "1" +( string )sName, OBJPROP_COLOR ,col);
   ObjectSet( "1" +( string )sName, OBJPROP_STYLE , STYLE_DASHDOT );
   ObjectSet( "1" +( string )sName, OBJPROP_RAY , false );
//---------------------------------------------
   ObjectSet( "1" +( string )sName,OBJPROP_TIME1,Time[p]);
   ObjectSet( "1" +( string )sName,OBJPROP_PRICE1,price_p1);
   ObjectSet( "1" +( string )sName,OBJPROP_TIME2,Time[ 0 ]);
   ObjectSet( "1" +( string )sName,OBJPROP_PRICE2,price_01);
   f= 1 ; p1=p; p0=p; p2=p; fp= 0 ;
//===================================================================================
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Night63 :

안녕하세요! 도와주세요, 제발!

아이디어는 있지만 구현 방법을 모르겠습니다. 그리고 가장 중요한 것은 이 문제에 해결책이 있는지 모르겠습니다.

본질은 다음과 같습니다. 주어진 막대 수에 대해 차트에 특정 선을 그리는 지표가 있습니다.

선의 왼쪽 "끝"을 마우스로 드래그하여 선이 그려지는 막대의 수를 변경할 수 있도록 할 수 있습니까? 드래그 후 표시기는 계산에 사용된 새로운 막대 수를 기억해야 합니다. 다음은 수정하려는 지표의 예입니다.

표시기 에 OnChartEvent()를 추가 하고 해당 이름으로 라인 크기 변경 이벤트를 추적해야 합니다: CHARTEVENT_OBJECT_CHANGE. 막대에서 새 라인 길이를 다시 계산하고 새 크기를 계산을 위한 매개변수로 사용합니다.
 
artmedia70 :

막대 번호 0에서 마지막 거래가 열렸는지 닫혔는지 확인해야 합니다.

이렇게 하려면 마지막 열린 거래와 마지막으로 마감된 거래를 찾아야 합니다.

마지막 열린 거래의 시작 막대와 마지막으로 마감된 거래의 닫는 막대를 봅니다.

이 값(마지막 열린 거래의 시작 막대 또는 마지막 닫힌 거래의 닫는 막대) 중 하나 이상이 0이면 새 위치를 열 수 없습니다.

그리고 예: 이것은 스크립트가 아닙니다. 이해할 수 없는 코드의 일부일 뿐입니다. 그리고 올빼미에 아무 것도 넣을 필요가 없습니다. 올빼미는 야행성 포식자이며 새를 살게하십시오.

나는 거래의 존재를 결정하는 원칙을 이해합니다. 코드로 구현하는 방법을 모르겠습니다 :-(
 
DuKle :
나는 거래의 존재를 결정하는 원칙을 이해합니다. 코드로 구현하는 방법을 모르겠습니다 :-(

슬프다 어떻게...

내가 당신을 위해 그것을해야합니까?

시작과 미래의 이해를 위해 스레드 " KimIV의 유용한 기능 "을 읽으십시오.

코드는 확실히 중복되지만 초보자에게는 학습이 옳습니다.

 

친애하는 mql4/5 프로그래머!

프로그래밍 언어의 기초를 공부하고 졸업장을 위한 어드바이저를 개발 한 초보자가 연락을 드리고 있습니다!

제 졸업장에는 "경제학"이라는 챕터가 있습니다.

내가 기업을 위한 프로그램을 개발하고 있다면 경제적인 부분과 관련된 모든 것이 명확합니다.

그러나 나의 경우는 어떻습니까? 무엇을 고려할 수 있고 어떤 길을 가야합니까!

정말 감사합니다!!!!

__________________________________________

길은 걷는 자가 지배할 것이다 (c)