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

 
EVGENII SHELIPOV # :

마카르, 뭔가 잘못됐어. 감사합니다. 나는 나 자신이 아주 아름다운 옵션은 아니지만 작동합니다.

GetAveragePriceManMaxOrders() 호출이 어디로 가는지 표시
 

MakarFX # :
Покажи где идет обращение к GetAveragePriceManMaxOrders()

 ObjectCreate ( 0 , "AveragePriceLineMinMaxOrders0" , OBJ_HLINE , 0 , 0 , GetAveragePriceManMaxOrders( 0 ));
   ObjectSet( "AveragePriceLineMinMaxOrders0" , OBJPROP_COLOR , clrLime );
   ObjectSet( "AveragePriceLineMinMaxOrders0" , OBJPROP_STYLE , STYLE_DASH );
   ObjectCreate ( 0 , "AveragePriceLineMinMaxOrders1" , OBJ_HLINE , 0 , 0 , GetAveragePriceManMaxOrders( 1 ));
   ObjectSet( "AveragePriceLineMinMaxOrders1" , OBJPROP_COLOR , clrRed );
   ObjectSet( "AveragePriceLineMinMaxOrders1" , OBJPROP_STYLE , STYLE_DASH );

Makar, 아직 이 기능에 대해 진지하게 고민하고 있는 것은 없습니다. 그것은 단지 물체의 시각화에 대한 호소를 만들었습니다. 이 기능은 미래를 위한 것입니다.

 
EVGENII SHELIPOV # :

Makar, 아직 이 기능에 대해 진지하게 고민하고 있는 것은 없습니다. 그것은 단지 물체의 시각화에 대한 호소를 만들었습니다. 이 기능은 미래를 위한 것입니다.

제거하다

 ObjectCreate ( 0 , "AveragePriceLineMinMaxOrders0" , OBJ_HLINE , 0 , 0 , GetAveragePriceManMaxOrders( 0 ));
   ObjectSet( "AveragePriceLineMinMaxOrders0" , OBJPROP_COLOR , clrLime );
   ObjectSet( "AveragePriceLineMinMaxOrders0" , OBJPROP_STYLE , STYLE_DASH );
   ObjectCreate ( 0 , "AveragePriceLineMinMaxOrders1" , OBJ_HLINE , 0 , 0 , GetAveragePriceManMaxOrders( 1 ));
   ObjectSet( "AveragePriceLineMinMaxOrders1" , OBJPROP_COLOR , clrRed );
   ObjectSet( "AveragePriceLineMinMaxOrders1" , OBJPROP_STYLE , STYLE_DASH );

모든 것이 작동해야 합니다.

 

좋은 오후에요 여러분. MT4에 그런 작업이 있습니다. 처음에는 하루가 시작될 때 중기 템플릿이 있는 다양한 도구의 차트 30개가 열리고 자체 매개 변수가 있는 지표와 조언자가 모든 차트에 표시됩니다. 그런 다음 차트를 분석하고 신호가 있는 곳으로 이동합니다.   d1에서 n1까지 그리고 n1에 신호가 있으면 어드바이저가 포지션을 열고 동행합니다. 하루가 끝나면 차트의 일부는 d1에 남아 있고 다른 일부는 n1에 남아 있는 것으로 나타났습니다. 그리고 다음날 초에 모든 차트가 지표와 매개변수가 저장된 어드바이저와 함께 d1에 있어야 합니다. 모든 그래픽이 d1에 있을 때 프로필을 저장하려고 했습니다. 이 프로필을 로드하지만 h1으로 전환된 그래픽은 이 TF에 남아 있습니다. 차트에 넣고 구성한 모든 항목을 저장하면서 터미널에서 열려 있는 모든 차트를 d1으로 간단하고 빠르게 전환할 수 있는 기성 솔루션이 있습니까? 스크립트, 고문 또는 다른 무엇입니까?

그리고 두 번째 질문은 30개의 차트가 열려 있고 모든 차트가 있는 하단 밴드의 맨 오른쪽에 서 있으면 차트 하나를 스크롤하지 않고 클릭 한 번으로 맨 오른쪽 차트로 전환할 수 있습니까?


30개 중 가장 오른쪽 그래프. 1씩 오른쪽으로 스크롤 - 한 번의 클릭으로 가장 오른쪽 그래프로 이동하는 방법?

 
DanilaMactep # :

