전문 고문 - 기타 질문 - 페이지 31

 
Max Enrik :


if
(id== CHARTEVENT_OBJECT_CLICK && ( StringFind (sparam,Button_1, 0 )>= 0 || StringFind (sparam,Button_2, 0 )>= 0 ))
  {
   ticketnumber=( int ) StringSubstr (sparam, 1 );

    Print(ticketnumber);

티켓 번호를 인쇄하십시오. 올바른지 확인하십시오.

------

맥스 엔릭 :

if (id== CHARTEVENT_OBJECT_CLICK && ( StringFind (sparam,Button_1, 0 )>= 0 || StringFind (sparam,Button_2, 0 )>= 0 ))
  {
   ticketnumber=( int ) StringSubstr (sparam, 1 );

   if ( OrderSelect (ticketnumber, SELECT_BY_TICKET ))
     {
       if ( StringFind (sparam,Button_1, 0 )>= 0 )
        {
         // ...
        }

       if ( StringFind (sparam,Button_2, 0 )>= 0 )
        {
         //...
        }

       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
         if ( Symbol ()!= OrderSymbol ()) continue ;

         update_1();
         update_2();
         update_3();
        }
     }
    else printf("OrderSelect failed for %i",ticketnumber);  

}

OrderSelect가 작동하는지 확인하십시오 .

------

맥스 엔릭 :
if (id== CHARTEVENT_OBJECT_CLICK && ( StringFind (sparam,Button_1, 0 )>= 0 || StringFind (sparam,Button_2, 0 )>= 0 ))
  {
   ticketnumber=( int ) StringSubstr (sparam, 1 );

   if ( OrderSelect (ticketnumber, SELECT_BY_TICKET ))
     {
       if ( StringFind (sparam,Button_1, 0 )>= 0 )
        {
         // ...
        }

       if ( StringFind (sparam,Button_2, 0 )>= 0 )
        {
         //...
        }

       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
         if ( Symbol ()!= OrderSymbol ()) continue ;

         update_1();
         update_2();
         update_3();

        }
     }
  }

나는 이것을 이해하지 못한다.

이것이 동일한 Symbol로 모든 주문을 통과하고 update_1() update_2() update_3()를 실행한다는 것을 알고 계십니까? 티켓 번호로 찾은 주문뿐만이 아닙니다.

 
honest_knave :

티켓 번호를 인쇄하십시오. 올바른지 확인하십시오.
------
OrderSelect가 작동하는지 확인하십시오.
------
나는 이것을 이해하지 못한다.
이것이 동일한 Symbol로 모든 주문을 통과하고 update_1() update_2() update_3()를 실행한다는 것을 알고 계십니까? 티켓 번호로 찾은 주문뿐만이 아닙니다.

귀하의 즉각적인 의견에 감사드립니다.
귀하의 의견에 따라 다시 한 번 확인했습니다. 좋아 보인다.

#1 - 티켓 번호 - 맞습니다.
#2 - OrderSelect()가 작동합니다.
#3 - 네! 맞습니다. 하지만 사용하지 않으면 update_*()가 작동하지 않습니다.

나는 Drags에 그 방법을 사용하는데, 그 방법은 잘 작동합니다. 그러나 그 방법은 CHARTEVENT_OBJECT_CLICK 에는 적합하지 않습니다. (싱글 오더는 잘 되고 반대 오더 오픈하면 잘 됩니다.)

정말 도움이 필요합니다.

 
원하는 일의 스크린샷을 보여주세요. 문제가 명확하지 않습니다.
 
honest_knave :
원하는 일의 스크린샷을 보여주세요. 문제가 명확하지 않습니다.

스크린샷을 만드는 동안 해결책을 찾았습니다. 와우! (이미 2시간 넘게 썼어요)
그래서 지금까지는 괜찮은 것 같으니 혹시라도 문제가 생기면 더 명확히 댓글을 쓰도록 하겠습니다.

시간 내 줘서 고마워.

(정말 환상적이었어요. )

 
Max Enrik :

스크린샷을 만드는 동안 해결책을 찾았습니다. 와우! (이미 2시간 넘게 썼어요)
그래서 지금까지는 괜찮은 것 같으니 혹시라도 문제가 생기면 더 명확히 댓글을 쓰도록 하겠습니다.

시간 내 줘서 고마워.

(정말 환상적이었어요. )

해결되셨다니 다행입니다
 

#이익통화계산 - 열기

방금 통화로 이익을 계산 하는 방법에 대한 솔루션을 찾기 시작했습니다. 예: 100핍 = 0.89 USD(USDJPY)

Q: 주문 이익(핍)을 주문 이익(통화)으로 어떻게 변환합니까?

(나는 시장이 닫힐 때까지 해결책을 찾을 수 없다는 것에 대해 걱정합니다)

명확한 의견이 있으면 더 좋습니다.

미리 감사드립니다.

//--- 2번째 수정

