자동 로트 크기 계산 기능? - 페이지 5

 

안녕하세요 Phillip, Shawn이 다시 왔습니다. 나는 우리가 지난 시간에 논의한 사소한 변경을 했고(그러나 나는 여전히 최신 버전을 구현하지 않았습니다) JPY 쌍의 lotsizes에 대한 문제가 여전히 발생하고 있습니다. 어젯밤에 EA를 실행하고 3번의 거래를 생성했습니다(내 계정 잔고 는 US$2550, 위험은 1%이므로 거래당 약 $25 위험):


(1) NZDJPY, 0.89랏 매도

(2) AUDJPY, 0.23랏 판매

(3) CADJPY, 0.94랏 판매


AUDJPY 거래의 lotsize는 괜찮아 보이지만 다른 두 개는 그렇지 않습니다. 나는 당신의 물건에 대한 호출 주위에 몇 가지 Print 문을 포함시켰습니다. 먼저 이 부분에 대한 내 EA 코드는 다음과 같습니다.


 if (Bid > SellPrice && SellPrice != 0.00 )
         {       
          CurrentOrderType=OP_SELL;
          CurrentStopLossPrice= FinalSellStopPrice;
          CurrentEquityAtRisk=(MaxPercentEquityAtRisk/ 100.0 )*AccountBalance();
          CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);
           Print ( "SELL - " , Symbol (), "AccountBalance = " , DoubleToStr(AccountBalance(), 2 ), " Max EquityAtRisk = $" ,DoubleToStr(CurrentEquityAtRisk, 2 ), " and Max Lotsize = " ,DoubleToStr(CurrentLotSize, 4 ));
          CurrentLotSize=NormalizeLotSize(CurrentLotSize);
           Print ( "SELL - " , Symbol (), "Normalized LotSize is now = " , DoubleToStr(CurrentLotSize, 4 ));
           if (CurrentLotSize<MarketInfo( Symbol (),MODE_MINLOT)) CurrentLotSize=MarketInfo( Symbol (),MODE_MINLOT);
           if (CurrentLotSize>MarketInfo( Symbol (),MODE_MAXLOT)) CurrentLotSize=MarketInfo( Symbol (),MODE_MAXLOT);
          CurrentEquityAtRisk=EquityAtRisk(CurrentLotSize,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);
           Print ( "SELL - " , Symbol (), "Current EquityAtRisk = $" ,DoubleToStr(CurrentEquityAtRisk, 2 ), " and Current Lotsize = " ,DoubleToStr(CurrentLotSize, 4 ));
           Print ( "SELL - " , Symbol (), " MarketInfo(MODE_STOPLEVEL) = " ,DoubleToStr(MarketInfo( Symbol (),MODE_STOPLEVEL), 5 ));
          
           //Check free margin
           if (AccountFreeMargin() < ( 1000 * CurrentLotSize)) 
          {
             Print ( "We have no money. Free Margin = " , AccountFreeMargin());
             return ( 0 );
          }
         
          Ticket=OrderSendReliable2Step( Symbol (),OP_SELLSTOP,CurrentLotSize,FinalSellPrice,Slippage,CurrentStopLossPrice,FinalSellProfTarg, Symbol ()+DoubleToStr(MagicNumber, 0 ),MagicNumber, 0 , Red );
           if (Ticket<= 0 ) Print ( "Error = " , GetLastError ());
           else 
          { 


위의 3가지 거래 각각에 대해 로그에서 가져온 Print 문의 결과는 다음과 같습니다.


05:16:10 DelphiEA NZDJPY,H1: 매도 - NZDJPYAccountBalance = 2550.90 Max EquityAtRisk = $25.51 및 Max Lotsize = 0.8988
05:16:10 DelphiEA NZDJPY,H1: 매도 - NZDJPY정규화된 LotSize는 현재 = 0.8900입니다.
05:16:10 DelphiEA NZDJPY,H1: 매도 - NZDJPY현재 자본 위험 = $25.26 및 현재 랏 사이즈 = 0.8900
05:16:10 델파이 NZDJPY,H1: 매도 - NZDJPY MarketInfo(MODE_STOPLEVEL) = 70.00000


05:16:56 DelphiEA AUDJPY,H1: SELL - AUDJPYAccountBalance = 2550.90 Max EquityAtRisk = $25.51 및 Max Lotsize = 0.2376
05:16:56 DelphiEA AUDJPY,H1: SELL - AUDJPY정규화된 LotSize는 이제 = 0.2300입니다.
05:16:56 DelphiEA AUDJPY,H1: SELL - AUDJPY현재 EquityAtRisk = $24.69 및 현재 Lotsize = 0.2300
05:16:56 DelphiEA AUDJPY,H1: 매도 - AUDJPY MarketInfo(MODE_STOPLEVEL) = 50.00000


07:13:53 DelphiEA CADJPY,H1: 매도 - CADJPYAccountBalance = 2550.90 최대 EquityAtRisk = $25.51 및 최대 랏 크기 = 0.9408
07:13:53 DelphiEA CADJPY,H1: 판매 - CADJPY정규화된 LotSize는 현재 = 0.9400입니다.
07:13:53 DelphiEA CADJPY,H1: 매도 - CADJPYCurrent EquityAtRisk = $25.49 및 Current Lotsize = 0.9400

07:13:53 DelphiEA CADJPY,H1: 매도 - CADJPY MarketInfo(MODE_STOPLEVEL) = 60.00000


도움이 되었기를 바랍니다!!

오, Phillip, 한 가지 더 - OrderSendReliable2Step에서 작은 버그를 찾은 것 같습니다. 누구에게 보고해야 하는지 알 수 있습니까?


감사해요!

 
Ricotter :

이 사람은 파일 기록을 사용하여 수행합니다.

https://www.mql5.com/en/articles/1493

당신은 여기 새로 왔기 때문에 MT5 테스터에는 이 제한이 존재하지 않는다는 점을 언급할 가치가 있습니다. 참고로

 
gordon :

당신은 여기 새로 왔기 때문에 MT5 테스터에는 이 제한이 존재하지 않는다는 점을 언급할 가치가 있습니다. 참고로

팁 고마워. MT5를 사용하지 말아야 할 이유가 있습니까?

 
Ricotter :

팁 고마워. MT5를 사용하지 말아야 할 이유가 있습니까?

라이브를 즉시 거래하고 싶다면 MT4를 고수하는 것이 낫지만 라이브를 시작하기 몇 달 전에 데모를 배우고 수행할 계획이라면 고려해 볼 수 있습니다. MT4보다 많은 개선 사항이 있는 새로운 플랫폼이지만 훨씬 더 복잡하고 여전히 많은 브로커에서 지원하지 않습니다. 여기에 좋은 정보가 있습니다 -> http://www.100forexbrokers.com/mt5-metatrader5 . 또한 MQL5.com 을 확인하고 싶을 수도 있습니다.
 
shawnh :

안녕하세요 Phillip, Shawn이 다시 왔습니다. 나는 우리가 지난 시간에 논의한 사소한 변경을 했고(그러나 나는 여전히 최신 버전을 구현하지 않았습니다) JPY 쌍의 lotsizes에 대한 문제가 여전히 발생하고 있습니다.

코드에서 모든 것이 "확인"되었지만 여전히 왜 이런 일이 발생하는지 모릅니다.

최신 코드로 변경하는 것이 좋습니다. 지금 가지고 있는 것이 제대로 작동하지 않기 때문에 이 시점에서 무언가를 변경해야 합니다.

orderlib 문제와 관련하여 누구에게 버그를 보고해야 하는지 모르겠습니다. 죄송합니다.
 
1005phillip :

1단계: 이 게시물의 모든 첨부 파일을 포함 경로(...\experts\include\*.mqh)에 넣습니다.

2단계: 첨부 파일에 포함된 호출 기능에 액세스할 수 있도록 EA 상단에 다음을 추가합니다.

3단계: 계획된 위험 자본 금액을 기반으로 로트 크기를 계산하려면 다음을 추가합니다.

EA의 어딘가에 MaxPercentEquityAtRisk를 최대 허용 자산으로 정의하여 중지가 발생한 경우 거래당 완전한 손실 위험에 처할 수 있다고 가정하면 코드의 이 부분은 먼저 오픈 가격 및 중지 손실 가격(핍이 아님)을 기반으로 최대 로트 크기를 결정합니다. 그러나 실제 시장 가격, 주문 시 브로커에게 보내는 것과 동일) 그러면 브로커가 예산 위험 자산을 초과하지 않으면서 수락할 최대 포지션 크기가 결정됩니다.

