[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 1114

 
pr0fess0r64


1. 코드에서 &&OrderSymbol()==Symbol() 제거

2. 우리는 입찰을 정상화하고 물어야 합니다.

3. 슬리피지는 10포인트로 설정하지 않고 동적으로 계산하는 것이 좋습니다. 예를 들어, 주문이 금이고 이 상품이 틱당 50포인트로 움직인다면 10포인트의 미끄러짐이 재인용으로 당신 을 괴롭힐 것입니다. 따라서 최소 눈금의 크기를 계산하고 이 10을 곱하는 것이 좋습니다.

4. 코드에 오류 처리를 삽입합니다. 그렇지 않으면 실패의 경우 주문이 마감되지 않은 이유를 이해할 수 없습니다.

 
drknn :


1. 코드에서 &&OrderSymbol()==Symbol() 제거

2. 우리는 입찰과 매도를 정상화해야 합니다.

3. 슬리피지는 10포인트로 설정하지 않고 동적으로 계산하는 것이 좋습니다. 예를 들어, 주문이 금이고 이 상품이 틱당 50포인트로 움직인다면 10포인트의 미끄러짐이 재인용으로 고통스러울 것입니다. 따라서 최소 눈금의 크기를 계산하고 이 10을 곱하는 것이 좋습니다.

4. 코드에 오류 처리를 삽입합니다. 그렇지 않으면 실패의 경우 주문이 마감되지 않은 이유를 이해할 수 없습니다.

이것은 일반적인 견해이지만 세심함은 마차와 작은 수레를 생각해 낼 수 있습니다.
 
pr0fess0r64 :
정말 감사합니다 테스터에서 해봐야겠네요 주문수정에 대한 조언은 없나요?
수정 중 로그에 오류가 있습니까?
[삭제]  

반품은 어디로 보내나요?

여기, 0번 줄에서 확인하고 틱을 기다립니다.

 int start()
  {
//----
   
//----
   return ( 0 );
  }

여기도 분명한 것 같습니다 - 그만

   if (Lot_s<= 0 ){
     Alert ( "Не выбран лот!" );
     return ;

그리고 여기?

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), ko= 0 , ot;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if (ot> 1 && ot< 6 ) {
         if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || ot==op)) {
           if (mn< 0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
   return (ko);
}
주문 수 값은 ko이고 다음입니다. ko를 사용하여 다음에 쓸 함수? 리턴은 여기서 무엇을 합니까?
 

return()은 아무데도 보내지 않습니다.

return 문 은 현재 함수의 실행을 종료하고 호출 프로그램에 제어를 반환합니다. return(표현식) 사용; 현재 함수의 실행을 종료하고 결과를 전달합니다. 연산자 표현식은 괄호로 묶여 있으며 할당 연산자 를 포함해서는 안 됩니다.

[삭제]  
Vinin :

return()은 아무데도 보내지 않습니다.

return 문 은 현재 함수의 실행을 종료하고 호출 프로그램에 제어를 반환합니다. return(표현식) 사용; 현재 함수의 실행을 종료하고 결과를 전달합니다. 연산자 표현식은 괄호로 묶여 있으며 할당 연산자를 포함할 수 없습니다.

아, 즉, 명시적으로 ko에 결과를 할당하는 대신 return을 통해 전달합니까? 이해가 되는 것 같습니다, 감사합니다.
[삭제]  
그렇다면 조건이 충족되지 않으면 고문의 작업을 중단하는 것이 어떻게 옳습니까? 진정하지 말고 완전히 멈추십시오.
 
Abzasc :
그렇다면 조건이 충족되지 않으면 고문의 작업을 중단하는 것이 어떻게 옳습니까? 진정하지 말고 완전히 멈추십시오.

"내려놓다"은(는) 무슨 뜻이고, "멈추다"는(는) 무슨 뜻인가요?
[삭제]  
Vinin :

"내려놓다"은(는) 무슨 뜻이고 "멈추다"는(는) 무슨 뜻인가요?

잠자기 - 잠자기 상태에 들어가면 다시 시작을 시도합니다.

중지 - 완전히, 고문이 작동을 멈춥니다("얼굴" 변경).

예를 들어, 유로 벅스의 고문은 유로 엔에 던져졌습니다. 기호를 확인하고 일치하지 않으면 경고를 표시하고 수동으로 다시 시작할 때까지 다시 작업을 시도하지 않습니다.

 
Abzasc :

잠자기 - 잠자기 상태에 들어가면 다시 시작을 시도합니다.

중지 - 완전히, 고문이 작동을 멈춥니다("얼굴" 변경).

예를 들어, 유로 벅스의 고문은 유로 엔에 던져졌습니다. 기호를 확인하고 일치하지 않으면 경고를 표시하고 수동으로 다시 시작할 때까지 다시 작업을 시도하지 않습니다.


왜 그렇게 어려운가

시작() 함수에서 조건 처리를 제공하는 것으로 충분합니다.

 int start(){
   if ( Symbol ()!= "EURUSD" ) {
     Alert ( "Советник должен работать только на EURUSD" );
     return ( 0 );
  }
   // Далее обработка, принятие решений

}
이 경우 어드바이저를 잘못된 도구에 던지면 스스로 (어드바이저)가 꺼질 때까지 경고가 발생합니다.

사이렌 소리를 추가한 다음 즉시 차단할 수도 있습니다.