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

 

누구든지 다음 코드를 제안할 수 있습니까?

주문 그리드가 닫혀 있는 경우(동일한 유형이 2개 이상), 하루가 끝날 때까지(또는 시간, 분 단위로 설정할 수 있는 시간) STOP TRADING.

어떻게 해서든 같은 주문 유형 으로 히스토리 카운트를 찾는 방법은 어떻게 든 여전히 할 수 있지만 하루가 끝날 때까지 그것을 중지하는 방법을 정확히 모르겠습니다. 삼위일체와 함께)

 
Igor Makanu :

정상이 아닙니다, 당신은 무언가를 전송하기 위해 8 바이트로 고통받습니다.

글쎄, 어떤 목적에 따라, 당신이 스스로에게 상기시킨다면, 8개로 충분합니다 :)

 
Порт-моне тв :

누구든지 다음 코드를 제안할 수 있습니까?

주문 그리드가 닫혀 있는 경우(동일한 유형이 2개 이상), 하루가 끝날 때까지(또는 시간, 분 단위로 설정할 수 있는 시간) STOP TRADING.

어떻게 해서든 같은 주문 유형 으로 히스토리 카운트를 찾는 방법은 어떻게 든 여전히 할 수 있지만 하루가 끝날 때까지 그것을 중지하는 방법을 정확히 모르겠습니다. 삼위일체와 함께)

 //+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType( int order_type)
  { double p = 0 ;
   for ( int pos=OrdersHistoryTotal()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY)== true )
        {
         if (OrderCloseTime()>=время начала дня)
           { 
             if (OrderType()==order_type || order_type == - 1 ) cnt++;
           }
        }
     }
   return (p);
  }
 
Порт-моне тв :

누구든지 다음 코드를 제안할 수 있습니까?

주문 그리드가 닫혀 있는 경우(동일한 유형이 2개 이상), 하루가 끝날 때까지(또는 시간, 분 단위로 설정할 수 있는 시간) STOP TRADING.

어떻게 해서든 같은 주문 유형 으로 히스토리 카운트를 찾는 방법은 어떻게 든 여전히 할 수 있지만 하루가 끝날 때까지 그것을 중지하는 방법을 정확히 모르겠습니다. 삼위일체와 함께)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

질문을 올바르게 이해하면 이와 같은 것(원칙 자체)

 
Aleksei Stepanenko :

글쎄, 어떤 목적에 따라, 당신이 스스로에게 상기시킨다면, 8개로 충분합니다 :)

생각나면 OnChartEvent(), IMHO에서 사용자 정의 이벤트 를 던지는 것이 더 편리합니다.


마카르FX :

누구든지 다음 코드를 제안할 수 있습니까?

주문 그리드가 닫혀 있는 경우(동일한 유형이 2개 이상), 하루가 끝날 때까지(또는 시간, 분 단위로 설정할 수 있는 시간) STOP TRADING.

하루의 시작 날짜부터 주문 내역 검색(오늘 또는 TF D1이 0 막대를 얻거나 datetime에서 변환할 시간 틱 시간)

히스토리에서 지정된 날짜보다 더 큰 날짜의 주문이 하나 이상 발견되면 함수가 종료되고 결과는 true입니다.

맨 위에 있는 OnTick()에서 날짜 매개변수(오늘)를 사용하여 이러한 함수에 대한 호출


쓰기 너무 귀찮고, 수십줄이 있고, 김은 내역에서 날짜별로 주문을 검색하는 기능이 있었습니다.

 
Порт-моне тв : 어떻게 해서 같은 주문 유형으로 같은 주문 유형 을 찾는지 어떻게 해서든 내역을 계산할 수는 있지만 하루가 끝날 때까지 그것을 중지하는 방법을 정확히 모릅니다. 삼위일체와 함께)
 bool trade_buy;
bool trade_sell;

if (кол-во закрытых ордеров buy> 2 )
trade_buy= false ;
else
trade_buy= true ;

if (кол-во закрытых ордеров sell> 2 )
trade_sell= false ;
else
trade_sell= true ;
 
Maxim Kuznetsov :

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

질문을 올바르게 이해하면 이와 같은 것(원칙 자체)

빠른 답변 감사합니다만 이건 '거래 금지'라 어떻게 구현해야 할지 모르겠는데 코드 감사합니다.
 
MakarFX :
거래 매도 / 거래 매수 - 기능 어떻게!?
 
Порт-моне тв :
거래 매도 / 거래 매수 - 기능 어떻게!?


 //+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType( string symb= "" , int order_type)
  {
   double p = 0 ;
   if (symb== "0" ) symb= _Symbol ;
   for ( int pos=OrdersHistoryTotal()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY)== true )
        {
         if (OrderSymbol()==symb || symb== "" )
           {
             if (OrderCloseTime()>= iTime ( _Symbol , PERIOD_D1 , 0 ))
              { 
               if (OrderType()==order_type || order_type == - 1 ) cnt++;
              }
           }
        }
     }
   return (p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (GetCloseOrderType( _Symbol , 0 )> 2 )
      trade_buy= false ;
   else
      trade_buy= true ;

   if (GetCloseOrderType( _Symbol , 1 )> 2 )
      trade_sell= false ;
   else
      trade_sell= true ;
//---
   if (trade_buy)
     {
      твое условие открытия покупок
     }
   if (trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko :

여기에서 가져온 것이 있다면

나는 프로그래밍에 익숙하지 않고 잘하지 않습니다. 다운로드를 위해 리메이크하고 업로드 할 수 있습니까???