4단계: 계산 결과를 로그에 인쇄하거나 주문 주석으로 거래에 추가하려면 다음을 추가할 수도 있습니다.

5단계: 주문하기(ordersendreliable 방법 사용)

https://c.mql5.com/mql4/forum/2010/10/OrderReliable_2010.10.12.mqh


안녕하세요 1005필립입니다.


아래의 수입품이 없는 2mqh(분석... 및 tradepositionmanage...) 버전이 있습니까? 이는 둘 다 가져오기가 있으므로 컴파일러에서 허용하지 않기 때문입니다.

//#포함 <stderror.mqh>
//#포함 <stdlib.mqh>


... 파일을 편집하지 않고 읽기 전용 상태로 유지합니다. 아니면 편집하고 가져오기를 제거할 수 있습니까?

 
jcadong5 :

... 파일을 편집하지 않고 읽기 전용 상태로 유지합니다. 아니면 편집하고 가져오기를 제거할 수 있습니까?


원하는 대로 편집하십시오. 이중성은 나를 위해 컴파일을 방해하지 않습니다. 컴파일러는 이중성에 관한 메모를 기록하지만 그게 전부입니다.
 
감사해요.
 
1005phillip :
코드에서 모든 것이 "확인"되었지만 여전히 왜 이런 일이 발생하는지 모릅니다.

