초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 230

 
Aleksey Mavrin :

그리고 항상 10초 후에 이익이 더 크다는 것은 무엇입니까?)

물론 항상 그런 것은 아니지만 가격이 1분 만에 날아가고 어드바이저가 고정 가격으로 바보같이 마감되는 경우가 종종 있습니다.
 
Nargiz Ravanova :

나는 당신이 말한 대로 했습니다. CloseAll() 함수 후에 내가 한 시간 동안 잠을 잔다는 사실에도 불구하고 닫은 후 고문이 거래를 몇 번 열고 닫습니다.

 datetime sleep = TimeCurrent ();
if (sleep > TimeCurrent ())
     return ;
//---
double op = CalculateProfit();

if (op >= Profit && LastTime == 0 )
     LastTime = TimeCurrent ();
if (LastTime > 0 && TimeCurrent () - LastTime >= Second)

    {
     CloseAll();
     LastTime = 0 ;

     SendNotification ( "Trade is end" );
     sleep = TimeCurrent ()+ 60 * 60 ;
    }

이 같은. 물론 그냥 무릎에 써있습니다.

 
Konstantin Nikitin :

이 같은. 물론 그냥 무릎에 써있습니다.

감사합니다. 이제 고문은 시장에 나와 있는 모든 거래 중에서 하나의 거래만 성사시키고 저에게는 그리드 고문이 있습니다.

음, 게다가 슬립이 발생하지 않고 어드바이저는 슬립을 무시하고 새로운 거래를 다시 엽니다. 일반적으로 제가 알기로는 구현이 불가능 하오니, 어리석게도 예전처럼 되돌려 드리겠습니다. 도와 주셔서 감사합니다.

 
Nargiz Ravanova :

감사합니다. 이제 고문은 시장에 나와 있는 모든 거래 중에서 하나의 거래만 성사시키고 저에게는 그리드 고문이 있습니다.

음, 게다가 슬립이 발생하지 않고 어드바이저는 슬립을 무시하고 새로운 거래를 다시 엽니다. 일반적으로 제가 알기로는 구현이 불가능 하오니, 어리석게도 예전처럼 되돌려 드리겠습니다. 도와 주셔서 감사합니다.

전체적으로 시행해야
이유는 다를 수 있습니다

 
Nargiz Ravanova :

감사합니다. 이제 고문은 시장에 나와 있는 모든 거래 중에서 하나의 거래만 성사시키고 저에게는 그리드 고문이 있습니다.

음, 게다가 슬립이 발생하지 않고 어드바이저는 슬립을 무시하고 새로운 거래를 다시 엽니다. 일반적으로 제가 알기로는 구현이 불가능 하오니, 어리석게도 예전처럼 되돌려 드리겠습니다. 도와 주셔서 감사합니다.

그래서 더 명확해질 것 같아요?

 input double Profit   = 100.0 ;
input int     Second   = 10 ;
//+------------------------------------------------------------------+
void CloseAllSleep( void )
    {
     static datetime sleep_all = TimeCurrent ();
     static datetime LastTime = 0 ;
     if (sleep_all > TimeCurrent ())
           return ;
//---
     if (LastTime == 0 )
         {
           if (CalculateProfit() < Profit)
               return ;
          LastTime = TimeCurrent ();
         }
     if ( TimeCurrent () - LastTime >= Second)
           return ;
//---
     if (!CloseAll())
           return ;
     LastTime = 0 ;

     SendNotification ( "Trade is end" );
     sleep_all = TimeCurrent ()+ 60 * 60 ;
    }

//--- Считаем профит открытых позиций
double CalculateProfit( void )
    {
     return 0.0 ;
    }
//--- Закрываем все позиции
bool CloseAll( void )
    {
     return true ;
    }

그리고 다시 말하지만, 이것은 순전히 이해를 위한 것입니다. 그리고 무엇을 어떻게 구현할지 스스로 생각합니다.

 
Nargiz Ravanova :
물론 항상 그런 것은 아니지만 가격이 1분 만에 날아가고 어드바이저가 고정 가격으로 바보같이 마감되는 경우가 종종 있습니다.

그러나 나는 이 접근 방식이 최적이 아니라고 생각합니다. 가격이 오르면 미끄러짐이 양수여야 합니다. 시간을 기다리는 것은 어리석은 일입니다 - 룰렛을 하고 - 그렇다면 왜 전략, 당신의 이익이 이미 세트 2달러 미만일 수 있습니다.

가격변동률을 측정하는 것이 현명하며, 이익방향으로 높으면 하락할 때까지 기다렸다가 커버한다.

 
Konstantin Nikitin :

그래서 더 명확해질 것 같아요?

그리고 다시 말하지만, 이것은 순전히 이해를 위한 것입니다. 그리고 무엇을 어떻게 구현할지 스스로 생각합니다.

솔직히 말해서, 명확하지 않습니다. 아무 것도 잊어 버리십시오. 스레드가 올 것입니다.

 
Aleksey Mavrin :

그래도 이 접근 방식은 최적이 아니라고 생각합니다. 가격이 오르면 미끄러짐이 양수여야 합니다. 시간을 기다리는 것은 어리석은 일입니다 - 룰렛을 하고 - 그렇다면 왜 전략, 당신의 이익이 이미 세트 2달러 미만일 수 있습니다.

가격변동률을 측정하는 것이 현명하며, 이익방향으로 높으면 하락할 때까지 기다렸다가 커버한다.

여기서 우리는 단순한 미끄러짐을 고칠 수 없지만 속도에 대해 이야기하고 있습니다.))))
 
Nargiz Ravanova :
여기서 우리는 단순한 미끄러짐을 고칠 수 없지만 속도에 대해 이야기하고 있습니다.))))

전능자는 목표를 달성하기 위해 높은 목표를 설정한 사람들을 돕습니다! ;)

 
Nargiz Ravanova :
여기서 우리는 단순한 미끄러짐을 고칠 수 없지만 속도에 대해 이야기하고 있습니다.))))

글쎄, 더 정확하게 말하면, 당신은 할 수 없는 것처럼 보입니다. 그리고 SLEEP 에 대해. Expert Advisor의 작업을 한동안 완전히 동결하시겠습니까? 또는 모두 동일하게 특정 기능만 해결된 후입니다. 그러나 어쨌든 Expert Advisor의 작업을 방해하는 경우에도 오랜 지연에 플래그를 사용하는 것이 좋으며, 확인할 때 권한이 없으면 간단히 OnTick / OnTimer 로 이동하십시오. 짧은 것의 경우 예, SLEEP 을 사용할 수 있습니다.
그건 그렇고, SLEEP 은 지표에서 작동하지 않습니다.

표시기는 인터페이스 스레드에서 실행되며 속도를 늦추지 않아야 하므로 Sleep() 함수는 사용자 정의 표시기 에서 호출할 수 없습니다.

따라서 플래그 사용을 처리하면 향후에 유용할 것입니다.