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

 

내가 이해하는 한 DC 측에서 나쁜 운동을 하는 것은 어떤 종류의 실수입니까?

2017.07.12 12:42:48.493 '1234885286': order #247632722 sell 0.02 EURAUD closing at 1.49721 failed [Trade timeout]
 
Vitaly Muzichenko :

내가 이해하는 한 DC 측에서 나쁜 운동을 하는 것은 어떤 종류의 실수입니까?

128

ERR_TRADE_TIMEOUT

거래 시간 초과 만료됨


핸들러의 일부:

     case 128 :
      str= "Истек срок ожидания совершения сделки." ;
       if (detailed) str=:: StringConcatenate (str, "\n" , "Прежде, чем производить повторную" ,
                 " попытку (не менее, чем через 1 минуту), необходимо убедиться," ,
                 " что торговая операция действительно не прошла (новая позиция" ,
                 " не была открыта, либо существующий ордер не был изменён или" ,
                 " удалён, либо существующая позиция не была закрыта)." );
       break ;
 
Artyom Trishkin :

128

ERR_TRADE_TIMEOUT

거래 시간 초과 만료됨


핸들러의 일부:

코드에 이러한 오류 처리 가 있지만 결코 존재하지 않았습니다. 오늘 저는 어떻게든 인기 있는 DC의 데모에서 프로그램을 테스트하기로 결정했고 처음으로 그런 쓰레기를 만났습니다.

일반적으로 이것이 내 쪽이 아닌 DC의 장비 문제라는 것을 올바르게 이해하고 있습니까?

 

기능이 맞는지 알려주세요. 아이디어는 가격이 특정 수의 이전 양초 동안 평균을 돌파했는지 계산하는 것입니다.

이 기능은 전혀 실행되지 않으며 결과가 누락됩니다. 결과는 다음과 같아야 합니다. 피어싱되지 않은 경우 returnToMA ==1, 피어싱된 경우 returnToMA ==0

문제에 대한 다른 해결책이 있습니까?


returnToMA = MAtouch(TRADE_TF2,TRADE_TF2_MA,barscount)

int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bar=100)

{

for(i=0;i<=막대;i++)

{

if(iLow( Symbol() ,tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}

if (iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}

그렇지 않으면 반환(1);

}

 
forexpipsrunner :

기능이 맞는지 알려주세요. 아이디어는 가격이 특정 수의 이전 양초 동안 평균을 돌파했는지 계산하는 것입니다.

이 기능은 전혀 실행되지 않으며 결과가 없습니다. 결과는 다음과 같아야 합니다. 피어싱되지 않은 경우 returnToMA ==1, 피어싱된 경우 returnToMA ==0

문제에 대한 다른 해결책이 있습니까?

함수에는 항상 0이 있습니다. 왜냐하면 최대값 또는 최소값은 항상 MA보다 크거나 작거나 같습니다.

양초는 귀하의 경우에 최소한 두 개의 매개변수로 설명되어야 합니다.

1. 양초가 열린 곳을 결정하십시오 - MA 위 또는 아래

2. 1번 항목에 따라 MA 터치가 있는지 확인합니다.

 
-Aleks- :

함수에는 항상 0이 있습니다. 왜냐하면 최대값 또는 최소값은 항상 MA보다 크거나 작거나 같습니다.

양초는 귀하의 경우에 최소한 두 개의 매개변수로 설명되어야 합니다.

1. 양초가 열린 곳을 결정하십시오 - MA 위 또는 아래

2. 1번 항목에 따라 MA 터치가 있는지 확인합니다.

감사해요. 조건을 추가했지만 지속적으로 1을 반환합니다. 대괄호를 어딘가에서 변경할 수 있습니까? 중단이 처리되지 않고 함수가 반환 값에 대한 1 할당을 종료합니다.


int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bar=100)

{

for(i=0;i<=막대;i++)

{

만약( iLow( Symbol() ,tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{반환(0);중단;}

만약 ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{반환(0);중단;}

그렇지 않으면 반환(1);

}

 
forexpipsrunner :

감사해요. 조건을 추가했지만 지속적으로 1을 반환합니다. 대괄호를 어딘가에서 변경할 수 있습니까? 중단이 처리되지 않고 함수가 반환 값에 대한 1 할당을 종료합니다.


int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bar=100)

{

for(i=0;i<=막대;i++)

{

만약( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{반환(0);중단;}

만약 ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{반환(0);중단;}

그렇지 않으면 반환(1);

}


이렇게 시도

 int MAtouch( ENUM_TIMEFRAMES tfpricereturnafterbreak= PERIOD_H4 , int tradema= 10 , int bars= 100 )
  {
   int x= 0 ;
   for ( int i= 0 ;i<=bars;i++)
     {
       if ( iLow ( Symbol (),tfpricereturnafterbreak,i)<= iMA ( Symbol (),tfpricereturnafterbreak,tradema, 0 , MODE_EMA , PRICE_WEIGHTED ,i)
         && iOpen ( Symbol (),tfpricereturnafterbreak,i)>= iMA ( Symbol (),tfpricereturnafterbreak,tradema, 0 , MODE_EMA , PRICE_WEIGHTED ,i))
        {x= 1 ; break ;}

       if ( iHigh ( Symbol (),tfpricereturnafterbreak,i)>= iMA ( Symbol (),tfpricereturnafterbreak,tradema, 0 , MODE_EMA , PRICE_WEIGHTED ,i)
         && iOpen ( Symbol (),tfpricereturnafterbreak,i)<= iMA ( Symbol (),tfpricereturnafterbreak,tradema, 0 , MODE_EMA , PRICE_WEIGHTED ,i))
        {x= 1 ; break ;}
     }
   return (x);
  }

조건이 충족되면 1을 반환합니다. 교차점이 있었습니다. 이것이 필요합니까?

 
-Aleks- :

이렇게 시도

조건이 충족되면 1을 반환합니다. 교차점이 있었습니다. 이것이 필요합니까?

고마워, 그것은 당신의 코드에 따라 시계처럼 작동합니다
 
forexpipsrunner :
고마워, 그것은 당신의 코드에 따라 시계처럼 작동합니다

도와 줄 수있어서 기뻐.
 

안녕하세요!

얘들 아, 차트에 표시기 를 프로그래밍 방식으로 표시 할 수 있습니까? 아니면 수동으로만?

그렇다면 어떤 명령이 주어졌습니까?