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

 
HUNTERGOOD :

좋은 오후에요 여러분. 친애하는 프로그래머 여러분, 각 Alert3.Lv1;2;3에 대해 사운드 파일을 지정하는 기능이 있는 표시기에 한 줄을 삽입하여 사용자가 지정한 다른 사운드가 트리거되도록 도와주세요.

좋은 오후에요 여러분. 친애하는 프로그래머 여러분, 각 Alert3.Lv1;2;3에 대해 사운드 파일을 지정하는 기능이 있는 표시기에 한 줄을 삽입하여 사용자가 지정한 다른 사운드가 트리거되도록 도와주세요.

좋은 오후에요 여러분. 친애하는 프로그래머 여러분, 각 Alert3.Lv1;2;3에 대해 사운드 파일을 지정하는 기능이 있는 표시기에 한 줄을 삽입하여 사용자가 지정한 다른 사운드가 트리거되도록 도와주세요.

시작하면 도움이 될 것입니다.

시작하면 도움이 될 것입니다.

시작하면 도움이 될 것입니다.

 

도와주세요, 스케이트는 미끄러지지 않습니다.

그래픽 패널 로 작업하고 나만의 패널을 만드는 방법을 배우려고 합니다.

패널을 이동할 때 패널의 모든 개체를 좌표로 안내해야 하는 2개의 직사각형(기본 1개)을 만들었습니다.

ChartEvent에서 이런 조건을 만들었는데 이제 메인 사각형을 움직이면 그 뒤에 있는 두 번째 사각형이 2~3초 후에만 이동하는데 어떻게 수정하나요??
CHARTEVENT_MOUSE_MOVE를 시도한 상태에서도 동일한 효과

 input string ds; //Параметры заднего фона панели
input int x_offset_anchor= 100 ;
input int y_offset_anchor= 100 ;
int anchor_width= 150 ;
int anchor_height= 20 ;
int back_height= 100 ;
input color anchor_color= clrBlue , back_color= clrAquamarine , clrBorder= clrAliceBlue ;
input string ds2; //
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   RectLabelCreate( 0 , "Back_panel_anchor_point" , 0 ,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color, BORDER_SUNKEN , CORNER_LEFT_UPPER ,clrBorder, STYLE_SOLID , 2 , false , true , true , 0 );
   RectLabelCreate( 0 , "Back_panel" , 0 ,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color, BORDER_SUNKEN , CORNER_LEFT_UPPER ,clrBorder, STYLE_SOLID , 1 , false , false , true , 0 );
   
   
   
   ChartSetInteger ( 0 , CHART_EVENT_MOUSE_MOVE , true );
//---
   return ( INIT_SUCCEEDED );
  }
void OnDeinit ( const int reason){
   ObjectsDeleteAll ( 0 ,- 1 ,- 1 );
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
   if (id == CHARTEVENT_OBJECT_DRAG && sparam == "Back_panel_anchor_point" )
      {
         ObjectDelete ( 0 , "Back_panel" );
         RectLabelCreate( 0 , "Back_panel" , 0 , ObjectGetInteger ( 0 , "Back_panel_anchor_point" , OBJPROP_XDISTANCE ), ObjectGetInteger ( 0 , "Back_panel_anchor_point" , OBJPROP_YDISTANCE )+anchor_height,anchor_width,back_height,back_color, BORDER_SUNKEN , CORNER_LEFT_UPPER ,clrBorder, STYLE_SOLID , 1 , false , false , true , 0 );
      }   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate( const long              chart_ID= 0 ,               // ID графика 
                     const string            name= "RectLabel" ,         // имя метки 
                     const int               sub_window= 0 ,             // номер подокна 
                     const int               x= 0 ,                       // координата по оси X 
                     const int               y= 0 ,                       // координата по оси Y 
                     const int               width= 50 ,                 // ширина 
                     const int               height= 18 ,                 // высота 
                     const color             back_clr= C'236,233,216' ,   // цвет фона 
                     const ENUM_BORDER_TYPE border= BORDER_SUNKEN ,     // тип границы 
                     const ENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // угол графика для привязки 
                     const color             clr= clrRed ,               // цвет плоской границы (Flat) 
                     const ENUM_LINE_STYLE   style= STYLE_SOLID ,         // стиль плоской границы 
                     const int               line_width= 1 ,             // толщина плоской границы 
                     const bool              back= false ,               // на заднем плане 
                     const bool              selection= false ,           // выделить для перемещений 
                     const bool              hidden= true ,               // скрыт в списке объектов 
                     const long              z_order= 0 )                 // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError (); 
//--- создадим прямоугольную метку 
   if (! ObjectCreate (chart_ID,name, OBJ_RECTANGLE_LABEL ,sub_window, 0 , 0 )) 
     { 
       Print ( __FUNCTION__ , 
             ": не удалось создать прямоугольную метку! Код ошибки = " , GetLastError ()); 
       return ( false ); 
     } 
//--- установим координаты метки 
   ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x); 
   ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y); 
//--- установим размеры метки 
   ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width); 
   ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height); 
//--- установим цвет фона 
   ObjectSetInteger (chart_ID,name, OBJPROP_BGCOLOR ,back_clr); 
