OrderSelect 함수 질문

 

boopa26은 주문 전송 코드를 작성할 수 있지만 주문을 닫기 위한 주문 선택 기능은 작성할 수 없습니다. for 사이클 또는 while 사이클 없이 주문을 마감하는 주문 선택 기능을 작성하려고 합니다. boopa26은 if 조건으로 주문을 마감하는 주문 선택 기능을 작성하려고 하지만 boopa26은 주문을 마감하기 위한 주문 선택 기능을 조립하는 것을 이해하지 못합니다.


예시 구매 주문 보내기

if(OrdersTotal()==0)OrderSend(Symbol(),OP_BUY,.1,Ask,3,0,0,NULL,9,0,clrNONE);


예시 주문 선택. boopa26은 이해하지 못합니다

OrderSelect( 정수 인덱스 , 정수 선택 , 정수 풀 )


int 인덱스는 무엇입니까?

int 선택이 무엇입니까?

인풀이 뭔가요?

주문 선택은 어떻게 하나요?

 

문서를 읽었습니까?

Parameters

티켓

【인】 두 번째 매개변수에 따라 주문 인덱스 또는 주문 티켓.

고르다

【인】 플래그 선택. 다음 값 중 하나일 수 있습니다.

SELECT_BY_POS - 주문 풀의 인덱스,
SELECT_BY_TICKET - 인덱스는 주문 티켓입니다.

풀=MODE_TRADES

【인】 선택적 주문 풀 인덱스입니다. 선택한 매개변수가 SELECT_BY_POS일 때 사용됩니다. 다음 값 중 하나일 수 있습니다.

MODE_TRADES(기본값)- 거래 풀에서 선택한 주문(열린 주문 및 보류 중인 주문),
MODE_HISTORY - 히스토리 풀에서 선택한 주문(닫힌 주문 및 취소된 주문).


 
 
gumrai에는 문서 링크가 포함될 수 있습니다. 농담이야. 감사합니다
 
bool   OrderSelect(
   int      index,             // index or order ticket
   int      select ,           // flag
   int      pool=MODE_TRADES   // mode
   );

boopa26은 미결 주문을 마감하려고 하므로 boopa는 MODE_TRADES를 세 번째 매개변수 로 선택합니다.


boopa26은 SELECT_BY_POS 또는 SELECT_BY_TICKET을 수행합니까? boopa26은 모른다

SELECT_BY_POS //index inside order pool,
SELECT_BY_TICKET //index is order ticket.
 

boopa26은 세 번째 매개변수 로 MODE_TRADES를 선택합니다.

boopa26은 SELECT_BY_POSITION을 두 번째 매개변수로 선택합니다.

boopa26은 첫 번째 매개변수로 주문 인덱스를 선택합니다.


예시

 static int order_index;

if ( OrderSelect (order_index,SELECT_BY_POSITION,MODE_TRADES)== 1
 

https://docs.mql4.com/trading/orderclose

boopa26은 for 주기 또는 while 주기 없이 어떻게 순환하지만 주문 선택 기능으로 열린 주문을 닫는 조건이 있습니까?

문서 주문 닫기에는 주문 티켓이 필요하지만 boopa26은 주문을 선택하여 티켓이 아닌 주문 위치를 찾습니다.

 bool   OrderClose(
   int         ticket,       // ticket
   double      lots,         // volume
   double      price,       // close price
   int         slippage,     // slippage
   color       arrow_color   // color
   );

1. 주문 선택

2. 주문 마감

방법을 모른다

 
//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property description "Moving Average sample expert advisor"

#define MAGICMA   20131111
//--- Inputs
input double Lots          = 0.1 ;
input double MaximumRisk   = 0.02 ;
input double DecreaseFactor= 3 ;
input int     MovingPeriod  = 12 ;
input int     MovingShift   = 6 ;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders( string symbol)
  {
   int buys= 0 ,sells= 0 ;
//---
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
       if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA)
        {
         if (OrderType()==OP_BUY)  buys++;
         if (OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if (buys> 0 ) return (buys);
   else        return (-sells);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int     orders=HistoryTotal();     // history orders total
   int     losses= 0 ;                   // number of losses orders without a break
//--- select lot size
   lot= NormalizeDouble (AccountFreeMargin()*MaximumRisk/ 1000.0 , 1 );
//--- calcuulate number of losses orders without a break
   if (DecreaseFactor> 0 )
     {
       for ( int i=orders- 1 ;i>= 0 ;i--)
        {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== false )
           {
             Print ( "Error in history!" );
             break ;
           }
         if (OrderSymbol()!= Symbol () || OrderType()>OP_SELL)
             continue ;
         //---
         if (OrderProfit()> 0 ) break ;
         if (OrderProfit()< 0 ) losses++;
        }
       if (losses> 1 )
         lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 );
     }
//--- return lot size
   if (lot< 0.1 ) lot= 0.1 ;
   return (lot);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int     res;
//--- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//--- get Moving Average 
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//--- sell conditions
   if (Open[ 1 ]>ma && Close[ 1 ]<ma)
     {
      res= OrderSend ( Symbol (),OP_SELL,LotsOptimized(),Bid, 3 , 0 , 0 , "" ,MAGICMA, 0 ,Red);
       return ;
     }
//--- buy conditions
   if (Open[ 1 ]<ma && Close[ 1 ]>ma)
     {
      res= OrderSend ( Symbol (),OP_BUY,LotsOptimized(),Ask, 3 , 0 , 0 , "" ,MAGICMA, 0 ,Blue);
       return ;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//--- get Moving Average 
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//---
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
       if (OrderMagicNumber()!=MAGICMA || OrderSymbol()!= Symbol ()) continue ;
       //--- check order type 
       if (OrderType()==OP_BUY)
        {
         if (Open[ 1 ]>ma && Close[ 1 ]<ma)
           {
             if (!OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White))
               Print ( "OrderClose error " , GetLastError ());
           }
         break ;
        }
       if (OrderType()==OP_SELL)
        {
         if (Open[ 1 ]<ma && Close[ 1 ]>ma)
           {
             if (!OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White))
               Print ( "OrderClose error " , GetLastError ());
           }
         break ;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
//--- check for history and trading
   if ( Bars < 100 || IsTradeAllowed()== false )
       return ;
//--- calculate open orders by current symbol
   if (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
   else                                     CheckForClose();
//---
  }
//+------------------------------------------------------------------+
이동 평균 전문가 고문은 미결 주문을 마감하는 주기에 사용합니다.
 

"boopa26"은 다음을 수행해야 한다고 생각합니다.

  1. 첫째, "boopa26"은 먼저 코딩의 기초(C에서와 같이)를 배워야 합니다.
  2. 그런 다음 "boopa26"은 책/자습서 (오래되고 구식일지라도)를 읽고 따라야 합니다.
  3. 동시에 "boopa26"은 책/자습서 에 언급되지 않은 MQL4 업데이트 에 특히 주의하면서 전체 문서 를 읽어야 합니다.
  4. 그런 다음 "boopa26"은 사용자 코드 기반 에 있는 지표, 전문가 자문(EA) 및 스크립트에 대한 몇 가지 코드 예제를 연구해야 합니다.
  5. 그런 다음 "boopa26"은 자신만의 매우 간단한 지표를 만들기 시작하고 더 복잡한 지표를 완전히 이해하고 만들 수 있을 때까지 천천히 지표를 구축할 수 있습니다.
  6. 그런 다음 "boopa26"은 자신의 매우 간단한 EA를 만들기 시작하고 더 복잡한 EA를 완전히 이해하고 만들 수 있을 때까지 천천히 빌드합니다.

"boopa26"은 또한 "boopa26"이 모든 필요한 단계를 건너뛰어서는 안 된다는 매우 중요한 교훈을 배워야 합니다. 그렇지 않으면 "boopa26"이 모든 사람의 시간을 낭비할 뿐이고 "아름다운 케이크" 대신 모든 "boopa26"이 "탄탄"입니다.

 
FMIC :

"boopa26"은 다음을 수행해야 한다고 생각합니다.

  1. 첫째, "boopa26"은 먼저 코딩의 기초(C에서와 같이)를 배워야 합니다.
  2. 그런 다음 "boopa26"은 책/자습서 (오래되고 구식일지라도)를 읽고 따라야 합니다.
  3. 동시에 "boopa26"은 책/자습서 에 언급되지 않은 MQL4 업데이트 에 특히 주의하면서 전체 문서 를 읽어야 합니다.
  4. 그런 다음 "boopa26"은 사용자 코드 기반 에 있는 지표, 전문가 자문(EA) 및 스크립트에 대한 몇 가지 코드 예제를 연구해야 합니다.
  5. 그런 다음 "boopa26"은 자신만의 매우 간단한 지표를 만들기 시작하고 더 복잡한 지표를 완전히 이해하고 만들 수 있을 때까지 천천히 지표를 구축할 수 있습니다.
  6. 그런 다음 "boopa26"은 자신의 매우 간단한 EA를 만들기 시작하고 더 복잡한 EA를 완전히 이해하고 만들 수 있을 때까지 천천히 빌드합니다.

"boopa26"은 또한 매우 중요한 교훈을 배워야 합니다. "boopa26"은 필요한 모든 단계를 건너뛰어서는 안 됩니다. 그렇지 않으면 "boopa26"은 모든 사람의 시간을 낭비하고 "아름다운 케이크" 대신에 " 숯불".

1. c 지식이 필요하지 않습니다. mql4는 다른 기능입니다

2. 이미 읽은 책

3. 이미 문서 읽기

4. 이미 작성된 코드

5. ?

6. ?

boopa26은 사람들의 시간을 낭비하지 않습니다

boopa26에게 숯 케이크 굽는 법을 가르치는 FMIC 선생님

FMIC 숯 케이크 클래스

사유: