MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1533

 
Алексей КоКоКо :

일반적으로 문서를 이해하는 방법을 알려주시겠습니까? 텍스트로 된 간단한 그래픽 개체의 예에서도 많은 코드가 포함된 예제를 던지고 어떤 매개변수가 필요하고 어떤 매개변수가 필요하지 않은지, 일부 텍스트를 설정하거나 추세를 설정하거나 버퍼를 처리하기까지 합니다. 표시기를 이해하지 못하는 경우 입력해야 하는 최소 매개변수가 무엇이며 코드를 복사하여 붙여넣고 쓰레기를 버려야 합니다.

인사말, 텍스트의 필수 매개변수는 창 인덱스, 좌표 바인딩 및 텍스트 자체이고 나머지는 선택 사항입니다.

OBJ_LABEL 및 OBJ_TEXT의 두 가지 유형의 개체가 있음을 명심해야 합니다. 첫 번째 개체는 창 픽셀에 연결되고 두 번째 개체는 차트의 시간 및 가격에 연결됩니다.

픽셀에 바인딩된 텍스트 레이블이 필요하다고 가정하고 다음을 수행합니다.

   ObjectCreate ( 0 ,name, OBJ_LABEL , 0 , 0 , 0 ); // создаём объект в текущем (нулевом окне)
   ObjectSetString ( 0 ,name, OBJPROP_TEXT ,text); // указываем какой текст должен в нём отображаться
   ObjectSetString ( 0 ,name, OBJPROP_FONT ,fontname); // назначаем шрифт например Verdana или Tahoma
   ObjectSetInteger ( 0 ,name, OBJPROP_FONTSIZE ,fontsize); // назначаем размер шрифта
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , text_color); // назначаем цвет шрифта
   ObjectSetInteger ( 0 ,name, OBJPROP_CORNER ,text_corner); // указываем от какого угла окна отсчитывать пиксели
   ObjectSetInteger ( 0 ,name, OBJPROP_ANCHOR ,text_anchor); // указываем как должен быть выровнен текст по центру или какому-то краю
   ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,XOFFSET); // указываем координату по горизонтали
   ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,YOFFSET); // указываем координату по вертикали
   ObjectSetInteger ( 0 ,name, OBJPROP_SELECTABLE , false ); // указываем можно ли выделять и двигать метку мышкой или нельзя

이것은 텍스트 레이블을 그리는 거의 최소한의 코드입니다.

OBJ_TEXT 개체의 경우에도 가격 및 시간 속성만 설정하면 됩니다.

   ObjectSetDouble ( 0 ,name, OBJPROP_PRICE , 0 ,price);
   ObjectSetInteger ( 0 ,name, OBJPROP_TIME , 0 ,time);



text_corner는 상수 값 중 하나여야 합니다.

식별자

설명

CORNER_LEFT_UPPER

차트의 왼쪽 상단 모서리에 있는 좌표 중심

CORNER_LEFT_LOWER

그래프의 왼쪽 하단 모서리에 있는 좌표 중심

CORNER_RIGHT_LOWER

그래프의 오른쪽 하단 모서리에 있는 좌표 중심

CORNER_RIGHT_UPPER

차트의 오른쪽 상단 모서리에 있는 좌표 중심


자세한 내용은 여기를 참조하십시오: https://www.mql5.com/en/docs/constants/objectconstants/enum_basecorner#enum_base_corner




text_corner는 상수 값 중 하나여야 합니다.

식별자

설명

ANCHOR_LEFT_UPPER

왼쪽 상단 모서리의 앵커 포인트

ANCHOR_LEFT

기준점 왼쪽 중앙

ANCHOR_LEFT_LOWER

왼쪽 하단 모서리의 앵커 포인트

ANCHOR_LOWER

앵커 포인트 하단 중앙

ANCHOR_RIGHT_LOWER

오른쪽 하단 모서리의 앵커 포인트

ANCHOR_RIGHT

기준점 오른쪽 중앙

ANCHOR_RIGHT_UPPER

오른쪽 상단 모서리의 앵커 포인트

ANCHOR_UPPER

앵커 포인트 상단 중앙

ANCHOR_CENTER

개체의 중심에 있는 기준점


자세한 내용은 여기를 참조하십시오: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner



표준 라이브러리 #include <ChartObjects\ChartObject.mqh>를 포함하고 해당 클래스를 사용할 수도 있지만 이것은 당신의 삶을 복잡하게 만들 뿐인 것 같습니다.

 
transcendreamer :

인사말, 텍스트의 필수 매개변수는 창 인덱스, 좌표 바인딩 및 텍스트 자체이고 나머지는 선택 사항입니다.

OBJ_LABEL 및 OBJ_TEXT의 두 가지 유형의 개체가 있음을 명심해야 합니다. 첫 번째 개체는 창 픽셀에 연결되고 두 번째 개체는 차트의 시간 및 가격에 연결됩니다.

