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

 
DanilaMactep 열려 있는 모든 차트 를 h1 기간으로 전환합니다. 그리고 스크립트가 지정된 이름의 템플릿을 열려 있는 모든 차트에 적용하도록 코드를 다시 만드는 방법은 무엇입니까?

여기, 이것이 당신을 도울 것입니다.

 ChartApplyTemplate ( 0 , "..........tpl" ))
 
Alekseu Fedotov # :

여기, 이것이 당신을 도울 것입니다.

그리고 특히 "영재"인 사람에게 기능을 설명하십시오.
 ChartApplyTemplate()
스크립트는 어디에 배치해야 합니까?
 
DanilaMactep # :
그리고 특히 "영재"인 사람에게 스크립트의 위치를 대체해야 하는 기능을 설명하십시오.

여기 스크립트가 있습니다

 //+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "ADX" ; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ;   //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   long currChart, prevChart = ChartFirst ();
   int i = 0 , limit = 100 ;
   bool errTemplate;
   while (i < limit)
     {
      currChart = ChartNext (prevChart);
       if (TimeFrame != PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate (prevChart, Template + ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart < 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" , currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
파일:
 
137 Matrix # :

여기 스크립트가 있습니다

코드에 대해 정말 감사합니다. 내일 메타에디터에서 수정하겠습니다. 오늘은 너무 늦었습니다.

 
137 Matrix # :

여기 스크립트가 있습니다

안녕하세요. 다음과 같이 코드를 스크립트로 옮겼습니다.
 //+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "АВТОР - КОПИЯ 1"
#property link        " https://vk.com/danila_mastep "
#property version    "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "default" ; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ;   //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   long currChart, prevChart = ChartFirst ();
   int i = 0 , limit = 100 ;
   bool errTemplate;
   while (i < limit)
     {
      currChart = ChartNext (prevChart);
       if (TimeFrame != PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate (prevChart, Template + ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart < 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" , currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+

차트로 드래그하고 입력 매개변수에 템플릿 이름을 입력하면 터미널이 응답을 멈추고 아무 일도 일어나지 않습니다. 템플릿이 모든 차트에 적용되는 것은 아닙니다 :-( 제가 코드를 잘못 전송한 건가요 아니면 다른 문제가 있는 건가요? 템플릿 이름을 다시 확인했습니다 - 점 tpl 없이 이름만 입력합니다
 
DanilaMactep # :
안녕하세요. 다음과 같이 코드를 스크립트로 옮겼습니다.
차트로 드래그하고 입력 매개변수에 템플릿 이름을 입력하면 터미널이 응답을 멈추고 아무 일도 일어나지 않습니다. 템플릿이 모든 차트에 적용되는 것은 아닙니다 :-( 제가 코드를 잘못 전송한 건가요 아니면 다른 문제가 있는 건가요? 템플릿 이름을 다시 확인했습니다 - 점 tpl 없이 이름만 입력합니다

이름을 입력하고 열려 있는 모든 차트에 - 이 템플릿이 열립니다.

예를 들어 - 템플릿 이름으로 템플릿 을 저장하고 스크립트 설정에서 다음과 같이 템플릿을 입력합니다.

 
DanilaMactep # :
안녕하세요. 다음과 같이 코드를 스크립트로 옮겼습니다.
차트로 드래그하고 입력 매개변수에 템플릿 이름을 입력하면 터미널이 응답을 멈추고 아무 일도 일어나지 않습니다. 템플릿이 모든 차트에 적용되는 것은 아닙니다 :-( 제가 코드를 잘못 전송한 건가요 아니면 다른 문제가 있는 건가요? 템플릿 이름을 다시 확인했습니다 - 점 tpl 없이 이름만 입력합니다

코드에 한 줄만 추가하면 충분합니다. 또는 두 줄을 하나로 교체하십시오.

 string tplName = "name.tpl" ;
/********************Script program start function*******************/
void OnStart ()
 {
   long prevChart = ChartFirst ();
   while (prevChart >= 0 )
   {
     //if(ChartPeriod(prevChart) != PERIOD_H1)
     //  ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);
     ChartApplyTemplate (prevChart, tplName);
    prevChart = ChartNext (prevChart);
   }
 } /******************************************************************/
/*****************************End program****************************/
 

안녕하세요! 상황은 다음과 같습니다. 두 개의 동일한 차트가 터미널에 열려 있습니다. 한 로봇이 한 로봇에 설치되고 다른 로봇이 다른 로봇에 설치됩니다. 로봇 1이 연 위치가 로봇 2가 설치된 차트에서도 열리도록 코드를 작성하는 방법(이러한 가능성이 있는 경우)은? 또는 더 좋은 것은 로봇 2가 설치된 차트에서만 로봇 1의 조건에 따라 위치를 열어야 한다는 것입니다. 나의 "지식"으로는 충분하지 않습니다.

고맙습니다.

 
novichok2018 # :

안녕하세요! 상황은 다음과 같습니다. 두 개의 동일한 차트가 터미널에 열려 있습니다. 한 로봇이 한 로봇에 설치되고 다른 로봇이 다른 로봇에 설치됩니다. 로봇 1이 연 위치가 로봇 2가 설치된 차트에서도 열리도록 코드를 작성하는 방법(이러한 가능성이 있는 경우)은? 또는 더 좋은 것은 로봇 2가 설치된 차트에서만 로봇 1의 조건에 따라 위치를 열어야 한다는 것입니다. 나의 "지식"으로는 충분하지 않습니다.

고맙습니다.

차트가 동일하면 두 차트 모두에서 주문을 볼 수 있습니다. 주문은 차트가 아닌 기호로 시작됩니다.
 
Alexey Viktorov # :

코드에 한 줄만 추가하면 충분합니다. 또는 두 줄을 하나로 교체하십시오.

Alexey, 힌트를 주셔서 대단히 감사합니다. 줄을 추가했고 모두 작동했습니다. 이제 유일한 문제는 기본 템플릿을 수동으로 선택하더라도 터미널이 HD)))))))))를 멈춘다는 것입니다. 컴퓨터 청소, 즉 문제의 징후가 있습니다(