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

 
Rossi :

화면 하단의 탭에서 도구를 정렬하는 방법이 있습니까? 그렇지 않으면 4개의 시간대에 있는 8개의 악기가 무질서하게 흩어집니다....

아니요
 
DDFedor :

차트 이름이 있는 탭을 클릭하고 원하는 위치로 끕니다.

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 좋은 답변 감사합니다 ...
 
artmedia70 :
:) 이제 오류 130이 나타났습니다. 가장 이해할 수 없는 것은 잘못된 정류장(130)으로 여전히 정확한 테이크를 설정하고(ATR로 계산) 내 정류장이 처음에 설정되지 않았다는 것입니다...
이것은 어떻게 든 이해할 수 있습니까?
오류 130 - 잘못된 손절매 또는 잘못된 이익실현일 수 있습니다.
 
ToLik_SRGV :


지정가 주문 추가(이전 코드에서 잊어버렸습니다 :)) + 오류 처리 #1(수정하기 전에 새 가격이 현재 가격과 비교되고 동일하면 아무 것도 하지 않음):

트레일러에 의해 시장에 더 가깝게 옮겨진 수정된 주문은 TakeProfit 상속을 상실하는 것 같습니다... 일단 발동되면, 그들은 포지션과 함께 차트에 매달리고 어리석게도 마진을 먹어치웁니다. 플러스나 마이너스로 닫히지 않고 테이크 라인도 없습니다... 확인을 위해 특별히 ATR에서 계산한 tp 값을 코드에 추가했습니다.

 void trailingOrder( int magic, int trailing){
   int index = 0 , tp=TakeProfitATR ( 5 );
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
       if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUYSTOP){
             if (OrderOpenPrice() - Ask > Point *trailing){
               if ((Ask+ Point *trailing) - Ask >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Ask+ Point *trailing) - Ask > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask+ Point *trailing) != OrderOpenPrice()){
                   if (!OrderModify(OrderTicket(),Ask+ Point *trailing,OrderStopLoss(),
                   /*OrderTakeProfit()*/ tp , 0 , MediumSpringGreen )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                   Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
             return ;
         }
// ..... Далее по тексту функции также добавлены изменения...

변경 전후에 수정된 순서는 위치로 변환되기 전이나 후에 여전히 테이크가 없습니다...

이유는 무엇입니까?

 
artmedia70 :

트레일러에 의해 시장에 더 가깝게 옮겨진 수정된 주문은 TakeProfit 상속을 상실하는 것 같습니다... 일단 발동되면, 그들은 포지션과 함께 차트에 매달리고 어리석게도 마진을 먹어치웁니다. 플러스나 마이너스로 닫히지 않고 테이크 라인도 없습니다... 확인을 위해 특별히 ATR에서 계산한 tp 값을 코드에 추가했습니다.

변경 전후에 수정된 순서는 위치로 변환되기 전이나 후에 여전히 테이크가 없습니다...

이유는 무엇입니까?

보류 중인 주문 의 가격을 수정할 때 손절매도 수정하고 이익을 취해야 합니다.
 
khorosh :
오류 130 - 잘못된 손절매 또는 잘못된 이익실현일 수 있습니다.
고맙습니다. 나는 이미 알고 있었다... 그게 요점이 아니었다. 트롤에서 오류가 발생했습니다. 전원을 끄면 모든 것이 정상입니다. 그를 다룰 시간이 없습니다.
 
khorosh :
보류 중인 주문의 가격을 수정할 때 손절매도 수정하고 이익을 취해야 합니다.

ATR은 계산 기능을 어떻게 수행합니까? 주문을 수정하기 전에 호출하고 TakeProfitATR() 함수에 의해 계산된 현재 가져오기 값을 가져와 주문 수정에 삽입합니다... 위의 예에서도 마찬가지입니다.

 int index = 0 , tp=TakeProfitATR ( 5 ); // Рассчёт нового тейка по значению ATR. Ф-ция возвращает размер тейка в пунктах

....

 if (!OrderModify(OrderTicket(),Ask+ Point *trailing,OrderStopLoss(),
   /*OrderTakeProfit()*/ tp , 0 , MediumSpringGreen )) Print ( ">>> ERROR " , GetLastError ()); // здесь вместо OrderTakeProfit() подставляю tp
쓰다보니 에러가 나는것 같네요... ATR로 테이크를 계산하는 함수는 TakeProfit의 값을 포인트로 돌려주는데 가격을 대입해야 합니다.
그러나 위의 변경을 수행하기 전에 수정된 주문이 어쨌든 테이크를 잃어버린 이유는 명확하지 않습니다. 비록 OrderTakeProfit()이 수정된 주문에 테이크 값을 기록해야 하지만...
그리고 다시 질문 - 예를 들어, 만약 시장이 그것에서 멀리 떨어져 있고 반전이나 수정을 위한 준비... ???
 
artmedia70 :

ATR은 계산 기능을 어떻게 수행합니까? 주문을 수정하기 전에 호출하고 TakeProfitATR() 함수에 의해 계산된 현재 가져오기 값을 가져와 주문 수정에 삽입합니다... 위의 예에서도 마찬가지입니다.

....

쓰다보니 에러가 나는것 같네요... ATR로 테이크를 계산하는 함수는 TakeProfit의 값을 포인트로 돌려주는데 가격을 대입해야 합니다.
그러나 위의 변경을 수행하기 전에 수정된 주문이 어쨌든 테이크를 잃어버린 이유는 명확하지 않습니다. 비록 OrderTakeProfit()이 수정된 주문에 테이크 값을 기록해야 하지만...
그리고 다시 질문 - 예를 들어, 만약 시장이 그것에서 멀리 떨어져 있고 반전이나 수정을 위한 준비... ???




나는 정류장의 자동 전송을 추가하고 방법에 걸립니다. 지연을 설정할 때 제한자를 한 번 설정하면 방법 자체가 필요한 모든 것을 끌어옵니다. :))

 //+------------------------------------------------------------------+
