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

 
Константин :
@Artyom 트리쉬킨

그 문제에 대해 조언할 수 있습니까?

칠면조에 대한 다양한 정보를 알려드릴 수 있습니다.

우선: 꿩과의 새. 다이어트 고기. 고양이에게 먹입니다. 맛있다고 하네요...

 
Константин :

그 문제에 대해 조언할 수 있습니까?

그리고 이 경우 지표에서 스크립트를 실행해야 하는 이유는 무엇입니까?

 
Mihail Matkovskij :

그러나 이 경우 표시기에서 스크립트를 실행하라는 말도 안되는 소리를 누가 했습니까? :)

그리고 가장 중요한 이유는?...

지표에서 가져온 매개변수로 버튼을 눌러 스크립트를 실행할 수 있도록 차트에 버튼 을 만들고 싶습니다.

 
Константин :

지표에서 가져온 매개변수로 버튼을 눌러 스크립트를 실행할 수 있도록 차트에 버튼 을 만들고 싶습니다.

표시기 코드에 버튼 코드를 작성하고 스크립트 코드를 표시기 코드에 함수로 통합합니다. 버튼을 눌렀습니다 - 표시기 매개변수를 전달하는 기능이라고 합니다.

 
Константин :

지표에서 가져온 매개변수로 버튼을 눌러 스크립트를 실행할 수 있도록 차트에 버튼 을 만들고 싶습니다.

버튼 자체를 만드는 데 문제가 있는 경우 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                  ClickButton.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version    "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#include <ChartObjects\ChartObjectsTxtControls.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CChartObjectButton button;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit () {
  button.Create( 0 , "pushBtn" , 0 , 30 , 30 , 80 , 21 );
  button.SetString( OBJPROP_TEXT , "Push my" );
  button.SetInteger( OBJPROP_BGCOLOR , clrDodgerBlue );
  button.Color( clrWhite );
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[]) {
//---
//--- 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_CLICK ) {
     if (sparam == button.Name()) {
       Alert ( "Button \"" +sparam+ "\" clicked!" ); // Вместо этого функция с кодом...
      button.State( 0 );
       ChartRedraw ( 0 );
    }
  }
}
//+------------------------------------------------------------------+
 
Mihail Matkovskij :

버튼 자체를 만드는 데 문제가 있는 경우 여기:

덕분에 스크립트를 첨부하는 방법을 알아낼 때까지 버튼을 알아냈습니다. C:\Users\...\MQL4\Scripts\Order.ex4의 스크립트

 
질문 하나 더. 마우스 없이 Windows에서 작은 태블릿을 사용하는데 차트의 버튼 이 편리한 솔루션입니다. 차트에서 버튼을 눌렀을 때 키보드 명령어 Ctrl + F5가 실행될 수 있다면 트레이스를 보는 것이 더 편할 것 같습니다. 프로필.
 
Константин :

덕분에 스크립트를 첨부하는 방법을 알아낼 때까지 버튼을 알아냈습니다. C:\Users\...\MQL4\Scripts\Order.ex4의 스크립트

스크립트에 바로 가기 키 조합을 할당하고 WinAPI를 사용하여 시뮬레이션합니다. 그러나 MQL 프로그램에서는 그런 종류의 작업을 하지 않았습니다. 따라서 " SendInput User32.dll WinAPI "를 인터넷 검색을 시도하십시오.

 

안녕하세요!

한 가지 질문으로 고민하고 있습니다. 해결 방법을 알려주세요.

본질은 이것입니다: 캔들의 이전 고점을 따라 이 그려집니다. 나는 이전 고점에 따라 이동하는 라인이 필요합니다.

 void OnTick ()
  {
//---
   double    o1 = iOpen ( Symbol (), Period (), 1 );
   double    h1 = iHigh ( Symbol (), Period (), 1 );
   double    l1 = iLow ( Symbol (), Period (), 1 );
   double    c1 = iClose ( Symbol (), Period (), 1 );
   double    c0 = iClose ( Symbol (), Period (), 0 );
   double    rt = 0 ;
   double    rs1 = 0 ;


rt= MathAbs (c1-o1)/ _Point ; //размер тела свечи
rs1= MathAbs (h1-c1)/ _Point ; // размер верхней тени свечи


if (rs1>=rt) // условие для построения уровней (если верхняя тень предыдущей свечи, больше, или равна телу этой же всечи, то...   
{
double PRH= iHigh ( Symbol (), _Period , 1 ); // то это будет максимум
ObjectCreate ( 0 , "HL" , OBJ_HLINE , 0 , _Period ,PRH); // и строим по этому максимуму, горизонтальную линию
Comment ( "ЦЕНА МАКС =======" ,PRH, "\n" ); // комментарий пред. максимума
}
}
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
Alexey Belyakov :

안녕하세요!

한 가지 질문으로 고민하고 있습니다. 해결 방법을 알려주세요.

본질은 이것입니다: 캔들의 이전 고점을 따라 이 그려집니다. 나는 이전 고점에 따라 이동하는 라인이 필요합니다.

2가지 옵션이 있습니다
1. 생성 전 객체 삭제
2. 객체 생성 후 가격 설정