//--- установим тип границы 
   ObjectSetInteger (chart_ID,name, OBJPROP_BORDER_TYPE ,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,line_width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back); 
//--- включим (true) или отключим (false) режим перемещения метки мышью 
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection); 
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order); 
//--- успешное выполнение 
   return ( true ); 
  } 
 
Roman Sharanov :

도와주세요, 스케이트는 미끄러지지 않습니다.

그래픽 패널로 작업하고 나만의 패널을 만드는 방법을 배우려고 합니다.

패널을 이동할 때 패널의 모든 개체를 좌표로 안내해야 하는 2개의 직사각형(기본 1개)을 만들었습니다.

ChartEvent에서 그런 조건을 만들었는데 이제 주 사각형을 이동하면 그 뒤에 있는 두 번째 사각형이 2-3초 후에만 이동합니다. 어떻게 할까요?
CHARTEVENT_MOUSE_MOVE를 시도한 상태에서도 동일한 효과

객체를 생성 하고 이동한 후 ChartRedraw()를 수행해야 합니다.

 
Vladislav Andruschenko :

객체를 생성 하고 이동한 후 ChartRedraw()를 수행해야 합니다.

예, 더 좋습니다. 그리고 내가 이해하는 것처럼 직선적이고 부드러운 슬라이딩은 불가능했습니다.

upd는 이 기본 사각형이 선택된 경우에만 다시 그리는 조건을 추가했고 이제 괜찮습니다. 도움을 주셔서 감사합니다!)

 

다른 스레드에서 다시 게시합니다. 누군가를 흔들고 도움을 받을 수도 있습니다.


< 지역 전문가들이 제 책상 이웃을 생각나게 합니다. (오, 얼마나 오래 전 일인지) - 그는 모든 규칙, 모든 공식을 알고 있었지만 어느 것을 적용해야 할지 즉시 알아낼 수 없었고 거의 모든 것을 그 때문에 그는 할당된 시간에 맞지 않습니다. 그래서 여기 있습니다. 그들은 많이 알고 있지만 문제에 대한 해결책을 보지 못하고 "과학적 찌르기" 방법을 사용하여 일합니다. 우리는 연구소에서 배웠습니다-숫자와 공식없이 문제를 해결해야 어떤 공식을 적용해야하는지 명확하게 알 수 있습니다. MKL4의 초심자는 언어의 복잡성을 이해하지 못하며 여기에서 도움이 필요합니다("교과서 읽기"라는 의미가 아님). 예, 하지만 포지션을 열거나 닫을 아무도 함정을 보여줄 수 없습니다. 어쩌면 그들은 모를까요? 그래서 그들은 브레이크에 내 질문을 넣어 ...>

 
안녕하세요, 파일에 현재 가격 을 쓰는 것을 도와주세요.
 
lil_lil :
안녕하세요, 파일에 현재 가격 을 쓰는 것을 도와주세요.

여기 봐 .

 
Artyom Trishkin :

시작하면 도움이 될 것입니다.

시작하면 도움이 될 것입니다.

시작하면 도움이 될 것입니다.

나는 당신의 풍자에 감사하지만 진정한 가치가 아닙니다. 무엇을 시작해야 합니까? 어디서 시작하고 어디서 시작하고 어디서 끝낼지 알았다면 이 포럼에서 경험이 많은 재소자들의 도움에 관심을 보이지 않았을 것입니다. 이런 종류의 활동, 즉 프로그래밍에 정통한 사람은 표시기에 특정 사운드 파일을 지정할 수 있도록 특정 위치에 몇 줄을 붙이는 것이 그리 어렵지 않을 것이라고 생각합니다. 그리고 당신은 나에게 "시작"할 것을 제안합니다. 이 위대하고 이해할 수 없는 코딩 기술을 마스터하기 시작하여 바로 이 라인을 올바르게 붙일 필요가 있는 곳을 알기 위해 어떤 기초가 필요합니까? 나, 그게...

 
HUNTERGOOD :

나는 당신의 풍자에 감사하지만 진정한 가치가 아닙니다. 무엇을 시작해야 합니까? 어디서 시작하고 어디서 시작하고 어디서 끝낼지 알았다면 이 포럼에서 경험이 많은 재소자들의 도움에 관심을 보이지 않았을 것입니다. 이런 종류의 활동, 즉 프로그래밍에 정통한 사람은 표시기에 특정 사운드 파일을 지정할 수 있도록 특정 위치에 몇 줄을 붙이는 것이 그리 어렵지 않을 것이라고 생각합니다. 그리고 당신은 나에게 "시작"할 것을 제안합니다. 이 위대하고 이해할 수 없는 코딩 기술을 마스터하기 시작하여 바로 이 라인을 올바르게 붙일 필요가 있는 곳을 알기 위해 어떤 기초가 필요합니까? 나, 그게...

Playsound 는 표시기에서 작동하지 않고 경고만 작동하며 소리는 1개입니다.
 
Alexey Viktorov :

여기 봐 .

감사합니다. 파일과 한 번에 값이 있지만 시간이 지남에 따라 내 작업이 늘어납니다.

120초마다 30분 동안 매일 시작하는 현재 가격과 시간을 기록합니다.

이전 항목을 덮어쓰지 마십시오.