좋은 오후에요 여러분. MT4에 그런 작업이 있습니다. 처음에는 하루가 시작될 때 중기 템플릿이 있는 다양한 도구의 차트 30개가 열리고 자체 매개 변수가 있는 지표와 조언자가 모든 차트에 표시됩니다. 그런 다음 차트를 분석하고 신호가 있는 곳으로 이동합니다.   d1에서 n1까지 그리고 n1에 신호가 있으면 어드바이저가 포지션을 열고 동행합니다. 하루가 끝나면 차트의 일부는 d1에 남아 있고 다른 일부는 n1에 남아 있는 것으로 나타났습니다. 그리고 다음날 초에 모든 차트가 지표와 매개변수가 저장된 어드바이저와 함께 d1에 있어야 합니다. 모든 그래픽이 d1에 있을 때 프로필을 저장하려고 했습니다. 이 프로필을 로드하지만 h1으로 전환된 그래픽은 이 TF에 남아 있습니다. 차트에 넣고 구성한 모든 항목을 저장하면서 터미널에서 열려 있는 모든 차트를 d1으로 간단하고 빠르게 전환할 수 있는 기성 솔루션이 있습니까? 스크립트, 고문 또는 다른 무엇입니까?

그리고 두 번째 질문은 30개의 차트가 열려 있고 모든 차트가 있는 하단 밴드의 맨 오른쪽에 서 있으면 차트 하나를 스크롤하지 않고 클릭 한 번으로 맨 오른쪽 차트로 전환할 수 있습니까?

이 문제에 도움이 될 스크립트는 다음과 같습니다.

 /********************************************************************\
|                                                           Test.mq5 |
|                                            © 2021, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "Viktorov"
#property link        " https://www.mql5.com/ru/users/alexeyvik/news "
#property version    "1.00"
#property strict

/********************Script program start function*******************/
void OnStart ()
 {
   long prevChart = ChartFirst ();
   while (prevChart >= 0 )
   {
     if ( ChartPeriod (prevChart) != PERIOD_D1 )
       ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart), PERIOD_D1 );
    prevChart = ChartNext (prevChart);
   }
 } /******************************************************************/
/*****************************End program****************************/

두 번째 질문에서는 키보드 단축키 ctrl + tab 또는 ctrl + shift + tab이 도움이 될 것입니다.

또는 한 줄의 코드로 스크립트 작성

 ChartSetInteger ( ChartFirst (), CHART_BRING_TO_TOP , 0 , true )
 
Alexey Viktorov # :

이 문제에 도움이 될 스크립트는 다음과 같습니다.

두 번째 질문에서는 키보드 단축키 ctrl + tab 또는 ctrl + shift + tab이 도움이 될 것입니다.

또는 한 줄의 코드로 스크립트 작성

코드에 감사드립니다. 스크립트에 삽입하겠습니다. 작동하고 폭발 없이 관리되기를 바랍니다 :-) ;-)
 
Alexey Viktorov # :

다음은 이 문제에 도움이 되는 스크립트입니다.

두 번째 질문에서는 키보드 단축키 ctrl + tab 또는 ctrl + shift + tab이 도움이 될 것입니다.

또는 한 줄의 코드로 스크립트 작성

모든 것이 훌륭했습니다. 정말 감사합니다. 이제 많은 시간과 노력을 절약할 수 있습니다.

 
안녕하세요! 경험 많은 사용자와 명확히 하고 싶었습니다. 매우 간단한 표시기가 있습니다. 아래 코드를 첨부합니다 . Metatrader5 터미널 로 이동하고 싶은데 mql4로 작성된 현재 표시기가 맞지 않습니다. 트리거의 기본 원칙이 다시 작성하는 방법이 있습니까? 표시기 또는 어떻게 든 변환 할 수 있습니까?
 //+--где индикатор если indicator_chart_window то на график у нас в отдельном окне
#property indicator_separate_window
//+--уровни это сколько масивов Buf0[],Buf1[],Buf2[]; у нас каждый масив это линия
#property indicator_buffers 3
//+--сколько линий и какого цвета
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Blue 
//+-- ширина линии
#property indicator_width1    2
#property indicator_width2    3
#property indicator_width3    3
//+--уровни
#property indicator_level1 30 //+--уровень 1
#property indicator_level2 50 //+--уровень 2
#property indicator_levelstyle 2 //+--тип линии уровня 2 - это пунктир
#property indicator_levelcolor Black //+-- цвет линии уровня
//+-- то что будет в окне "входные параметры"                                         
extern int RSIPERIOD= 5 ;
extern double KOEFF1= 1.4 ;
extern double KOEFF2= 2 ; 
//+-- описываем какие у нас массивы (их три) и перменные (в даном случае параметры РСАЙ (D10,D11,D12;) это переменная                                                                                                                                                       
double Buf0[],Buf1[],Buf2[];
double D10,D11,D12;
//+-- Блок init ПРЕДПОЛОДЖИТЕЛЬНО описательный                                                                                                                                                                                                                                                                                                                                      
int init()
  {
   IndicatorDigits( 0 ); //+--формат точности (количество знаков после десятичной точки) для визуализации значений индикатора в окне индикатора (цифры rsi 7 или 7,23)
   string short_name= "KAVRSI" ;   //+-- задаем 2 строчками короткое имя        
   IndicatorShortName( "KAVRSI" ); //+-- задаем 2 строчками короткое имя
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;; //+--тут мы высчитываем переменные которые описали как масивы выше
 
   SetIndexBuffer ( 0 ,Buf0); //+-- описываем 1 массив Buf0[] первый это нулевой второй это первый и т.д.
   SetIndexStyle ( 0 , DRAW_LINE ); //+-- говорим что этот масив хотим представить в виде линии 0 это порядковый номер линии соответствует номеру масива 
   SetIndexBuffer ( 1 ,Buf1); //+-- описываем 2 массив Buf1[]
   SetIndexStyle ( 1 , DRAW_LINE ); //+-- 1 это порядковый номер линии соответствует номеру масива Buf1[]
   SetIndexBuffer ( 2 ,Buf2);
   SetIndexStyle ( 2 , DRAW_LINE );
   return ( 0 );
  }
//+-- Блок start сама математика и ОТРИСОВКА                                                                                                             
int start()
  {
   if ( Bars <=RSIPERIOD) return ( 0 ); //+-- начинаем задавать условия если количество баров меньше расчета (баров 9 а мы считаем по 14) то выдаем 0
   int ExtCountedBars=IndicatorCounted(); //+--Возвращает количество баров, не измененных после последнего вызова индикатора.
   //---- последний посчитанный бар будет пересчитан
   if (ExtCountedBars> 0 ) ExtCountedBars--;
   if (ExtCountedBars< 0 ) return (- 1 );
   //+-- for(int для int это переменна в нашем случае видимо int ExtCountedBars=IndicatorCounted()
   //+-- и тут мы задаем параметр i - его свойства и описание на основе пересчитаных баров 
   //+-- в нашем случае НЕТ НЕ ПЕРЕСЧИТАННЫХ - считаеться и последний! 
   for ( int i= 0 ;i< Bars -RSIPERIOD;i++)
      {
       Buf0[i] = iRSI ( NULL , 0 ,D10, 0 ,i); //+-- говорим что 1 массив это рсай с параметром D10
//+-- Пишем в коде что бы ВМЕСТО красной и синей линией RSI2 и RSI3 была одна линия - 
//+-- чтобы вместо красной и синей была одна - мы получаем среднее значение этих линий, т.е.     
       Buf1[i] = ( iRSI ( NULL , 0 ,D11, 0 ,i)+ iRSI ( NULL , 0 ,D12, 0 ,i))/ 2 ; //+-- и у этой линии, по умолчанию, красный цвет  
//+-- когда выполняется условие
       if ( iRSI ( NULL , 0 ,D11, 0 ,i)> iRSI ( NULL , 0 ,D12, 0 ,i))
//+-- то мы не меняем цвет линии, т.к. в МТ4 это нельзя сделать,
//+-- а берем и накладываем сверху другую линию с другим цветом      
       Buf2[i] = Buf1[i]; 
       else
       Buf2[i] = EMPTY_VALUE ; //+-- добавляем else Buf2[i] = EMPTY_VALUE; EMPTY_VALUE - Пустое значение в индикаторном буфере 
      }
   return ( 0 );
  }
 

안녕하세요!

MQL5에 대해 유료 상담을 해주시는 프로그래머분들의 답변 부탁드립니다!

또는 누군가가 조언할 수 있습니다. 고마울거야!

 
Peperoni # :

안녕하세요!

유료 상담해주시는 프로그래머분들의 답변 부탁드립니다!

또는 누군가가 조언할 수 있습니다. 고마울거야!

프리랜서 또는 여기에서 질문하십시오.

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2021.11.02
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5