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

 

일련의 주문을 초과했을 때 tf를 전환하는 기능을 만듭니다. 내가 무엇을 잘못하고 있지? m5 스위치에서 정상적으로 작동한 다음 작동하지 않음

 extern string helper111= "Настройки Helper" ; //Helper
extern bool helperTRUE=TRUE;         //Вкл/Выкл Helper
extern bool timeM1=TRUE;             //Переключения на М старт когда ордера все закрыты
extern int helper_period= PERIOD_M5 ; //Периуд М старт в минутах
extern int helper_period0= PERIOD_H1 ; //Базовый таймфрейм работы советника
extern int order_period1= 6 ;         //Колво ордеров для переключения на Time 1
extern int helper_period1= PERIOD_D1 ; //Time 1 в минутах
extern int order_period2= 8 ;         //Колво ордеров для переключения на Time 2
extern int helper_period2= PERIOD_W1 ; //Time 2 в минутах


int helperrr()
{
   if (helperTRUE==TRUE) {  
   if (timeM1==TRUE && NumberOfPositions()== 0 ) ChartSetSymbolPeriod ( 0 , NULL , helper_period);
   else {
   if (((NumberOfPositions1()>= 0 && NumberOfPositions1()<order_period1)
   || (NumberOfPositions1()>= 0 && NumberOfPositions2()<order_period1)
   || (NumberOfPositions1()>= 0 && NumberOfPositions3()<order_period1)) && _Period != helper_period0)
   ChartSetSymbolPeriod ( 0 , NULL , helper_period0);
   if ((NumberOfPositions1()>=order_period1 && NumberOfPositions1()<order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period1 && NumberOfPositions2()<order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period1 && NumberOfPositions3()<order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod ( 0 , NULL , helper_period1);
   if ((NumberOfPositions1()>=order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod ( 0 , NULL , helper_period2);
   }
   }
   return ( 0 );
}
 
fxsaber :

달러 인덱스 등의 거래 수단을 찾지 못했습니다(지표?)

거래는 금지 되어 있지만 코드는 어떻게 작동합니까?

 
Igor Makanu :

달러 인덱스 등의 거래 수단을 찾지 못했습니다(지표?)

거래는 금지 되어 있지만 코드는 어떻게 작동합니까?

Expert Advisor의 Fake OrderSend가 항상 설정을 결정할 수 있도록 하는 것은 아닙니다.


내가 제공한 코드는 기호 및 기타 속성에 관계없이 모든 어드바이저의 설정을 보여줍니다. 예를 들어 일종의 어드바이저를 실행한 다음 동일한 차트에서 이 스크립트를 실행합니다.

 // Скрипт показывает, в каком режиме Long/Short запущен советник на данном чарте.
void OnStart ()
{
   Alert (LongShortToString());
}
 
fxsaber :

Expert Advisor의 Fake OrderSend가 항상 설정을 결정할 수 있도록 하는 것은 아닙니다.


내가 제공한 코드는 기호 및 기타 속성에 관계없이 모든 어드바이저의 설정을 보여줍니다. 예를 들어 일종의 어드바이저를 실행한 다음 동일한 차트에서 이 스크립트를 실행합니다.

확인, 작동하지만

1. 토론에서 https://www.mql5.com/ru/forum/214590/page6#comment_11947599

코드에서 return(INIT_SUCCEEDED); -테스트 시작, 즉시 고문이 사라진 위치를 이해하지 못했습니다))

2. 어드바이저의 속성을 선택하고 다른 "daw"를 입력하면 경고가 다시 나타나지 않는 이유를 이해하지 못합니다. TF를 전환하면 모든 것이 정상입니다.

Библиотеки: Expert
Библиотеки: Expert
  • 2019.04.23
  • www.mql5.com
Expert: Автор: fxsaber...
 
fxsaber :

Expert Advisor의 Fake OrderSend가 항상 설정을 결정할 수 있도록 하는 것은 아닙니다.


내가 제공한 코드는 기호 및 기타 속성에 관계없이 모든 어드바이저의 설정을 보여줍니다. 예를 들어 일종의 어드바이저를 실행한 다음 동일한 차트에서 이 스크립트를 실행합니다.

어드바이저에 코드를 추가할 수 있습니까?

 int testTicket= OrderSend ( Symbol (),OP_SELL, 0.01 , 0 , 3 , 0 , 0 , "Sell Try" , 1 , 0 ,CLR_NONE);
if ( GetLastError () == 4111 ) testLONG_SHORT= "Long Only Mode" ; 
testTicket= OrderSend ( Symbol (),OP_BUY, 0.01 , 0 , 3 , 0 , 0 , "Buy Try" , 1 , 0 ,CLR_NONE); 
if ( GetLastError () == 4110 ) testLONG_SHORT= "Short Only Mode" ;

이 코드를 사용하면 xauusd에서 길고 짧은 주문을 끝없이 엽니다.

 
Lomonosov1991 :

어드바이저에 코드를 추가할 수 있습니까?

네.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

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

Lomonosov1991 , 2019.06.04 19:01

 int testTicket= OrderSend ( Symbol (),OP_SELL, 0.01 , 0 , 3 , 0 , 0 , "Sell Try" , 1 , 0 ,CLR_NONE);
if ( GetLastError () == 4111 ) testLONG_SHORT= "Long Only Mode" ; 
testTicket= OrderSend ( Symbol (),OP_BUY, 0.01 , 0 , 3 , 0 , 0 , "Buy Try" , 1 , 0 ,CLR_NONE); 
if ( GetLastError () == 4110 ) testLONG_SHORT= "Short Only Mode" ;

이 코드를 사용하면 xauusd에서 길고 짧은 주문을 끝없이 엽니다.

여기서 아이디어는 정확히 0 개의 볼륨이 필요하다는 것입니다.
 
fxsaber :

네.


여기서 아이디어는 정확히 0 개의 볼륨이 필요하다는 것입니다.
0.01랏의 수량 없이 열립니다.
 int testTicket= OrderSend ( Symbol (),OP_SELL, 0 , 0 , 3 , 0 , 0 , "Sell Try" , 1 , 0 ,CLR_NONE);
if ( GetLastError () == 4111 ) testLONG_SHORT= "Long Only Mode" ; 
testTicket= OrderSend ( Symbol (),OP_BUY, 0 , 0 , 3 , 0 , 0 , "Buy Try" , 1 , 0 ,CLR_NONE); 
if ( GetLastError () == 4110 ) testLONG_SHORT= "Short Only Mode" ;

그리고 그것은 전혀 작동하지 않습니다

 int testTicket= OrderSend ( Symbol (),OP_SELL, 0 , 0 , 0 , 0 , 0 , "Sell Try" , 1 , 0 ,CLR_NONE);
if ( GetLastError () == 4111 ) testLONG_SHORT= "Long Only Mode" ; 
testTicket= OrderSend ( Symbol (),OP_BUY, 0 , 0 , 0 , 0 , 0 , "Buy Try" , 1 , 0 ,CLR_NONE); 
if ( GetLastError () == 4110 ) testLONG_SHORT= "Short Only Mode" ;





 
Igor Makanu :

확인, 작동하지만

1. 토론에서 https://www.mql5.com/ru/forum/214590/page6#comment_11947599

코드에서 return(INIT_SUCCEEDED); -테스트 시작, 즉시 고문이 사라진 위치를 이해하지 못했습니다))

특히 FAILED 예제에서는 나중에 손으로 쏘지 않도록 합니다.

2. 어드바이저의 속성을 선택하고 다른 "daw"를 입력하면 경고가 다시 나타나지 않는 이유를 이해하지 못합니다. TF를 전환하면 모든 것이 정상입니다.

Long/Short 변경 시 OnDeinit/OnInit는 호출되지 않습니다.

 
나는 그것을 실행하는 방법을 이해하지 못한다.
파일:
 
fxsaber :

Long/Short 변경 시 OnDeinit/OnInit는 호출되지 않습니다.

이상한 동작, 일반적으로 설정 창을 호출한 후 OnIniT()가 실행됩니다.


로모노소프1991 :
나는 그것을 실행하는 방법을 이해하지 못한다.

예를 첨부하여 압축을 풀고 폴더에 흩어 놓습니다.

파일:
MQL4.zip  5 kb