비슷한 포럼을 많이 찾았지만 이러한 유형의 주제를 찾을 수 없습니다.

 

핍으로 어떻게 이익을 얻습니까?

OrderProfit ()

반환된 값:

선택한 주문 에 대한 순이익(스왑 또는 커미션 제외)입니다.

미결 주문의 경우 현재 미실현 이익입니다.

닫힌 주문의 경우 고정 이익입니다.

 
Marco vd Heijden :

핍으로 어떻게 이익을 얻습니까?

OrderProfit ()

반환된 값:

선택한 주문 에 대한 순이익(스왑 또는 커미션 제외)입니다.

미결 주문의 경우 현재 미실현 이익입니다.

닫힌 주문의 경우 고정 이익입니다.

귀하의 의견에 감사드립니다.

죄송합니다 Marco, 내 문제를 더 명확하게 설명하지 않았습니다.
아래 코드를 사용하여 핍 및 통화로 가치 주문 이익을 쉽게 얻을 수 있습니다.

DoubleToString ( OrderProfit (), 2 )
DoubleToString ( change_to_points( Bid - OrderOpenPrice () ), 0 );

하지만 손절매와 통화 이익 실현에 대한 해결책을 찾으려고 합니다.

작업 중이며 여전히 도움이 필요합니다.

미리 감사드립니다.

 
Max Enrik : ut 손절매와 통화 이익 실현에 대한 솔루션을 찾으려고 합니다.
그 중 하나를 OrderStopLoss 로 대체하십시오.
  • 거래의 이유가 더 이상 유효하지 않은 곳에 중지를 둡니다. 예를 들어 지지 바운스를 거래하면 정지가 지지 아래로 떨어집니다.
  • 계정 잔고 * 퍼센트/100 = 위험 = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (참고 OOP-OSL에는 SPREAD가 포함되고 DeltaPerLot는 일반적으로 약 $10/pip이지만 쌍의 환율을 고려합니다. 대 계정 통화).
  • TickValue 자체를 사용하지 마십시오 - DeltaPerLot
  • 로트를 적절하게 정규화 하고 min 및 max 에 대해 확인해야 합니다.
  • 중단 을 피하기 위해 FreeMargin도 확인해야 합니다.
 
whroeder1 :
그 중 하나를 OrderStopLoss 로 대체하십시오.
  • 거래의 이유가 더 이상 유효하지 않은 곳에 중지를 둡니다. 예를 들어 지지 바운스를 거래하면 정지가 지지 아래로 떨어집니다.
  • 계정 잔고 * 퍼센트/100 = 위험 = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (참고 OOP-OSL에는 SPREAD가 포함되고 DeltaPerLot는 일반적으로 약 $10/pip이지만 쌍의 환율을 고려합니다. 대 계정 통화).
  • TickValue 자체를 사용하지 마십시오 - DeltaPerLot
  • 로트를 적절하게 정규화 하고 min 및 max 에 대해 확인해야 합니다.
  • 중단 을 피하기 위해 FreeMargin도 확인해야 합니다.

더 유익한 의견을 보내주셔서 감사합니다.
나는 그것을 연구하고 있습니다 ...

//--- 2번째 수정

코드 지식이 부족해서 계산 방법을 이해할 수 있는 권한이 없을 수도 있습니다.
그러나 나는 해결책에 가깝다고 생각합니다. 그리고 나는 (구매 주문의 경우) 손절매를 통화로 얻는 코드를 아래에서 시도합니다.
그런 다음 나는 이 결과를 얻습니다. (나는 무언가를 통과했다는 것을 압니다... 왜냐하면 그것을 암시할 수 없기 때문입니다... ) 예: 이익: 7.67 USD - 핍: 1001 / USDCAD의 경우. 그러나 실제로 이익: 7.69 USD. ( 나는 이미 체크 아웃했다 ( 스왑 및 커미션 ) )

double   tickvalue               = MarketInfo ( Symbol (), MODE_TICKVALUE ) / MarketInfo ( Symbol (), MODE_TICKSIZE ),
        buy_stoploss_incurrency = OrderOpenPrice () - OrderStopLoss ();
string   stoploss_incurrency     = DoubleToString ( OrderLots () * buy_stoploss_incurrency * tickvalue + OrderCommission (), 2 );

Print ( "stop loss in currency: " , stoploss_incurrency );

그래서 조언이 필요합니다.

미리 감사드립니다.

//--- 3번째 수정

코더 또는 프로그래머가 위의 코드가 맞는지 알려주십시오. 이제 GBPCHF에 대해서는 올바른 손절매를 통화로 볼 수 있지만 USDCAD에는 올바르지 않기 때문입니다. 뭐가 잘못됐는지 모르겠어?! (참고: USDCAD 오픈 포지션, 그러나 GBPCHF는 보류 중인 주문입니다. )

지금은 모든 것이 정상입니다. 그래서, Mr. William에게 감사합니다.