테스터에서 지우기 - 페이지 4

 
Roman Shiredchenko # :

청산 중 상각은 무시할 수 있습니다.

예시. 구매 거래는 50의 가격으로 열리며, 청산 시작 시 가격은 70입니다. 청산 중에는 거래가 삭제되고 20 투그릭이 귀하에게 적립되며, 청산 후에는 거래가 열립니다. 70의 가격으로.

100의 가격으로 닫으면 결과적으로 터미널은 50 tugriks의 이익으로 하나의 거래를 표시합니다.

문제는 일반적으로 트롤 또는 BU를 작성할 때 발생합니다. 거래가 15+일 때 BU를 +5에 놓고 싶다고 가정해 봅시다.

그런 다음 예제에서 숫자를 가져오면 청산 전에 손절매가 이미 +5 포인트에 있고 청산 후에는 -5 포인트가 됩니다. 그러나 거래가 결국 중지로 종료되면 여전히 5개의 tugriks 플러스를 얻을 수 있습니다.

따라서 테스터에서 클리어링을 무시할 수 있습니다.

 
Aleksandr Slavskii # :

정말 간단하고 가장 중요하게 신뢰할 수 있습니다.


주제를 벗어난 주제의 작성자를 용서해 주십시오. 하지만 정리가 언제 끝났는지 결정하는 방법이 있으신가요?

문제는 다음과 같습니다. 브로커는 오프너이며 청산하는 동안 보류 중인 주문을 삭제하고 청산 필드는 이를 새 주문에 배치하지 않습니다.

선물은 어떨지 모르겠지만 주식에서는 청산이 끝나는 시간이 다릅니다.

그래서 프로그래밍 방식으로 특정 논문에 대한 정리가 끝나는 순간을 결정할 수 없었습니다.

타이머가 열릴 때까지 주문을 하라고 바보같이 주문을 보낸다.

나는 이 접근 방식이 마음에 들지 않지만 다른 방법은 없습니다.

예, 모든 것이 정상입니다. 함께 토론하고 토론하십시오. 주제는 모두에게 열려 있습니다 !!!!!
 
Aleksandr Slavskii # :

청산 중 상각은 무시할 수 있습니다.

예시. 구매 거래는 50의 가격으로 열리며, 청산 시작 시 가격은 70입니다. 청산 중에는 거래가 삭제되고 20 투그릭이 귀하에게 적립되며, 청산 후에는 거래가 열립니다. 70의 가격으로.

100의 가격으로 닫으면 결과적으로 터미널은 50 tugriks의 이익으로 하나의 거래를 표시합니다.

문제는 일반적으로 트롤 또는 BU를 작성할 때 발생합니다. 거래가 15+일 때 BU를 +5에 놓고 싶다고 가정해 봅시다.

그런 다음 예제에서 숫자를 가져오면 청산 전에 손절매가 이미 +5 포인트에 있고 청산 후에는 -5 포인트가 됩니다. 그러나 거래가 결국 중지로 종료되면 여전히 5개의 tugriks 플러스를 얻을 수 있습니다.

따라서 테스터에서 클리어링을 무시할 수 있습니다.

영형! 얼마나 흥미로운가 ... 더 깊이 들어가서 시도해야합니다! :-)

나는 (기사에서 가져옴) out 기능은 기록에 따라 거래에서 계산하는 것이라고 썼습니다. 사실 (그 자세는 플러스에 있음) - 우리는 연속 마이너스를 고려하여 화면에 표시합니다. - 예를 들어 ACCOUNT를 지우는 것과 같이 경매할 때 완전히 정확하지 않음 - 나는 단지 찾고 있는 것뿐입니다 ...

결과적으로 예를 들어 포지션을 정확히 청산하기 위해서는 이전 청산을 고려하여 그것이 음수이면 청산 이익과 이전 청산 손실의 값을 비교할 필요가 있습니다.

 //+------------------------------------------------------------------+
//|                 УЧЕТ КЛИРИНГА
//+------------------------------------------------------------------+
double Calc_Clearing() // вычисление лота
  {
   bool ord;
   double TotalLot= 0 ;
     for ( int i= HistoryDealsTotal ()- 1 ; i>= 0 ; i--)
     {
       ulong ticket= HistoryDealGetTicket (i);
      ord= HistoryDealSelect (ticket);
       if (ord && HistoryDealGetString (ticket, DEAL_SYMBOL ) == _Symbol
       //  && HistoryDealGetInteger(ticket,DEAL_MAGIC) == MagicC
         && HistoryDealGetInteger (ticket, DEAL_ENTRY ) == DEAL_ENTRY_OUT )
        {
         if ( HistoryDealGetDouble (ticket, DEAL_PROFIT ) <= 0 )
           {
            TotalLot+= HistoryDealGetDouble (ticket, DEAL_VOLUME );
           }
         else
           {
             break ;
           }
        }
     }
   return TotalLot == 0 ? TotalLot: TotalLot;
  }

버그 발견 - 수정:

TotalLot+= HistoryDealGetDouble (ticket, DEAL_PROFIT );

결과적으로 다음은 삽입하기 전에 화면 상단의 그림입니다.

   Comment ( " SPREAD текущий по символу " , _Symbol , " составляет: " , SymbolInfoInteger ( _Symbol , SYMBOL_SPREAD ),
     "      СВЕРКА по клирингу:  " , NormalizeDouble (Calc_Clearing(), 0 ));

청산 화해

아직 청산 손실이 없었기 때문에:

2021년 11월 9일: 모든 "외부" - 추가:


 
Roman Shiredchenko # :

공포! 댓글을 달기에는 잘못된 부분이 너무 많습니다.

다르게 해봅시다.

포지션에 관심이 있는데 왜 거래 내역이 필요합니까?

IMHO, 각 신규 딜에 대한 변수에 마지막 포지션의 가격을 기록하는 것으로 충분하며, 청산이 오면 변수에 기록된 가격과 청산 전 마지막 틱의 가격의 차이에 대해 BU를 조정합니다.

예시:

로트 = 1;

이중 end_position=0;

가격 30의 첫 거래, end_position = 30;

가격 에 두 번째 거래   60, end_position = 45;

가격 에 세 번째 거래   90, end_position = 60;


즉, 거래량이 3이고 가격이 60인 포지션이 있습니다.

가격이 70일 때 청산이 왔다고 가정하고 이익은 30투그릭입니다.

이중 청산 가격 = 70;

청산 후, 당신은 70의 가격으로 포지션을 열겠지만, 우리는 이 포지션의 실제 가격이   end_position == 60; 따라서 이 가격에서 트롤 또는 BU를 계산해야 합니다.

따라서 지우는 동안 변수를 채우십시오.

더블   교정기 = 0 ;

교정자=   clearing_price - end_position;

거래가 각각 +20 포인트일 때 이전 BU가 있다고 가정하고 BU의 시작이 다음과 같은 BU 기능에 추가: 20 - 수정자;

그리고 BU도 플러스만큼 포인트를 넣어주고, 보정값에 맞게 조정도 해야 합니다.

위치 수정기를 닫은 후 = 0 ;


그러나 이것은 청산 후 부분 마감이나 충전이 없는 경우에만 작동합니다. 그렇다면 달라야 합니다.

 
Aleksandr Slavskii # :

정말 간단하고 가장 중요하게 신뢰할 수 있습니다.


주제를 벗어난 주제의 작성자를 용서해 주십시오. 하지만 정리가 언제 끝났는지 결정하는 방법이 있으신가요?

문제는 다음과 같습니다. 브로커는 오프너이며 청산하는 동안 보류 중인 주문을 삭제하고 청산 필드는 이를 새 주문에 배치하지 않습니다.

선물은 어떨지 모르겠지만 주식에서는 청산이 끝나는 시간이 다릅니다.

그래서 프로그래밍 방식으로 특정 논문에 대한 정리가 끝나는 순간을 결정할 수 없었습니다.

타이머가 열릴 때까지 주문을 하라고 바보같이 주문을 보낸다.

나는 이 접근 방식이 마음에 들지 않지만 다른 방법은 없습니다.

나는 또한 오프너가 있지만 미래에 대해. 또 청산종료의 문제, 판단방법-모르겠습니다.

연기는 오늘뿐만 아니라 날짜 이전에 설정할 수 있습니다. 적어도 선물에 대해서는.

 
Aleksandr Slavskii # :

1. 공포! 댓글을 달기에는 잘못된 부분이 너무 많습니다.

다르게 해봅시다.

포지션에 관심이 있는데 왜 거래 내역이 필요합니까?

IMHO, 각 신규 딜에 대한 변수에 마지막 포지션의 가격을 기록하는 것으로 충분하며, 청산이 오면 변수에 기록된 가격과 청산 전 마지막 틱의 가격의 차이에 대해 BU를 조정합니다.

예시:

로트 = 1;

이중 end_position=0;

가격 30의 첫 거래, end_position = 30;

가격 에 두 번째 거래   60, end_position = 45;

가격 에 세 번째 거래   90, end_position = 60;


즉, 거래량이 3이고 가격이 60인 포지션이 있습니다.

가격이 70일 때 청산이 왔다고 가정하고 이익은 30투그릭입니다.

이중 청산 가격 = 70;

청산 후, 당신은 70의 가격으로 포지션을 열겠지만, 우리는 이 포지션의 실제 가격이   end_position == 60; 따라서 이 가격에서 트롤 또는 BU를 계산해야 합니다.

따라서 지우는 동안 변수를 채우십시오.

더블   교정기 = 0 ;

교정자=   clearing_price - end_position;

거래가 각각 +20 포인트일 때 이전 BU가 있다고 가정하고 BU의 시작이 다음과 같은 BU 기능에 추가: 20 - 수정자;