void trailingOrder( int magic, int trailing){
   int index = 0 ;
   double takeprofit, stoploss;
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
      if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUYSTOP){
            if (OrderOpenPrice() - Ask > Point *trailing){
               if ((Ask+ Point *trailing) - Ask >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Ask+ Point *trailing) - Ask > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask+ Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Ask+ Point *trailing, Ask+ Point *trailing-(OrderOpenPrice()-OrderStopLoss()), Ask+ Point *trailing+(OrderTakeProfit()-OrderOpenPrice()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_SELLSTOP){
            if (Bid - OrderOpenPrice() > Point *trailing){
               if (Bid - (Bid- Point *trailing) >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 Bid - (Bid- Point *trailing) > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Bid- Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Bid- Point *trailing,Bid- Point *trailing+(OrderStopLoss()-OrderOpenPrice()),Bid- Point *trailing-(OrderOpenPrice()-OrderTakeProfit()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_SELLLIMIT){
            if (OrderOpenPrice() - Bid > Point *trailing){
               if ((Bid+ Point *trailing) - Bid >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Bid+ Point *trailing) - Bid > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Bid+ Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Bid+ Point *trailing,Bid+ Point *trailing+(OrderStopLoss()-OrderOpenPrice()),Bid+ Point *trailing-(OrderOpenPrice()-OrderTakeProfit()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_BUYLIMIT){
            if (Ask - OrderOpenPrice() > Point *trailing){
               if (Ask - (Ask- Point *trailing) >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 Ask - (Ask- Point *trailing) > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask- Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Ask- Point *trailing,Ask- Point *trailing-(OrderOpenPrice()-OrderStopLoss()),Ask- Point *trailing+(OrderTakeProfit()-OrderOpenPrice()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
 
ToLik_SRGV :


나는 정류장의 자동 전송을 추가하고 방법에 걸립니다. 지연을 설정할 때 제한자를 한 번 설정하면 방법 자체가 필요한 모든 것을 끌어옵니다. :))

오, 매우 유용합니다! 그러나 최적은 아닙니다. 테이크에서 역동적인 변화를 만드는 것이 필요할 것입니다. 결국, 왜 우리는 주문을 시장 뒤로 미루고 있습니까? 지연을 설정하고 가격이 사라진다면 - 예를 들어 수정... 우리는 무엇을 할까요? 가격이 돌아올 때까지 기다리십니까? 아니면 주문을 삭제하시겠습니까? 이렇게 하는게 좋지않을까...

시장의 변동성은 낮지만 꾸준한 상승세를 보이는 상황을 상상해 봅시다. 가격은 보류 중인 SELLSTOP 주문에서 서서히 멀어졌습니다. 열린 BUY 포지션은 자체적으로 해결되어 이익으로 마감되었습니다. 우리는 시장 변동성의 증가를 기다리고 있으며, 우리가 설정한 임계값을 초과하는 즉시 제한 한도를 가격으로 이동합니다. 따라서 우리는 시작된 조정을 포착하고 리밋 트레이더는 잠금 위치가 아니라 추가 수입원으로 작동합니다. 우리가 그것을 움직이지 않았다면 수정이 도달하고 만지고 끝났을 것입니다. 여기서 우리는 상승 추세에 있는 손실 매도 위치를 갖게 될 것입니다...

트렌드에 맞는 사파리 여행 ...

동적 테이크가 있는 경우 보류 중인 테이크를 시장으로 이동하고 강한 변동성을 고려하여 테이크를 변경하면(여기서는 약한 테이크보다 높음) 정적 테이크보다 수정에서 더 많은 것을 제거할 가능성이 높습니다. 어쨌든 우리가 테이크를 닫지 않으면 흔적이 제 역할을 하고 손실된 이익만 잃을 것입니다...

휴... 너무 오랜만에 클레이브를 클릭...

제안이 들어오는 곳입니다. 함수의 전달된 매개변수에서 TimeFrame을 만드십시오. 이를 기반으로 ATR 값에서 테이크를 계산합니다.

나는 얼마 동안 실험했고 M5 TF에 대한 연구 결과 ATR로 계산할 때 최적의 테이크 값이 ATR * 45000 공식을 사용하여 계산된다는 결론을 얻었습니다. 이러한 가치로 시장은 거의 항상 "캐치"하는 데 시간이 걸립니다.

 //+------------------------------------------------------------------+
//|                  Take from ATR                                   |
//+------------------------------------------------------------------+
double TakeProfitATR ( int tf)
  {
   double    atr   = iATR ( NULL ,tf, 14 , 0 );
   double    mltp  = 15000 ;
   if (tf== 1 ) mltp= 15000 ;
   if (tf== 5 ) mltp= 45000 ;
   double    tp    = MathRound (atr*mltp);
   return   (tp);
  }

물론 아직 기능이 완성되지는 않았지만 (M5를 테스트하는 동안) 테스트 하기에는 충분합니다... 그런데 입력값 = 1로 딜레이를 설정하기에 좋은 거리를 제공합니다.

당신의 기능에서 이것을 보는 것이 좋을 것입니다 ... :)

그러나 어쨌든 감사합니다. 위의 내용을 얻기 위해 개선 사항을 고려하면 저에게 아주 잘 맞습니다.
추신 ... 수정 아이콘에 색상을 추가하면 좋을 것입니다 ... (이미 추가했지만) ...

 

여기서 다음과 같은 질문이 제기되었습니다. DC는 많은 수의 트랜잭션 과 어떤 관련이 있습니까? 내 고문은 29분마다 포지션을 엽니다(5가지 전략 중 하나만). 모두가 TakeProfit에서 거래를 마감하지만, 자산이 5% 증가하면 모두 군중 속에서 마감됩니다. 어느 쪽이 이익을 내고 어느 쪽이 큰사슴이 있는지는 중요하지 않습니다. 중요한 것은 약 3~5일에 한 번씩 잔액이 5%씩 증가한다는 것입니다.

DC가 그러한 거래에 대한 청구권을 가질 수 있는지 궁금합니다.