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

 

핸드북에서 인용:

//+----------------------------------------------- --------------------+

//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수   초기화 ()
{
//--- 사용자 지정 표시기의 값을 가져옵니다.
    이중 = iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex4" ,0,0);

시작 함수가 아닌 초기화 함수 의 표시기 변수에 대한 참조 입니까? 초기화 함수의 표시기 변수에 대한 참조 한 위치만 엽니다.

 
너무 늦었어 Artem은 내일 대답할 수 있을까요? 미리 감사드립니다.
 
Oleg Kolesov :

핸드북에서 인용:

//+----------------------------------------------- --------------------+

//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수   초기화 ()
{
//--- 사용자 지정 표시기의 값을 가져옵니다.
    이중 = iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex4" ,0,0);

시작 함수가 아닌 초기화 함수 의 표시기 변수에 대한 참조 입니까? 초기화 함수의 표시기 변수에 대한 참조 한 위치만 엽니다.

시작 대신에 OnTick() 및 기타 이벤트 핸들러를 사용하는 것은 이미 기한이 지났습니다. 아주 오래된 MetaTrader 4의 기능은 잊어 버리십시오. 새로운 MQL4는 이제 MQL5에 매우 가깝습니다. 주요 차이점은 거래 기능의 다른 조직과 표시기에만 있습니다. 이제 OnInit() 처리기에서 생성됩니다. 표시기 핸들이 생성되고 이 핸들을 사용하여 데이터에 액세스합니다. MQL4에서는 다릅니다. 그러나 내 기억이 제대로 작동한다면 자원은 동등하게 배치됩니다.

가장 중요한 것은 지표를 리소스에 올바르게 배치하는 방법을 읽는 것이며 계산된 데이터에 대한 액세스는 iCustom()을 통한 일반적인 방법의 액세스와 크게 다르지 않습니다. 이름만 약간 다릅니다.
Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
//|                                                   TradeByATR.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Oleg Kolesov :
너무 늦었어 Artem은 내일 대답할 수 있을까요? 미리 감사드립니다.

약속하지 않습니다.

PS "늦게" ... 벌써 04시 51분 ...이건 "늦어"

 
Artyom Trishkin :
  1. 주문 가격이 정규화되지 않았습니다.
  2. 모든 가격은 StopLevel 레벨의 크기에 대해 확인해야 합니다. 가격에서 포인트 단위로 주문 배치 거리가 StopLevel 값보다 작으면 오류 130이 발생합니다 - 잘못된 중지

가격을 정상화했지만 고문도 하나의 주문을 연 다음 열지 않습니다. 그는 여전히 하나의 주문을 엽니다. 그러나 다음 틱에서 오류를 씁니다.

 #property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#include   <Init_Deinit.mqh> 

// Переменные
extern double lots    = 0.01 ;
extern int     Level   = 300 ;
extern double StopL   = 300 ;
extern double TakeP   = 1000 ;


// Start Programm
void OnTick () 
  { 
   //--- вычисленные значений для BuyStop
   
   double price_buystop= NormalizeDouble (Ask+Level* Point , Digits );
   StopL = NormalizeDouble (price_buystop-StopL* Point , Digits ); 
   TakeP = NormalizeDouble (price_buystop+TakeP* Point , Digits ); 
   
//--- Размещаем отложный ордер BuyStop
   int ticket= OrderSend ( Symbol (),OP_BUYSTOP,lots,price_buystop, 3 ,StopL,TakeP, "Rupture" , 1111 , 0 , clrGreen ); 
   if (ticket< 0 ) 
     { 
       Print ( "BuyStop завершилась с ошибкой #" , GetLastError ()); 
          } 
   else 
       Print ( "Функция BuyStop успешно выполнена" ); 
      }
 
Doszhan :

가격을 정상화했지만 고문도 하나의 주문을 연 다음 열지 않습니다. 그는 여전히 하나의 주문을 엽니다. 그러나 다음 틱에서 오류를 씁니다.

확인이 필요합니다. 가격이 스탑 레벨이나 스프레드보다 작은 거리에 있으면 당연히 오류가 발생합니다. 이것이 첫 번째입니다.

텍스트로 판단하면 주문이 이미 열려 있는지 여부를 확인하는 수표가 없습니다.

따라서 각 틱마다 무기한으로 열립니다.

 
Oleg Kolesov :

H=iCustom(NULL,TF, "::Indicators\\KChange.ex4" ,History,Period_1,Period_2,MA_method,0,1);

컴파일러는 오류를 찾지 못했지만 테스터는 훨씬 느립니다. 이건 괜찮아?

//------------------------------------------------ -------------------------------------------------- ---------------

MQL4 참조 상태: 초기화 함수의 변수 참조?

시작 함수가 아닌 초기화 함수 의 표시기 변수에 대한 참조 입니까? 경험자분들 조언 부탁드립니다!

느린 경우 지표를 최적화-가속화해야 합니다.

표시기 값을 확인해야 하는 위치에서 호출해야 합니다. 초기화 시 하나의 값만 수신됩니다.

 
nalyk :

세 번째 막대에서 프랙탈을 찾고 있는데 없을 수도 있습니다. 주기의 첫 번째 프랙탈을 찾습니다.


그것도 작동하지 않습니다. 주문은 2개의 캔들 중 고가를 기준으로 합니다.
 
Valerius :

확인이 필요합니다. 가격이 스탑 레벨이나 스프레드보다 작은 거리에 있으면 당연히 오류가 발생합니다. 이것이 첫 번째입니다.

텍스트로 판단하면 주문이 이미 열렸는지 여부를 확인하는 수표가 없습니다.

따라서 각 틱마다 무기한으로 열립니다.

맞습니다. 모든 틱이 열리지 않고 한 번만 열립니다.
 
Doszhan :
맞습니다. 모든 틱이 열리지 않고 한 번만 열립니다.

로그에 오류 130 이 있습니까?

위는 그것이 어디에서 왔으며 존재하지 않도록 올바르게하는 방법에 대한 설명입니다.

당신은하지 않았다.