그리고 BU도 플러스만큼 포인트를 넣어주고, 보정값에 맞게 조정도 해야 합니다.

위치 수정기를 닫은 후 = 0 ;


2. 그러나 이것은 청산 후 부분 청산이나 충전이 없는 경우에만 작동합니다. 그렇다면 달라야 합니다.

1. ATP, 그들이 그린 것. 지금은 교정자 없이 보려고 합니다. 왜냐하면 나는 bu +(예: 30pp)로 리필과 트롤을 가지고 있으며, 트롤을 설정한 후에도 로봇의 논리에 따라 부분 폐쇄가 있을 수 있습니다. 저것들. 시작가를 오픈한 후 시작가를 외웠고, 토핑을 한 후 - 평균화 - 다시 집계로 포지션을 오픈한 NEW 가격을 외웠습니다. 그리고 사실, 브로커가 포지션을 개설한 후에 청산하고 새로운 가격을 설정하는 것은 중요하지 않습니다.

위의 거래 논리에 따라 이러한 접근 방식이 발생할 수 있음을 올바르게 이해합니다.

또한 자산의 현재 가격이 허용하는 경우 이전에 기억된 집계 위치 가격에서 SL을 BU + 30pp로 이전합니다.

그리고 중개인이 설정한 선물 포지션을 여는 현재 가격에 누가 신경을 쓰겠습니까?


2.

"그러나 이것은 청산 후 부분 마감이나 충전이 없는 경우에만 작동합니다. 있다면 다르게 해야 합니다."

충전이 있습니다... 전후 모두 - BU + 30 pp로 변환될 때까지 - 모든 주문의 현재 평균 가격을 어레이를 통해 시장 가격으로 고려하는 것이 정말로 가능합니까? 왜냐하면 그것이 필요하기 때문입니다

시장가 주문의 시작 가격과 각 주문에 대한 계약 수 및 거래량 ... 평균 가격을 표시하기 위해 - 어디에서 BU - 카운트로 ...


AVERAGE_PRICE = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3) + n) / (VOL_1 + VOL_2 + VOL_3 + n), 그래서 아직 SL을 BU + 30 pp로 이전하지 않은 것으로 나타났습니다. 집계 위치 전체에서 - 이러한 모든 값을 배열에 써야 합니까? 아니면 무엇입니까? 시장 주문에서 N번째 충전 시작 시 리드 - 모두에 대한 AVERAGE를 계산하기 위해 이 전체 체인을 올려야 합니까?

또는 어떻게 든 다음과 같이 이길 수 있습니다.

 HistoryOrderSelect ()
 HistoryOrderGetTicket ()

그러나 문제가 발생합니다. 실제 총 포지션의 형성에 참여하는 실제 시장 주문 주기의 시작과 끝을 어떻게 잡아야 할까요?

 
Roman Shiredchenko # :

SINGLE_PRICE = ((OPEN_1 * VOLUME_1) +(OPEN_2 * VOLUME_2) +(OPEN_3 * VOLUME_3)+n) / (VOL_1+VOL_2 + VOL_3 + n), 그래서 아직 SL을 BU + 30 pp로 이전하지 않은 것으로 나타났습니다. 집계 위치 전체에서 - 이러한 모든 값을 배열에 써야 합니까? 아니면 무엇입니까? 시장 주문에서 N번째 충전 시작 시 리드 - 모두에 대한 AVERAGE를 계산하기 위해 이 전체 체인을 올려야 합니까?

아아, 맞아.

 

Roman Shiredchenko # :

AVERAGE_PRICE = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3) + n) / (VOL_1 + VOL_2 + VOL_3 + n), 그래서 아직 SL을 BU + 30 pp로 이전하지 않은 것으로 나타났습니다. 집계 위치 전체에서 - 이러한 모든 값을 배열에 써야 합니까? 아니면 무엇입니까? 시장 주문에서 N번째 충전 시작 시 리드 - 모두에 대한 AVERAGE를 계산하기 위해 이 전체 체인을 올려야 합니까?

또는 어떻게 든 다음과 같이 이길 수 있습니다.

그러나 문제가 발생합니다. 실제 총 포지션의 형성에 참여하는 실제 시장 주문 주기의 시작과 끝을 어떻게 잡아야 할까요?

마지막 평균 가격을 저장하는 것으로 충분합니다.

 
JRandomTrader # :

마지막 평균 가격을 저장하는 것으로 충분합니다.

좋습니다. 예를 들어 볼륨을 충전하는 경우 현재 볼륨으로 간주하는 방법은 무엇입니까?
 
Roman Shiredchenko # :
좋습니다. 예를 들어 볼륨을 충전하는 경우 현재 볼륨으로 간주하는 방법은 무엇입니까?

나는 보여 주었다. 우리는 이 마지막 평균 가격과 포지션 거래량, 새로운 거래의 가격과 거래량을 취합니다. 모든 것이 올바르게 계산됩니다.