찻주전자의 질문 - 페이지 40

 

단일 MetaTrader 5 Expert Advisor가 Strategy Tester 에서 테스트되지 않는 이유를 설명하십시오. 시작을 눌러도 아무 일도 일어나지 않습니다.

 
PATRIOT :

단일 MetaTrader 5 Expert Advisor가 Strategy Tester 에서 테스트되지 않는 이유를 설명하십시오. 시작을 눌러도 아무 일도 일어나지 않습니다.

잡지를 보십시오(초보자용).
 

생성된 함수의 미리 정의된 구조에서 데이터를 가져올 수 없습니다. 예를 들어:

 void OnTick ()
{
//--- Объявляем структуру
 MqlRates rates[];
 ArraySetAsSeries (rates, true );

//--- Скопировать необходимое количество значений в массив
 if ( CopyRates ( NULL , 0 , 0 , 4 ,rates) < 0 ) { Print (ErrorDescription( GetLastError ())); return ; }
...
}

그런 다음 생성된 함수에서 값을 얻으려고 할 때:

 void Trailing_Stop_Loss( ENUM_POSITION_TYPE Type, double Trailing_Stop)
{
 string Val_Time = TimeToString (rates[ 1 ].time,TIME_DATE|TIME_MINUTES);

...
}

오류 메시지가 나타납니다.

프로그램의 모든 부분에서 사용할 수 있도록 구조를 선언하는 방법은 무엇입니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
tol64 :

생성된 함수의 미리 정의된 구조에서 데이터를 가져올 수 없습니다. 예를 들어:

그런 다음 생성된 함수에서 값을 얻으려고 할 때:

오류 메시지가 나타납니다.

프로그램의 모든 부분에서 사용할 수 있도록 구조를 선언하는 방법은 무엇입니까?

글로벌 지역에서. 기능이 없습니다.
 
거래 스레드가 거래 작업을 수행할 수 있는지 확인하는 데 사용할 수 있는 기능은 무엇입니까? MQL4에서 IsTradeAllowed()IsTradeContextBusy() 함수는 이를 위한 것입니다.

표준 라이브러리의 무역 클래스 CAccountInfo 에는 TradeAllowed() 함수가 있습니다. 도움말은 "이 계정 에 대한 거래가 허용/금지됨"을 의미한다고 말합니다 . 거래 서버 반환 코드 에서 오류 코드를 찾지 못했습니다. 이는 거래 스레드가 사용 중일 수 있음을 의미합니다. 이 수표는 이제 거래 터미널 자체에서 사용할 수 있습니까? 설명 해주십시오.


 
tol64 :
거래 스레드가 거래 작업을 수행할 수 있는지 확인하는 데 사용할 수 있는 기능은 무엇입니까? MQL4에서 IsTradeAllowed()IsTradeContextBusy() 함수는 이를 위한 것입니다.

표준 라이브러리의 무역 클래스 CAccountInfo 에는 TradeAllowed() 함수가 있습니다. 도움말은 "이 계정 에 대한 거래가 허용/금지됨"을 의미한다고 말합니다 . 거래 서버 반환 코드 에서 오류 코드를 찾지 못했습니다. 이는 거래 스레드가 사용 중일 수 있음을 의미합니다. 이 수표는 이제 거래 터미널 자체에서 사용할 수 있습니까? 설명 해주십시오.

MT5에서는 거래 작업이 비동기식이기 때문에 거래 흐름이 결코 바쁘지 않습니다. 기쁘게 하다.
 
tol64 :
거래 스레드가 거래 작업을 수행할 수 있는지 확인하는 데 사용할 수 있는 기능은 무엇입니까? MQL4에서 IsTradeAllowed()IsTradeContextBusy() 함수는 이를 위한 것입니다.

표준 라이브러리의 무역 클래스 CAccountInfo 에는 TradeAllowed() 함수가 있습니다. 도움말은 "이 계정 에 대한 거래가 허용/금지됨"을 의미한다고 말합니다 . 거래 서버 반환 코드 에서 오류 코드를 찾지 못했습니다. 이는 거래 스레드가 사용 중일 수 있음을 의미합니다. 이 수표는 이제 거래 터미널 자체에서 사용할 수 있습니까? 설명 해주십시오.


MetaTrader5에는 바쁜 거래 흐름이 전혀 없습니다. MT4가 동시에 한 명의 거래자의 주문만 처리할 수 있다면 MT5에서는 많은 주문이 병렬로 처리됩니다. 모든 주문에 대한 서버의 반환 코드는 OnTrade() 함수에서 얻을 수 있습니다.
 
uncleVic :

가격만 정하면 됩니다.

가격이 설정되지 않았거나(기본값 0.0) 현재 가격이 설정되어 있는 경우. 시장에서 CExpert로부터 유도된 CExpertTrade는 시장 에서 포지션을 엽니다 .

가격이 시장보다 더 높게 설정되면(현재 구매 가격보다 낮고 현재 판매 가격보다 높음) CExpertTrade는 지정가 주문을 합니다(오프셋 적용).

가격이 시장보다 낮게 설정되면(현재 구매 가격보다 높고 현재 판매 가격보다 낮음) CExpertTrade는 중지 주문(오프셋 적용)을 합니다.

 bool Chhhh::OpenLongParams( double & price, double & sl, double & tp, datetime & expiration)
{
   printf ( "11111111" );
   if ( 2 + 2 == 4 )
   {
      price= 1.5 ;
      sl= 0 ;
      tp= 0 ;
      expiration= 0 ;
       return ( true );
   }
   else
   {
       return ( false );
   }
}

int Chhhh::LongCondition()
{
   printf ( "222222222" );
   return ( 60 );
}
OpenLongParams는 전혀 실행되지 않으며 "11111111"도 쓰지 않습니다.
LongCondition은 "2222222"를 쓰고 주문을 엽니다.
내가 뭔가를 잘못하고 있습니까 아니면 다르게 작동합니까?
 
sergeev :

주문할 때 특정 유형이 지정됩니다. 주문 보내기
그리고 여기 OrderSend ?
 
Lodar :
OpenLongParams는 전혀 실행되지 않으며 "11111111"도 쓰지 않습니다.
LongCondition은 "2222222"를 쓰고 주문을 엽니다.
내가 뭔가 잘못하고 있습니까 아니면 다르게 작동합니까?

기본적으로 모든 것이 훨씬 간단합니다. 99%의 경우 입력 매개변수를 사용하여 입력 레벨을 조정할 수 있습니다.

input double Inp_Signal_PriceLevel    =0.0;

값은 "큰" 포인트로 제공됩니다(즉, 2/4자).

값 = 0 - 시장 진입.

값 > 0 - 지정가 주문으로 입력.

값 < 0 - 정지 주문에 의한 입력.

매개변수는 주 신호(마법사에서 선택한 신호가 투표를 위해 수집됨)와 관련됩니다. 가격 수준을 설정하는 알고리즘은 기본 클래스 CExpertSignal (이 인스턴스가 주요 신호임)에 이미 구현되어 있습니다.

하지만 구현된 알고리즘과 다른 알고리즘을 사용하고 싶다면 ... 하지만 그것은 나중에 흥미로울 때입니다.