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

 
WindUP :
감사합니다. 하지만 적어도 하나의 객관적인 예를 들어줄 수 있습니다. 말하자면 탑뷰. 그리고 나는 완전히 멍청하고 주제에서와 같이 2 일입니다 :-)

아마 비슷한 것

 //+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint    maxLimits      = 1 ;     // Кол-во Позиции Открыть в одну сторону
sinput double InpLots        = 0.01 ; // Lots
//---
sinput int     Inpcopiedrates = 2 ;     // какой бар
sinput double Inplow         = 100 ;   // отступить от low
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_ASK );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
   double sl=rates[Inpcopiedrates].low-Inplow/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
 
SanAlex :

여기에서도 배우려고 노력하고 있습니다. 무언가가 잘되고있는 것 같습니다.

안녕하세요. Soryan, 스크린 샷에서 당신이 성공한 것을 보았지만 여기이 코드에서 이전 촛불의 데이터를 복사하는 기능이 어디에 있는지 보지 못했습니다 [1] ?




더 많은 결과를 얻고 더 적은 시간을 잃기 위해 어디에서 시작하는 것이 더 나은지, 간단한 것부터 복잡한 것까지 인형을 위한 MQL 5 프로그래밍 과정을 알려주시겠습니까? 고마울거야 :-)

 
WindUP :

안녕하세요. Soryan, 스크린 샷에서 당신이 성공한 것을 보았지만 여기이 코드에서 이전 촛불의 데이터를 복사하는 기능이 어디에 있는지 보지 못했습니다 [1] ?




더 많은 결과를 얻고 더 적은 시간을 잃기 위해 어디에서 시작하는 것이 더 나은지, 간단한 것부터 복잡한 것까지 인형을 위한 MQL 5 프로그래밍 과정을 알려주시겠습니까? 고마울거야 :-)

친구가 당신에게 와서 "인터넷에서 일하는 방법을 가르쳐 달라"고 요청한다고 상상해보십시오. 무엇을 배워야 할지 상상하기 어렵습니까? 그만큼 프로그래밍을 가르치는 것이 어렵다. 문제가 있습니다 - 해결책이 있습니다. 그리고 마찬가지로 ... 모든 언어를 배울 수 있습니다. 기본은 모든 사람에게 동일합니다. 프로그래밍은 코드를 작성하는 것이 아니라 문제를 설정하고 솔루션 알고리즘을 작성한 다음 코드를 작성하는 것입니다. 그리고 최종 단계인 디버깅 및 결과 확인.

SanAlrx 코드에서 첫 번째 양초의 OHLC만 가져오는 특정 작업이 있는 경우 복사된 데이터의 주식을 만드는 이유를 이해하지 못합니다.

 int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);

그리고 왜 현재 값을 복사하고 방금 열린 양초를 열었습니다. 하지만... 그것은 그의 결정과 그의 바퀴벌레입니다.

 
WindUP :

안녕하세요. Soryan, 스크린 샷에서 당신이 성공한 것을 보았지만 여기이 코드에서 이전 촛불의 데이터를 복사하는 기능이 어디에 있는지 보지 못했습니다 [1] ?




더 많은 결과를 얻고 더 적은 시간을 잃기 위해 어디에서 시작하는 것이 더 나은지, 간단한 것부터 복잡한 것까지 인형을 위한 MQL 5 프로그래밍 과정을 알려주시겠습니까? 고마울거야 :-)

나는 스스로 배우고 있습니다. 예를 들어 https://www.mql5.com/ru/docs/series/copyrates 문서로 이동했습니다. 스크립트의 예가 있습니다. 내 컴퓨터에 저장하고 읽기 시작합니다. 입력하여 자세히 분석합니다.

그리고 이 기능은 무작위로 발견되었습니다.

 //---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
   double sl =rates[Inpcopiedrates]. low -Inplow/ 100 ;

이것은 BUY "SL"을 위한 것입니다.

판매를 위해 이와 같은 필요

   double sl =rates[Inpcopiedrates]. high +Inphigh/ 100 ;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

여기에 숫자를 적어 두었습니다. 최대 10바가 될 수 있습니다. 하지만 당신은 그것을 필요로하지 않습니다 - 당신은 거기에 1 (하나)가 필요합니다

   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
WindUP :

안녕하세요. Soryan, 스크린 샷에서 당신이 성공한 것을 보았지만 여기이 코드에서 이전 촛불의 데이터를 복사하는 기능이 어디에 있는지 보지 못했습니다 [1] ?




더 많은 결과를 얻고 더 적은 시간을 잃기 위해 어디에서 시작하는 것이 더 나은지, 간단한 것부터 복잡한 것까지 인형을 위한 MQL 5 프로그래밍 과정을 알려주시겠습니까? 고마울거야 :-)

여기에 좋은 예가 있습니다. 방금 페이지에 갔고 여기 스크립트가 작동 방식을 더 잘 알려줄 것입니다. https://www.mql5.com/ru/docs/constants/objectconstants/enum_anchorpoint

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Способы привязки объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex :

나는 스스로 배우고 있습니다. 예를 들어 https://www.mql5.com/ru/docs/series/copyrates 문서로 이동했습니다. 스크립트의 예가 있습니다. 내 컴퓨터에 저장하고 읽기 시작합니다. 입력하여 자세히 분석합니다.

그리고 이 기능은 무작위로 발견되었습니다.

이것은 BUY "SL"을 위한 것입니다.

판매를 위해 이와 같은 필요

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

여기에 숫자를 적어 두었습니다. 최대 10바가 될 수 있습니다. 하지만 당신은 그것을 필요로하지 않습니다 - 당신은 거기에 1 (하나)가 필요합니다

여기에서 BUY 및 SELL용 SL을 열고 설정합니다.

 //+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint    maxLimits      = 1 ;     // Кол-во Позиции Открыть в одну сторону
sinput double InpLots        = 0.01 ; // Lots
//---
sinput double Inplowhigh     = 100 ;   // отступить low high
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   OnStartBuy();
   OnStartSell();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStartBuy()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_ASK );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 2 ,rates);
   if (copied<= 0 )
     {
       Print ( "Не удалось получить исторические данные. Error = " , GetLastError ());
       return ;
     }
   double sl=rates[ 1 ].low-Inplowhigh/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStartSell()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_BID );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 2 ,rates);
   if (copied<= 0 )
     {
       Print ( "Не удалось получить исторические данные. Error = " , GetLastError ());
       return ;
     }
   double sl=rates[ 1 ].high+Inplowhigh/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening SELL position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+

스냅 사진

 

안녕하세요.

말해봐, 내가 머리를 부러뜨렸어.

iCustom을 통해 표시기를 등록하고 문제가 발생했습니다. 표시기에 선택 가능한 텍스트 메뉴가 있고 열리며 여러 항목이 작성되어 있습니다. 글쎄, 이해할 수 있다고 생각합니다)

그럼 어떻게 내 메뉴에 등록할 수 있습니까?

외부 정수 HIT = 0; 롤하지 않고 표시를 중지하고 매개변수 없이 표시되도록 둡니다.

ENUM을 통해 무엇을 선택해야 할까요? 아니면 다른 것을 선택해야 할까요?

미리 감사드립니다.

파일:
 
Сергей :

안녕하세요.

말해봐, 내가 머리를 부러뜨렸어.

iCustom을 통해 표시기를 등록하고 문제가 발생했습니다. 표시기에 선택 가능한 텍스트 메뉴가 있고 열리며 여러 항목이 작성되어 있습니다. 글쎄, 이해할 수 있다고 생각합니다)

그럼 어떻게 내 메뉴에 등록할 수 있습니까?

외부 정수 HIT = 0; 롤하지 않고 표시를 중지하고 매개변수 없이 표시되도록 둡니다.

ENUM을 통해 무엇을 선택해야 할까요? 아니면 다른 것을 선택해야 할까요?

미리 감사드립니다.

빈 문자열 "" 또는 공백 " "을 넣습니다.

 

그래서 설정을 변경하기 위해 어떻게든 등록하고 싶었습니다.

각 쌍에 대한 항목이 있으며 어떻게 선택합니까?

그리고 그것이 없으면 메뉴는 관련이 없지만 화면에는 비슷한 예가 있습니다.

 
Сергей :

그래서 설정을 변경하기 위해 어떻게든 등록하고 싶었습니다.

각 쌍에 대해 별도의 항목이 있으며 어떻게 선택합니까?

그리고 그것이 없으면 메뉴는 관련이 없지만 화면에는 비슷한 예가 있습니다.

부주의해서 죄송합니다. 표시기에 열거형이 있습니다. 그리고 Expert Advisor에서는 입력 매개변수에서 이 열거의 이름을 변수 유형으로 지정해야 합니다.

비록 시도하지 않았지만 ... EA에서 이 열거를 반복하거나 변수 유형을 ENUM_BASE_CORNER 로 설정해야 할 수도 있습니다.