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

 
주문을 열지 않고 1랏 주문에 대한 커미션 크기를 찾는 방법을 알려주실 수 있습니까?
 
Reshetov :

OrdersTotal ()은 이미 열려 있는 위치의 수를 반환합니다. 도움을 받아 이미 열린 포지션이 있는지 여부를 확인할 수 있습니다.

Mas_Ord_New[0][0]!=0인 경우 위치를 닫을 때 자습서의 Terminal() 함수를 사용합니다. 그러나 여기에 또 다른 작업이 있습니다. 하나의 주문이 이미 열려 있는 경우 현재 신호에 대한 거래를 금지하는 플래그를 만들어야 합니다. 플래그를 사용하려고 하는데 뭔가 실수를 했습니다.

  
static bool buy_1= true ;
   
if (Stoch_Sig== 4 && buy_l== true )
       { 
         sl=Ask-Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
           Alert( "Неудачная попытка открыть ордер BUY. Ошибка: " , GetLastError());
         if (Ans== true )
            buy_l= false ; // снимем флаг, запрещаем торговать по данному сигналу
       }


   
if (Stoch_Sig!= 4 && buy_l== false ) // поднимем флаг, сигнал сменился - торговать по нему можно опять
       buy_l= true ;
 

얘들아 도움이 필요해 이게 뭐야

2012.09.10 18:40:20 '6257743': 주문 매수 5.00 EURUSD 개시 1.27816 sl: 1.27791 tp: 1.27876 실패 [잘못된 S/L 또는 T/P]

가격과 손절매가 동일한 이유:

가격 1.25618 손절매 1.25618 이익을 취하십시오 1.25698


이익을 취하십시오 60핍

손절매 20

 

안녕하세요. 커스텀 인디케이터에 대해 질문이 있습니다. iCustom 설명은 다음과 같이 말합니다.

이중 iCustom ( 문자열 기호, int timeframe, 문자열 이름, ..., int 모드, int shift)
지정된 사용자 지정 지표의 계산. 사용자 지정 표시기는 컴파일해야 하며(확장자가 EX4인 파일) terminal_directory\experts\indicators 디렉터리에 있어야 합니다.
기호 - 지표가 계산될 데이터가 있는 기호의 기호 이름입니다. NULL은 현재 문자를 의미합니다.
시간대 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다.
이름 - 사용자 지정 표시기의 이름입니다.
... - 매개변수 목록(필요한 경우). 전달된 매개변수는 선언 순서 및 사용자 지정 표시기의 외부(외부) 변수 유형과 일치해야 합니다.
방법 - 인디케이터 라인 인덱스. 0에서 7 사이일 수 있으며 SetIndexBuffer 함수 중 하나에서 사용하는 인덱스와 일치해야 합니다.
옮기다 - 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 전에 지정된 수만큼 이동).

질문: "shift" 값을 얻는 방법은 무엇입니까? (시프트로 표시기를 호출할 때 값을 사용하지 않고 값을 사용합니다. 예를 들어 iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name", pam1,0,100), 100바 전에 표시기를 호출하면 iCustom(NULL, 0, "name",pam1,0,100)과 다른 값을 갖게 됩니다. 표시기는 단순하며 5개의 이전 닫기를 사용합니다. 값은 평균을 취합니다.

도움을 주시면 감사하겠습니다.

 
paladin80 :
설정한 주선과의 편차는 0 (영)입니다. 우리는 0 이상이 필요합니다.
레셰토프 :
여전히 편차를 음수로 설정하시겠습니까?


고마워, 동지들! 정확히! 벌고 돌보지 않았습니다. 죄송합니다만, 생산하지 않도록 감사를 누르는 방법이 없습니다. )

그건 그렇고, 초보자가 유창한 이름을 가진 변수를 통해 지표에 매개 변수를 전달하는 것이 좋습니다. 지금까지 그렇게 해왔지만 이번에는 뭔가를 놓쳤습니다.

 

모두 좋은 저녁!

나는 같은 문제에 대해 모든 것을 묻고 싶었습니다. 여기에서 기능을 가져왔습니다. https://www.mql5.com/en/forum/131859

 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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 (), clDelete);
          }
        }
      }
    }
  }
}

오류 발생 --->

결국, 함수의 모든 변수는 내부에서 선언됩니다... 무엇이 잘못되었나요?

복사해서 붙여넣었습니다. --->

   if ((High[ 2 ]==High[ 1 ])||(Close[ 2 ]==High[ 1 ])||(High[ 2 ]==Open[ 1 ]))
   {
   DeleteOrders()
   }
   
   
 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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 (), clDelete);
          }
        }
      }
    }
  }
}
 
DanLett :

거기에는 오류가 없습니다:

 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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 ) ;
          }
        }
      }
    }
  }
}
그러나 색상만 지정하면 됩니다(예: - CLR_NONE ) .
 

그리고 당신이 "공중에 매달려있는"것처럼 보입니다.

   if ((High[ 2 ]==High[ 1 ])||(Close[ 2 ]==High[ 1 ])||(High[ 2 ]==Open[ 1 ]))
   {
   DeleteOrders()
   }
그리고 일반적으로 그러한 조건 (높음[ 2 ]==높음[ 1 ]) 또는 이와 같은 (닫기[ 2 ]==높음[ 1 ]) 또는 그러한 조건 (높음[ 2 ]==열기[ 1 ]) 을 충족하는 것은 드문 . 그래프를 봐, 그런 일치를 많이 찾을 수 있습니까?

주문 삭제 논리의 관점에서 ... - 또한 간단히 말해서 어려움을 겪습니다.

 

여기에서 코드를 복사하고 새 프로젝트(어드바이저)를 생성하여 코드를 붙여넣음 -> 컴파일됨

이상하지만 여전히 같은 오류가 발생합니다 ...

 
DanLett :

여기에서 코드를 복사하고 새 프로젝트(어드바이저)를 생성하여 코드를 붙여넣음 -> 컴파일됨

이상하지만 여전히 같은 오류가 발생합니다 ...

이 함수를 제외한 모든 것을 제거하고 컴파일하십시오. 실수가 있을까요? 삭제하기 전에 저장하십시오.