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

 
AndrewX :

이 악기에 오픈 포지션이 있는지 없는지 포지션을 오픈하기 위한 조건에서 체크를 올바르게 설정하는 방법을 알려주세요. 그리고 해당 상품에 대한 포지션(매도 또는 매수)이 있으면 개설이 발생하지 않고, 그렇지 않으면 개설 신호가 처리됩니까?

다음은 코드입니다(포즈를 여는 역할을 한다고 생각합니다).

논리적으로 맞는 것 같지만 어쨌든 작동하지 않습니다. 하나의 악기에 대해 여러 포즈를 엽니다.

추신: 저는 프로그래머가 아닙니다. 가능하면 찻주전자에게 자세히 설명하십시오.


어렵지 않아요. 주문을 계산하는 2개의 서브루틴을 구성하는 것이 가장 좋습니다.

 // =================================================================================================
// ************************* Счётчики ордеров ******************************************************
// =================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy( int MAGIC){
   string SMB= Symbol ();
   int SchBuy= 0 ;
   int i;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) {
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
     else {
       if (OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue ;}
       if (OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
   return (SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell( int MAGIC){
   string SMB= Symbol ();
   int SchSell= 0 ;
   int i;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--){
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
    else {
       if (OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC){ continue ;} 
       if (OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return (SchSell);     
}                  
//==================================================================================================

다음으로 코드 자체에서 다음을 작성합니다.

 if (SchBuy(MAGIC)+SchSell(MAGIC)<= 0 ){
// ордеров нет - устанавливаем ордер при наличии торгового сигнала
}

사용자 변수에 MAGIC 상수를 선언하는 것이 좋습니다. 이와 같이:

 extern int       MAGIC= 467223 ; // У ордеров открытых вручную MAGIC=0
 

시험을 마친


 if (NumberOfPositions(Symbol_1,- 1 ,Magic)< 1

все равно не пашет
 
drknn :


어렵지 않아요. 주문을 계산하는 2개의 서브루틴을 구성하는 것이 가장 좋습니다.

다음으로 코드 자체에서 다음을 작성합니다.

사용자 변수에 MAGIC 상수를 선언하는 것이 좋습니다. 이와 같이:

감사합니다. 살펴보겠습니다. 하지만 저에게는 너무 복잡할 것 같습니다.
 
AndrewX :
감사합니다. 살펴보겠습니다. 하지만 저에게는 너무 복잡할 것 같습니다.

이 게시물에 Expert Advisor 파일을 첨부했습니다. 바라보다.
파일:
 
좋은 아침 ! 최적화 가 없다는 사실에 대한 내 질문이 복잡하거나 관심이 없을 수 있습니까?
 
volshebnik :
좋은 아침 ! 최적화가 없다는 사실에 대한 내 질문이 복잡하거나 관심이 없을 수 있습니까?

여기에는 여러 가지 가능한 이유가 있습니다. 사소한 것에서 옵션에 이르기까지 이력이 없는 것에서 수익성 있는 옵션은 없습니다. 더 쉬울 수 있지만 - 고문의 오류
 

로봇이 대기 중인 주문을 생성하는지 알려주세요.

보류 중인 주문에 대한 명령은 서버로 전송됩니다.

터미널에 대기 중인 주문이 표시됩니까?

보류 주문을 수동으로 설정 하는 것과 동일한가요? 상단에 열린 주문, 하단에 대기 중인 주문이 대기 중입니까?

 
Jaguar1974 :

로봇이 대기 중인 주문을 생성하는지 알려주세요.

보류 중인 주문에 대한 명령은 서버로 전송됩니다.

터미널에 대기 중인 주문이 표시됩니까?

보류 주문을 수동으로 설정하는 것과 동일한가요? 상단에 열린 주문, 하단에 대기 중인 주문이 대기 중입니까?


큐잉은 무슨 뜻인가요? EA는 서버에 주문을 보내 보류 중인 주문 을 합니다. 모든 것이 주문 매개변수와 함께라면 서버는 지연을 설정하고 터미널에 즉시 표시됩니다. EA가 특정 단계(주기를 통해 수행)로 지연을 배치하는 주문을 보내면 각각의 새로운 주문은 서버에서 개별적으로 처리됩니다. 대기열에 있는 주문 - 어드바이저가 주문한 - 서버가 응답했습니다. EA는 다시 주문하고 다시 서버의 응답을 기다리고 있습니다.

대기 주문은 무엇을 의미합니까? 이게 무슨 말이에요?

 
Vinin :

여기에는 여러 가지 가능한 이유가 있습니다. 사소한 것에서 옵션에 이르기까지 이력이 없는 것에서 수익성 있는 옵션은 없습니다. 더 쉬울 수 있지만 - 고문의 오류
확인해보니 1999년의 기록이 있습니다. 확인란은 모든 옵션을 표시해야 합니다(수익이 나지 않음). 예를 들어 100에서 110까지의 MA 매개변수 하나만으로 최적화를 적용했습니다. 최적화가 "죽음"입니다. 결과가 없고 그래프가 없습니다. 다른 매개변수를 포함하는 것은 말할 것도 없습니다.
 
volshebnik :
확인해보니 1999년의 기록이 있습니다. 확인란에는 모든 옵션이 표시되어야 합니다(수익성도 없음). 예를 들어 100에서 110까지의 MA 매개변수 하나만으로 최적화를 적용했습니다. 최적화가 "죽음"입니다. 결과가 없고 그래프가 없습니다. 다른 매개변수를 포함하는 것은 말할 것도 없습니다.

상담사를 봐야 합니다. 그래서 아무 말도 할 수 없다.