픽셀에 바인딩된 텍스트 레이블이 필요하다고 가정하고 다음을 수행합니다.

이것은 텍스트 레이블을 그리는 거의 최소한의 코드입니다.

OBJ_TEXT 개체의 경우에도 가격 및 시간 속성만 설정하면 됩니다.


신의 축복이 있기를) 요점은 본문뿐 아니라 많은 것, 심지어 지표 버퍼에도 있다. 그는 왜 카트를 떠났을까?)

 
Алексей КоКоКо :

신의 축복이 있기를) 요점은 본문뿐 아니라 많은 것, 심지어 지표 버퍼에도 있다. 그는 왜 카트를 떠났을까?)

무엇이든 물어보시면 비밀댓글로 해주셔도 되지만 편집증의 공격으로 Chekists 가 저를 알아보지 못하도록 카트를 남겨두었습니다 😀

 
Artyom Trishkin :

정답은 아주 간단합니다...

그리고 어느? 지금 당장 글을 쓰지 않는 이유는 무엇입니까?

 
안녕하세요 여러분 스타아워와 스탑아워를 하나의 EA에 넣었습니다 특정 시간에 주문이 열리도록 하기 위해서인데 예를 들어 22시에 오픈한 주문이 스탑아워(23:00)에 닫히지 않을줄은 몰랐네요
그 전에는 포지션 을 청산하라는 표시기의 신호가 없었고 23:00 이후에는 결정을 내리는 것이 전혀 금지되어 있습니다.

EA가 스톱아워(23:00) 이후에 열린 포지션을 닫을 수 있게 하는 방법을 알려주세요.
또는 밤새도록 유지하지 않도록 모든 위치를 23:00에 마감했습니다.


미리 감사합니다
 
Eugen8519 :
안녕하세요 여러분 스타아워와 스탑아워를 하나의 EA에 넣었습니다 특정 시간에 주문이 열리도록 하기 위해서인데 예를 들어 22시에 오픈한 주문이 스탑아워(23:00)에 닫히지 않을줄은 몰랐네요
그 전에는 포지션 을 청산하라는 표시기의 신호가 없었고 23:00 이후에는 결정을 내리는 것이 전혀 금지되어 있습니다.

EA가 스톱아워(23:00) 이후에 열린 포지션을 닫을 수 있게 하는 방법을 알려주세요.
또는 밤새도록 유지하지 않도록 모든 위치를 23:00에 마감했습니다.


미리 감사합니다

개시 주문에 대해서만 "스타아워 및 스탑아워"를 입력하십시오.

 
MakarFX :

개시 주문에 대해서만 "스타아워 및 스탑아워"를 입력하십시오.

그것이 문제입니다. 시작 시간->정지 시간 주문만 열고 닫습니다.
그리고 미결 주문은 스톱아워 이후에 닫히지 않습니다.

스톱아워 이후에는 거래할 수 없기 때문에



전역 매개변수가 있습니다.

 bool            UseTimeLimit = true ;
int             startHour    = 15 ;
int             stopHour     = 23 ;
bool            YesStop= false ;
input            ENUM_TIMEFRAMES Timeframe = PERIOD_CURRENT ;



그리고 온틱에서

 if (UseTimeLimit)
  {
    YesStop= true ;
     MqlDateTime str1;
     TimeToStruct ( TimeCurrent () , str1);
     if (str1.hour > startHour && str1.hour < stopHour)
       YesStop= false ;
       if (YesStop)
       return ;
  }
 
Eugen8519 :
그것이 문제입니다. 시작 시간->정지 시간 주문만 열고 닫습니다.
그리고 미결 주문은 스톱아워 이후에 닫히지 않습니다.
주문 마감 기능 표시
 
Eugen8519 :
그것이 문제입니다. 시작 시간->정지 시간 주문만 열고 닫습니다.
그리고 미결 주문은 스톱아워 이후에 닫히지 않습니다.

이 정도

 if (UseTimeLimit)
  {
    YesStop= true ;
     MqlDateTime str1;
     TimeToStruct ( TimeCurrent () , str1);
     if (str1.hour > startHour && str1.hour < stopHour)
       YesStop= false ;
       if (YesStop)
       return ;
  }
....
if (YesStop== false )
  {
   условие для открытия ордеров
  }
 
MakarFX :

이 정도

이렇게 주문이 마감됩니다



(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+ 1 ]>WMA0[m_bar_current+ 1 ]) //Buy
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Sell" );
     }
//if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
   if (EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+ 1 ]<WMA0[m_bar_current+ 1 ]) //Sell
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Buy" );
     }


 void CLOSEORDER( string ord)
  {
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
       if (m_position.SelectByIndex(i))
         if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
           {
             if (m_position.PositionType()== POSITION_TYPE_BUY && ord== "Buy" )
               m_trade.PositionClose(m_position.Ticket());   // Close Buy
             if (m_position.PositionType()== POSITION_TYPE_SELL && ord== "Sell" )
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }