[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 379

 

그런 우연의 구름과 내가 수동으로 거래한 결과가 있는데, 5분에 유로화, 시간이 있는지 확인하십시오....

그래서 저는 이 전략을 기반으로 Expert Advisor를 만들고 싶습니다. 조건 _2에 대한 거래를 성사시켜야 합니다. 젠장, 전혀 이해할 수 없습니다. 심지어 닫을 때 함수를 사용했는데 오류가 발생합니다. .....

 
DanLett :
다른 모든 것 없이 이 함수만 있으면 오류가 발생합니까?
 

다시 생성하고 모든 것을 삭제했지만 기능을 종료하고 저장 - 오류는 없지만

하지만 int start를 바로 추가하면 오류가 발생합니다... 무엇이 문제가 될 수 있습니까?

 
int start()
  {
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
          }
        }
      }
    }
  }
}

  }
 
불균형 브래킷.
 
int start()
 {
 }
   
 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
         }
        }
      }
    }
  }
}
 
MQL4에는 내부 기능이 없고 외부 기능만 있습니다.
 
지금 확인하겠습니다
 

작동하지 않습니다...

이 함수를 사용하여 condition_2에서 주문을 닫는 방법은 주문을 닫습니다.

 if ((High[ 2 ]==High[ 1 ])||(Close[ 2 ]==High[ 1 ])||(High[ 2 ]==Open[ 1 ]))

다음은 condition_1에서 거래를 시작하기 위한 조건입니다.

   if (Close[ 2 ]<Open[ 2 ])
 {
   if (Close[ 1 ]>Open[ 1 ])
   {
       if ( OrdersTotal ()<= 0 )
      {
         if ((Low[ 2 ]==Low[ 1 ])||(Close[ 2 ]==Low[ 1 ])||(Low[ 2 ]==Open[ 1 ]))
          {
         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 , 0 , 0 , "DLSexp" , 12345 , 0 , Green );
          }
      }
   }
 }
 

DanLett :

예를 들어 다음과 같이 프로시저를 호출합니다.

 int start()
 {
 DeleteOrders( NULL , - 1 , - 1 );
 }

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+

void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), ot;
  
 
   if (sy== "" || sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot= OrderType ();
       if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
         if ( OrderSymbol ()==sy && (op< 0 || ot==op)) {
           if (mn< 0 || OrderMagicNumber ()==mn) {
             OrderDelete ( OrderTicket (), CLR_NONE );
         }
        }
      }
    }
  }
}