MT5에 대한 소원 - 페이지 58

 
Urain :

편의를 제외하고는 더 이상 관련이 없습니다.

 int scale =( int ) ChartGetInteger (chart_id, CHART_SCALE );
int pointer_per_bar= pow ( 2 ,scale); // количество пикселей на бар
// остальное можно высчитать из первого видимого бара, и ширины графика в пикселях.

영형! 고마워요, 니콜라이! 당신은 그것을 끝까지 끝낼 수 있습니까? 음, 즉 4가지 특정 기능을 구현하기 전에:

 int   ChartGetX( datetime T);

int   ChartGetY( double P);

datetime ChartGetTime( int X);

double ChartGetPrice( int Y);

이미 솔리테어가 있는 것 같고, 나는 오랫동안 어지럽혀야 할 것입니다. 해주시면 정말 감사하겠습니다.

 

Renat :

하나의 기호에 대해 여러 Expert Advisors를 거래하는 것은 넌센스입니다.

이것은 하나의 차트에 여러 지표를 배치하는 기능보다 더 넌센스가 아닙니다.

MT4에서 한 번의 마우스 클릭으로 Expert Advisors로부터 복잡한 구조를 생성하여 포트폴리오를 생성할 수 있는 가능성은 매우 큽니다.

이 기능을 상위 5위 안에 들려면 거래 계정을 하위 계정으로 가상 분할할 수 있도록 지원하는 거래 클래스를 만드십시오.

또는 터미널에서 기존 가상 캐릭터를 기반으로 자신의 가상 캐릭터를 추가하는 기능을 만듭니다.

 

아마도 제가 새로운 MT5 기능에 뒤처지고 있을지 모르지만 막대와 가격이 아닌 X 및 Y 좌표로 차트를 표시할 수 있기를 바랍니다. 이미 그러한 가능성이 있다면 알려주세요. 그런 가능성이 있다면 XY_Symbol 기호/도구가 있는 그래픽 OBJ_CHART 개체 를 사용하여 구현하는 것이 어렵지 않다고 생각합니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
MetaDriver :

영형! 고마워요, 니콜라이! 당신은 그것을 끝까지 끝낼 수 있습니까? 음, 즉 4가지 특정 기능을 구현하기 전에:

이미 솔리테어가 있는 것 같고, 나는 오랫동안 어지럽혀야 할 것입니다. 해주시면 정말 감사하겠습니다.

이런 곳. 다른 스냅 각도 가 필요한 경우 창의 픽셀 치수에서 다시 계산할 수 있습니다.

 //+------------------------------------------------------------------+
//| Преобразование координат. Верхний левый угол привязки            |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| time to X                                                        |
//+------------------------------------------------------------------+
int WindowGetX( long chart_id, datetime T)
  {
   datetime temp[]; int bar=( int ) ChartGetInteger (chart_id, CHART_FIRST_VISIBLE_BAR );
   CopyTime ( ChartSymbol (chart_id), ChartPeriod (chart_id),bar, 1 ,temp);
   return (( int ) NormalizeDouble (
          ((T-temp[ 0 ])/( double ) PeriodSeconds ( ChartPeriod (chart_id)))*
           pow ( 2 , ChartGetInteger (chart_id, CHART_SCALE )), 0 ));
  };
//+------------------------------------------------------------------+
//| price to Y                                                       |
//+------------------------------------------------------------------+
int WindowGetY( long chart_id, double P)
  {
   return (( int )(( ChartGetDouble (chart_id, CHART_PRICE_MAX )-P)*
          ( ChartGetInteger (chart_id, CHART_HEIGHT_IN_PIXELS )/
          ( ChartGetDouble (chart_id, CHART_PRICE_MAX )- ChartGetDouble (chart_id, CHART_PRICE_MIN )))));
  };
//+------------------------------------------------------------------+
//| X to time                                                        |
//+------------------------------------------------------------------+
datetime WindowGetTime( long chart_id, int X)
  {
   datetime temp[]; int bar=( int ) ChartGetInteger (chart_id, CHART_FIRST_VISIBLE_BAR );
   CopyTime ( ChartSymbol (chart_id), ChartPeriod (chart_id),bar, 1 ,temp);
   return (( datetime )(temp[ 0 ]+
          (X/( double ) pow ( 2 , ChartGetInteger (chart_id, CHART_SCALE )))*
           PeriodSeconds ( ChartPeriod (chart_id))));
  };
//+------------------------------------------------------------------+
//| Y to price                                                       |
//+------------------------------------------------------------------+
double WindowGetPrice( long chart_id, int Y)
  {
   return ( ChartGetDouble (chart_id, CHART_PRICE_MAX )-Y/
          ( ChartGetInteger (chart_id, CHART_HEIGHT_IN_PIXELS )/
           ChartGetDouble (chart_id, CHART_PRICE_MAX )- ChartGetDouble (chart_id, CHART_PRICE_MIN )));
  };

호출 예

 void OnStart ()
  {
   datetime T= StringToTime ( "2011.02.25 18:12" );
   double P= 1.37831 ;
   Object( ChartID (),T,P);
  }
//+------------------------------------------------------------------+
void Object( long chart_id, datetime T, double P)
  {
   int x=WindowGetX(chart_id,T);
   int y=WindowGetY(chart_id,P);
   string name= "Button" ;
   if ( ObjectCreate (chart_id,name, OBJ_BUTTON , 0 , 0 , 0 , 0 , 0 ))
     { //---
       ObjectSetInteger (chart_id,name, OBJPROP_BACK , 1 );
       ObjectSetInteger (chart_id,name, OBJPROP_SELECTABLE , false );
       ObjectSetInteger (chart_id,name, OBJPROP_STATE , false );
       //--- привяжем кнопку к правому верхнему углу графика
       ObjectSetInteger (chart_id,name, OBJPROP_CORNER , CORNER_LEFT_UPPER );
       //--- теперь настроим свойства объекта      
       ObjectSetInteger (chart_id,name, OBJPROP_XSIZE , 40 );
       ObjectSetInteger (chart_id,name, OBJPROP_YSIZE , 40 );
       ObjectSetInteger (chart_id,name, OBJPROP_BGCOLOR , Silver );
       ObjectSetInteger (chart_id,name, OBJPROP_XDISTANCE ,x);
       ObjectSetInteger (chart_id,name, OBJPROP_YDISTANCE ,y);
     }
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки - Документация по MQL5
 
반복하지만 이러한 기능을 표준으로 하는 것이 좋습니다 . 그러면 이 스레드를 읽는 사람들뿐만 아니라 언어의 모든 사용자가 이에 대해 알게 됩니다.
 
포스트를 코드로 수정하고 별도의 함수(클래스 없음)로 설명 하고 바인딩 각도 를 변경했습니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки - Документация по MQL5
 
Urain :
반복하지만 이러한 기능을 표준으로 하는 것이 좋습니다 . 그러면 이 스레드를 읽는 사람들뿐만 아니라 언어의 모든 사용자가 이에 대해 알게 됩니다.

고맙습니다!
 
MetaDriver :
고맙습니다!
확인하십시오. 그렇지 않으면 때때로 데이터가 없고 0으로 나누어집니다 .
 

함수의 표준 구현을 보고 싶습니다. 주어진 시간에 검색창 번호 .

이제 CArrayLong 을 통해 구현하고 있습니다. 그러나 동시에 이미 차트 자체에 있는 많은 데이터를 로드해야 합니다. 즉, 실제로 메모리를 복제하는 것입니다. 표준 형식에서는 모든 것이 훨씬 더 빨리 작동할 것이라고 생각합니다.

 
Urain :
확인하십시오. 그렇지 않으면 때때로 데이터가없고 0으로 나누기가 나타납니다.
확인.