초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 36

 

안녕 친애하는 사람들!

막대 위의 레이블이 측면이 아니라 상단 막대의 중앙에 있도록 코드를 수정하는 데 도움이 됩니다.

#속성엄격
#속성 표시기_차트_창

입력 int TextSize = 8; //글꼴 크기
입력 색상 TextColor = clrYellow; //텍스트 색상
입력 정수 TextAngle = 90; //텍스트 회전 각도
입력 정수 MaxBar = 100; // 0부터 시작하여 양초의 크기가 계산되는 막대의 수

int OnInit()
{
반환(INIT_SUCCESSED);
}

int OnCalculate(const int rate_total,
const int prev_calculated,
const 날짜/시간 및 시간[],
const 이중 및 열기[],
const 더블 & 하이[],
const 더블 & 로우[],
const 이중 및 닫기[],
const long &tick_volume[],
const 긴 볼륨[],
const int &spread[])
{
정수 나;
( 나는 = 0; 나는 < MaxBar; 나는 ++ ) {
if ( ObjectFind("candlesize"+ IntegerToString(i)) >=0 ) {
ObjectDelete("촛불 크기"+ IntegerToString(i));
}
ObjectCreate("candlesize"+ IntegerToString(i),
OBJ_TEXT,
0,
시간[나],
high[i]+StepPer()*Point);
ObjectSet("candlesize"+IntegerToString(i),
OBJPROP_ANGLE,
텍스트 앵글
);
ObjectSetText("candlesize"+IntegerToString(i),
DoubleToStr(NormalizeDouble((높은[i]-낮은[i]+점)/점, 0), 0),
텍스트 크기,
없는,
텍스트 색상
);
}
반환(요금 합계);
}

정수 스텝퍼()
{
정수 i = 0;
스위치(마침표())
{
사례 PERIOD_M1:
나는 = 5;
부서지다;
사례 PERIOD_M5:
나는 = 15;
부서지다;
사례 PERIOD_M15:
나는 = 25;
부서지다;
케이스 PERIOD_M30:
나는 = 40;
부서지다;
사례 PERIOD_H1:
나는 = 60;
부서지다;
사례 PERIOD_H4:
나는 = 90;
부서지다;
사례 PERIOD_D1:
나는 = 220;
부서지다;
사례 PERIOD_W1:
나는 = 500;
부서지다;
사례 PERIOD_MN1:
나는 = 2000;
부서지다;
기본:
부서지다;
}
반환(i);
}

 
ed3sss :

증명: Print("이전 작업 PriceAsk-",PriceAsk); 로그가 비어 있습니다.

세부 정보가 없으면 이것은 증명이 아닙니다.)) init의 전체 텍스트와 변수 선언을 표시합니다.

게다가 최신 주문이 필요한 경우 계정 수명의 맨 처음부터 모든 주문을 확인하는 이유는 무엇입니까??? - 10개의 통화 쌍이 열려 있는 경우 다른 방법은 무엇입니까?

끝에서 반복하고 루프를 종료합니다. 10쌍 어때요? 최소한 100개 이상의 기호를 선택할 수 있습니다.

 
Игорь :

안녕 친애하는 사람들!

막대 위의 레이블이 측면이 아니라 상단 막대의 중앙에 있도록 코드를 수정하는 데 도움이 됩니다.

SRC 버튼을 사용하여 코드를 삽입 하는 방법을 배웁니다.

그리고 우리는 OBJPROP_ANCHOR에 대해 읽었습니다.

 
Vitalie Postolache :

SRC 버튼을 사용하여 코드를 삽입 하는 방법을 배웁니다.

그리고 우리는 OBJPROP_ANCHOR에 대해 읽었습니다.

감사합니다!

가혹해서 죄송합니다!

 
Игорь :

감사합니다!

가혹해서 죄송합니다!

#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
넣었는데 아직도 가운데가 안맞고 엉뚱한 바에!?
 
#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
얘들아 잼이 어딨어?
 
Игорь :
#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
얘들아 잼이 어딨어?
그가 중앙을 가리켰지만 어떤 이유에서인지, 막대 위와 옆이 아닌!
 
Игорь :

넣었는데 아직도 가운데가 안맞고 엉뚱한 바에!?

음, 회전 후 포인트는 더 이상 상단 중앙이 아니라 왼쪽 중앙 에 있으므로 텍스트가 오른쪽으로 이동했습니다.

ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_LEFT );
기준점은 회전이 0도일 때 설정됩니다. 회전 각도를 고려하고 기준점을 설정해야 합니다. 기준점은 물체가 높음보다 위에 있는 경우 아래쪽에 있으며 귀하의 경우에는 위의 점이 됩니다 중앙에 왼쪽.
 
Vitalie Postolache :

음, 회전 후 포인트는 더 이상 상단 중앙이 아니라 왼쪽 중앙 에 있으므로 텍스트가 오른쪽으로 이동했습니다.

ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_LEFT );
기준점은 회전이 0도일 때 설정됩니다. 회전 각도를 고려하고 기준점을 설정해야 합니다. 기준점은 물체가 높음보다 위에 있는 경우 아래쪽에 있으며 귀하의 경우에는 위의 점이 됩니다 중앙에 왼쪽.

정말 감사합니다!!!!!

우리가 원하는대로 모든 것이 밝혀졌습니다!

다시 한번 저의 오해와 가혹함에 대해 사과드립니다!

 
Vitalie Postolache :

세부 정보가 없으면 이것은 증명이 아닙니다.)) init의 전체 텍스트와 변수 선언을 표시합니다.

끝에서 반복하고 루프를 종료합니다. 10쌍 어때요? 최소한 100개 이상의 기호를 선택할 수 있습니다.

부울 s=거짓;
이중 b=계정 잔액();
나는 = 0;
for(;i<OrdersTotal();i++)
{//+---------------------------------------------- ------------------------------------------+
ViborOrdera=주문 선택(i,SELECT_BY_POS);
if(OrderSymbol()!=Symbol())계속;
if(OrderType()>1)계속;
s=참;
int 티켓=OrderTicket();
doubleLots=OrderLots();
이중 가격;
if(OrderType()==1)Price=NormalizeDouble(Ask,Digits);else Price=NormalizeDouble(Bid,Digits);
//+----------------------------------------------- ------------------------------------------+
ViborOrdera=OrderClose(티켓,랏,가격,3);
if(GetLastError()==6){Alert("연결되지 않음");return(0);}
if(GetLastError()==132){Alert("시장 폐쇄");return(0);}
새로 고침();
나--;

}//+---------------------------------------------- ------------------------------------------+

자, 여기 같은 주기가 있습니다. 왜 주문을 마감합니까?)