시장가 주문을 올바르게 여는 방법은 무엇입니까? - 페이지 7

 
prostotrader :

그건 그렇고, 표시기에서 Sleep()을 호출 하는 것이 이상합니다. 왜냐하면 그것은 금지되어 있습니다:

표시기는 인터페이스 스레드에서 실행되고 속도를 늦추지 않아야 하므로 Sleep() 함수는 사용자 지정 표시기에서 호출할 수 없습니다. 이 기능에는 0.1초마다 전문가 정지 플래그 상태를 검사하는 기능이 내장되어 있습니다.


 
Alexey Kozitsyn :

그건 그렇고, 표시기에서 Sleep()을 호출 하는 것이 이상합니다. 왜냐하면 그것은 금지되어 있습니다:


나는 Sleep()이 무엇인지조차 모른다.
 
prostotrader :

알렉세이!

예쁜 액체 도구 :)

2016.12.14 22:01:41.431 Trades  'xxxxx': cancel order #49931802 sell limit 1.00 GOLD-9.17 at 1190.2 placed for execution in 64926.078 ms

그것은 악기(유동성)에 관한 것이 아니라 모든 악기에 있을 수 있는 지연에 관한 것입니다.

저는 거의 4년 동안 Expert Advisors와 적극적으로 거래해 왔습니다.

내 Expert Advisors에는 일시 중지가 없습니다(INDICATORS의 서버에서 데이터 업로드를 기다리는 일시 중지 제외).

일시 중지를 입력하는 경우 - 이것은 고문의 알고리즘을 올바르게 생성하지 않았다는 참 신호입니다 :(

나는 또한 고문의 도움으로 만 꽤 오랫동안 거래합니다. 진실은 대부분 MT4에 있습니다. 그때까지는 리미트 카드의 도움으로 MT5에서 로봇으로 일했고 질문은 없었습니다. 개인적으로 저는 Expert Advisors의 추가 일시 중지에 대해서도 반대합니다. 특히 스캘퍼 또는 파이퍼인 경우 항목을 건너뛸 수 있습니다.
 
prostotrader :
나는 Sleep()이 무엇인지조차 모릅니다.
그렇다면 우리가 지금 일시 중지에 대해 이야기하고 있다는 것이 이상합니다 ...
 
Alexey Kozitsyn :
그렇다면 우리가 지금 일시 중지에 대해 이야기하고 있다는 것이 이상합니다 ...
Sleep() 이 하는 일의 의미가 아니라 내 코드에서 사용한다는 의미입니다.
 
prostotrader :
Sleep()이 하는 일의 의미가 아니라 내 코드에서 사용한다는 의미입니다.
표시기에서 일시 중지를 어떻게 구현합니까?
 
Alexey Kozitsyn :
표시기에서 일시 중지를 어떻게 구현합니까?
//+------------------------------------------------------------------+
// Custom indicator Check timer function                             |
//+------------------------------------------------------------------+
bool CheckTimer( const uint start_value, const uint per_value)
{
   uint end_value = GetTickCount ();
  
   if (end_value < start_value)
  {
     if ((start_value - end_value) >= per_value) return ( true );
  }
   else
  {
     if ((end_value - start_value) >= per_value) return ( true );
  }
   return ( false );
}
//+------------------------------------------------------------------+
//| Custom indicator Get server data function                        |
//+------------------------------------------------------------------+
int LoadServerData( const string a_symbol, ENUM_TIMEFRAMES period)
{
   int fail_cnt = 0 ;
//---
   while ((fail_cnt < 5 ) && ! IsStopped ())
  {  
     long first_date = long ( SeriesInfoInteger (a_symbol, PERIOD_M1 , SERIES_SERVER_FIRSTDATE ));
//---
     if (first_date > 0 )
    {
       if ( SymbolIsSynchronized (a_symbol))
      {
   //      Print( "LoadServerData: Первая дата на сервере есть. Пробуем получить локальные данные..." );
         return (GetLocalData(a_symbol, period));
      }  
    }
     else
    {
       uint start_tick = GetTickCount ();
//---        
       while (!CheckTimer(start_tick, 10 ))
      {
        fail_cnt--;
        fail_cnt++;
      }
    }    
    fail_cnt++;
  }
// Print( "LoadServerData: Первой даты на сервере нет!" );
   return ( 0 );  
}

이것은 오래된 예입니다.

GetTickCount의 오류가 상당히 크므로(최대 16ms) 이제 GetMicrosecondCount()를 사용합니다 .

 
Gennady Mazur :
원칙적으로는 이렇게 하고 있는데 Forts에서는 주문이 잘 받아들여지는 경우가 많은데... 아직 다음 틱에는 포지션이 없습니다...
여기가 추가 개봉이 빠져나갈 수 있는 곳입니다.... 이런식으로 부분적으로 문제를 해결하고, 주문이 받아들여지면 int 변수를 증가시키고, 증가 후에 개봉 조건이 약간 다르기 때문에, 신규오픈은 없지만....주문이 안되면 변수가 늘어나지 않는데 여기가 비법이네.. 상태를 잘못알아서 추가주문이 들어왔다.
여기에서 당신은 당신 자신의 질문에 답했습니다. 명령을 따라야 합니다.
 
prostotrader :

알렉세이!

예쁜 액체 도구 :)

2016.12.14 22:01:41.431 Trades  'xxxxx': cancel order #49931802 sell limit 1.00 GOLD-9.17 at 1190.2 placed for execution in 64926.078 ms

그것은 악기(유동성)에 관한 것이 아니라 모든 악기에 있을 수 있는 지연에 관한 것입니다.

저는 거의 4년 동안 Expert Advisors와 적극적으로 거래해 왔습니다.

내 Expert Advisors에는 일시 중지가 없습니다(INDICATORS의 서버에서 데이터 업로드를 기다리는 일시 중지 제외).

일시 중지를 입력하는 경우 - 이것은 고문의 알고리즘을 올바르게 생성하지 않았다는 참 신호입니다 :(

만약 당신이 그것을 가지고 있지 않다면? 필요하지 않은 알고리즘이 있을 수 있습니다.
 
Gennady Mazur :
나는 또한 고문의 도움으로 만 꽤 오랫동안 거래합니다. 진실은 대부분 MT4에 있습니다. 여기까지는 리미트 카드의 도움으로 MT5에서만 로봇으로 일했고 질문은 없었습니다. 개인적으로 저는 Expert Advisors의 추가 일시 중지에 대해서도 반대합니다. 특히 스캘퍼 또는 파이퍼인 경우 항목을 건너뛸 수 있습니다.
당신은 휴식이 필요한 경우가 아닙니다.