최신 코드로 변경하는 것이 좋습니다. 지금 가지고 있는 것이 제대로 작동하지 않기 때문에 이 시점에서 무언가를 변경해야 합니다.

orderlib 문제와 관련하여 누구에게 버그를 보고해야 하는지 모르겠습니다. 죄송합니다.


안녕 필립, 숀 또 왔어. 몇 주 전에 최신 버전을 설치한 후 이제 모든 것이 제대로 표시되고 계산된 로트 크기가 크게 나타납니다. 최신 버전이 필요했던 것 같아요!


모든 도움에 다시 한 번 감사드립니다. 당신은 좋은 사람입니다!


건배


 

천만에요! 효과가 있음을 알려주셔서 감사합니다. 피드백에 감사드립니다. 이전 코드에서 무엇이 잘못되었는지 확실하지 않습니다. 수정 사이에 내가 무의식적으로 수정한 일종의 버그일 수 있습니다.

나는 아마도 MT4에서 교차 통화 쌍 에 대한 백테스팅과 함께 사용할 몇 가지 대체 기능이 있는 업데이트된 버전을 1-2주 안에 갖게 될 것입니다. 지금 당장 내 로트 크기 코드를 사용하는 동안 교차 쌍을 시도하고 백테스트하면 백테스터가 필요한 카운터 및 기본 쌍의 시장 가격에 액세스할 수 없기 때문에 백테스트가 폭파됩니다. (이것은 라이브 또는 포워드 테스트의 문제가 아니며 순전히 MT4의 백테스터 제한 사항입니다)

당신이나 다른 사람들이 도움이 된다고 생각하는 다리를 건너면 코드를 게시하겠습니다.

주말 잘 보내세요,
- 필