초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1477

 
Vasiliy Pushkaryov #:

6201 바 정보를 표시합니다.

거기에 뭐라고 쓰여 있나요?

printf((string)TerminalInfoInteger(TERMINAL_MAXBARS));
대부분의 경우 이야기는 테스터를위한 것이므로 지표가 올바르게 계산됩니다.
 
MrBrooklin #:

포럼 회원들의 힌트를 반영하여 이 버전의 스크립트를 만들게 된 것에 대해 큰 감사를 드립니다:

안부, 블라디미르.

대본에서 매우 중요한 부분을 완전히 놓쳤습니다. 많은 부분을 정상화할 필요가 있었습니다. 다음은 수정된 버전입니다:

//+------------------------------------------------------------------+
//|                            Lot_Size_Depending_On_Risk_And_SL.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input uint Risk=6;         // Размер риска (> 0, но не более 100 %)
input uint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk_And_SL()
  {
//--- блок проверки входных параметров на корректность
   if(Risk==0 || Risk>100 || Stop_Loss==0)
     {
      Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
      return(0.0);
     }
//--- блок определения размера лота
   double trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
                              (Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможного
   double min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot<min_volume)
      lot=min_volume;
   if(lot>max_volume)
      lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделки
   double step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(lot/step_volume);
   if(MathAbs(ratio*step_volume-lot)>0.0000001)
      lot=ratio*step_volume;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
  }
//+------------------------------------------------------------------+

안부, 블라디미르.

 
안녕하세요!
로봇의 포워드 테스트를 마친 후 지속적인 문제가 발생했습니다. 최상의 매개 변수 집합으로 단일 테스트를 시작할 때 전략 테스터가 실행을 시작하고 끝까지 실행하는 것처럼 보이지만 (진행률 표시기 엔진으로 판단) 중단됩니다. 메타트레이더를 다시 시작해야 하며 단일 테스트(및 일반적으로 전체 포워드 테스트)의 결과가 손실됩니다.
테스터가 중단되는 이유는 무엇이며 어떻게 치료할 수 있습니까?
안부, 알렉산더
 
전문가 여러분, 모든 차트주기가 아닌 일부 차트주기에만 거래 내역을 반영하도록 플랫폼을 설정하는 방법을 알려주세요.
그리고 지금 우리가 가진 것 : "거래 내역 표시" 확인란을 클릭하면 주간 차트에서 모든 내역(위아래 화살표)이 이미 단단한 울타리로 표시됩니다.
그리고 다른 도구(추세선, 화살표 등)와 같은 설정을 원하는데, 표시가 모든 주기가 아닌 것으로 설정할 수 있기를 원합니다.
 

안녕하세요. 두 개의 MA의 교차점을 기반으로 한 전문가 조언자의 가장 간단한 예를 어디에서 볼 수 있는지 알려주시겠습니까 (강의를 제공 할 수 있음).
나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다.
MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.

 
makssub 전문가 조언자의 가장 간단한 예를 어디에서 볼 수 있는지 알려주시겠습니까 (강의를 제공 할 수 있음).
나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다.
MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.

안녕하세요. 메타에디터 5를 열어보세요. 여기에는 두 MA의 교차점을 기반으로하는 내장 (표준) 전문가 조언자가 있습니다. 코드를 열고 공부하세요. 또는 코드베이스에서 찾아보세요. 예를 들어 다음은 두 MA의 교차점을 기반으로 구축된 첫 번째 EA입니다.

감사합니다, 블라디미르.


 
MrBrooklin #:

안녕하세요. 메타에디터 5를 엽니다. 두 MA의 교차점을 기반으로 하는 (표준) 전문가 조언자가 내장되어 있습니다. 코드를 열고 연구하세요. 또는 코드베이스에서 검색하세요. 예를 들어 다음은 두 MA의 교집합을 기반으로 구축된 첫 번째 EA입니다.

안부, 블라디미르.


고마워요, 살펴봤습니다.

OnInit에서 무슨 일이 일어나는지 이해합니다.

온틱에 모든 것을 올바르게 조이는 방법은 무엇인가요?

 
makssub #:

고마워요, 찾아봤습니다.

OnInit에서 무슨 일이 일어나고 있는지 대략적으로 이해했습니다.

이 모든 것을 온틱에 어떻게 연결하나요?

전문가 조언자 작성의 한 가지 변형 만 보여 드리지만 이러한 변형은 엄청나게 많을 수 있습니다. 그것은 모두 프로그래머의 자격에 달려 있습니다. 전문가 어드바이저의 구조는 다음과 같습니다:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+

// здесь размещаем входные параметры советника

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // здесь деинициализируем то, что считаем нужным   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- абстрактный пример советника

   Check_Trading();           // проверим условия разрешающие торговлю
   Signal_Up();               // ищем сигнал для открытия длинной позиции
   Open_Buy_Position();       // открываем длинную позицию
   Close_Buy_Positions();     // закрываем длинную позицию
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Check_Trading()
  {

   // здесь вставляем условия разрешающие торговлю

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  Signal_Up(); 
  {

   // здесь вставляем условия, при которых появляется сигнал на покупку

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Open_Buy_Position(); 
  {

   // здесь вставляем функцию открытия длинной позиции

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_Buy_Positions();
  {

   // здесь вставляем функцию закрытия длинной позиции

  }
//+------------------------------------------------------------------+

다음과 같은 구조입니다. 다시 한 번 강조하지만 이것은 전문가 자문 작성 가이드가 아니라 제가 전문가 고문을 작성할 때 준수하는 대략적인 구조입니다.

감사합니다, 블라디미르.

 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);

어떻게 작성해야 할지 모르겠어요.

 
Лауреат #:

어떻게 작성해야 할지 모르겠어요.

정확히 무엇이 명확하지 않으신가요? EA 초기화 함수를 만드는 방법은 무엇인가요? 그런 다음 초보자를 위해이 기사를 공부하십시오.

감사합니다, 블라디미르.