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

 
이것은 황금입니다. 작업 시간을 절약했습니다. 우다맨!
 

즐기십시오...그러나 자신의 코드를 작성하여 코드가 어떻게 작동하는지 정확히 아는 데서 오는 자신감을 빼앗지 마십시오. 기존 코드를 사용하는 것은 "부트스트랩으로 자신을 끌어올리는" 방식으로 지식을 향상시키는 좋은 방법입니다. 초기에 예제로 사용할 코드가 없었다면 저는 여기 없었을 것입니다. 확실하고 강제로 낚시를 배우십시오. 당신이 하는 모든 일에는 가치가 있습니다.

 

@필립

이것에 대해 어떻게 생각하십니까?:

tradeVolume = AccountFreeMargin() * 위험/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );

if(tradeVolume<MarketInfo(Symbol(),MODE_MINLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MINLOT);

if(tradeVolume>MarketInfo(Symbol(),MODE_MAXLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MAXLOT);

res=OrderSend(Symbol(),OP_BUY,tradeVolume,Ask,3,Ask - 0.2,Ask + 0.4,"",MAGICID,0,Red);

 
Ricotter :

tradeVolume = AccountFreeMargin() * 위험/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );


계산을 확인하기 위해 개인적으로 테스트하지 않고 계산이 정확하다고 가정하면 카운터 통화가 계정의 액면가이기도 한 통화 쌍 에만 적용한다면 정확해 보입니다.

예를 들어 귀하의 계정이 USD 기반인 경우 USD를 카운터로 사용하는 통화 쌍(EURUSD, GBPUSD 등)에만 해당 거래량 계산 방법을 적용하려고 합니다.

내 코드에서 이 통화 쌍 유형은 "유형 2"로 지정됩니다.

계정의 액면가를 기준으로 하는 기호에 적용하면 계산에 오류가 발생합니다(예: 계정이 USD 기반인 경우 USDJPY). 그리고 마찬가지로 어떤 십자가에 적용된다면 오류가 날 것입니다.

"통화 기호 분석"에 있는 해당 SymboType() 호출 기능을 자세히 살펴보십시오. 내 다른 게시물에 있는 주석 헤더 섹션은 다양한 기호 유형에 대한 기초와 위험에 처한 자산과 거래량(lotsize)을 계산해야 하는 이유를 설명합니다. 기호 유형에 따라 다릅니다.

그러나 귀하의 계획이 EURUSD 및 GBPUSD 유형 쌍을 거래하는 것이라면 귀하의 코드는 괜찮아 보입니다!
 

다시 한 번 Phillip... "코드에 JPY 쌍에 문제가 있는 것 같습니다. 이 문제가 해결되었습니까?"라는 이전 게시물 중 하나를 기억할 수 있습니다. 글쎄, 나는 그 문제가 나에게 다시 일어났을 수도 있다고 생각한다. 귀하의 루틴을 EA에 올바르게 추가했으며(확실합니다) MaxPercentEquityAtRisk= 1.0(1%)으로 설정했습니다. 내 데모 계정 의 자산은 약 US$2300이므로 주어진 거래에서 약 $23의 위험을 감수할 용의가 있습니다. 내 EA는 동일한 크기의 손절매와 이익 목표를 사용합니다. 따라서 거래에서 23달러의 위험을 감수한다면 23달러의 이익을 노리고 있습니다. 어쨌든, 내 EA는 지난 밤에 2개의 거래를 생성했습니다.

(1) EUR/JPY, 9.8핍 손절매 및 9.8핍 이익 목표를 매수합니다. 귀하의 루틴은 0.80랏(너무 큼)의 로트 크기를 계산했으며 거래 결과 $96.91의 10핍 이익이 발생했습니다.

(2) NZDJPY 매수, 손절매 16.3핍, 이익 목표 16.3핍. 귀하의 루틴은 0.28랏의 로트 크기를 계산했으며 거래는 -$56.56의 손실을 입었습니다.


내가 보기에 이 두 거래는 2300달러의 자산 중 1%만을 위험에 빠뜨리고 있다는 점을 감안할 때 대략 23달러의 승리 또는 23달러의 손실을 입어야 하는 것 같습니다.


감사해요!

 

이것은 Phillp에 도움이 될 수 있습니다. 위에서 언급한 두 주문에 대한 로트 크기를 계산한 직후 코드의 인쇄 명령문 로그가 있습니다.


05:14:56 EURJPY,H1: 매수 - EURJPY 최대 EquityAtRisk = $21.99 및 최대 랏수 = 0.8085
05:14:56 EURJPY,H1: 매수 - EURJPY 현재 EquityAtRisk = $21.76 및 현재 Lotsize = 0.8
05:14:56 EURJPY,H1: 매수 - EURJPY MarketInfo(MODE_STOPLEVEL) = 30.00000
05:14:56 LibOrderReliable EURJPY,H1: 성공적으로 로드됨
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1:
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: • • • • •
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: 매수 정지 시도 0.80000000 랏 @114.78700000 sl:114.68900000 tp:114.885000



09:02:36 NZDJPY,H1: BUY - NZDJPY 최대 EquityAtRisk = $23.29 및 최대 랏수 = 0.2814
09:02:36 NZDJPY,H1: 매수 - NZDJPY 현재 EquityAtRisk = $23.18 및 현재 Lotsize = 0.28
09:02:36 NZDJPY,H1: 매수 - NZDJPY MarketInfo(MODE_STOPLEVEL) = 70.00000
09:02:36 LibOrderReliable NZDJPY,H1: 성공적으로 로드됨
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: • • • • •
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: 매수 정지 시도 0.28000000 랏 @64.29700000 sl:64.13400000 tp:64.4600000
09:02:37 LibOrderReliable NZDJPY,H1: 오픈 #155492665 매수 스톱 0.28 NZDJPY at 64.297 sl: 64.134 tp: 64.460 ok
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: 티켓 #155492665: 성공적인 BUY STOP 주문 이 완료되었습니다. 자세한 내용은 다음과 같습니다.
09:02:37 LibOrderReliable NZDJPY,H1: #155492665 2010.11.04 13:02 매수 스톱 0.28 NZDJPY 64.297 7JP0 64.460 64.134 64.460 64.197 .003
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: • • • • •

09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:


... Max EquityAtRisk 수치를 잘 계산하고 있는 것 같습니다... 그러나 이러한 로트 크기로 인해 원하는 자본의 1%보다 훨씬 더 큰 이익/손실이 발생합니다.


감사해요

 

당신의 브로커는 무엇입니까?

FXDD에서 해당 지정가 주문을 입력하면 EURJPY(@25.66 EAR)에 대해 0.15의 lotsize를 얻습니다.

2010.11.04 16:05:39 Assisted_Order_Script_2010.11.01 EURJPY,Daily: open #95896902 buy stop 0.15 EURJPY at 114.827 sl: 114.689 tp: 5ok114.8
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,매일: OP_BUYSTOP 0.15000000 랏 @114.82700000 sl:114.689000010.809000010.809000010.809000010.tp:OP_BUYSTOP 시도
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Daily: Current EquityAtRisk = $25.66 and Current Lotsize = 0.15 and Profit Target = $10.78 for the 0.4:1 Profit:Los ratio
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Daily: 최대 허용 EquityAtRisk = $25.84 및 최대 계산 Lotsize = 0.1511
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY, 일일 입력: Order_Type="BUY STOP"; 공개입찰가=114.787; StopLossBidPrice=114.689; TakeProfitBidPrice=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=거짓;

IBFX에서 $26.77의 EaR과 함께 0.16의 lotsize를 얻습니다(계정의 더 큰 시작 자본)

2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: 오픈 #94468219 매수 스톱 0.16 EURJPY at 114.824 sl: 114.689 tp: 5ok114.8
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: 시도 OP_BUYSTOP 0.16000000 랏 @114.82400000 sl:114.689000000.809000000.8089000000.tp:
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: Current EquityAtRisk = $26.77 및 Current Lotsize = 0.16 및 Profit Target = $12.10(0.5:1 이익:손실 비율)
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4: 허용되는 최대 EquityAtRisk = $27.19 및 최대 계산된 Lotsize = 0.1625
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4 입력: Order_Type="BUY STOP"; 공개입찰가=114.787; StopLossBidPrice=114.689; TakeProfitBidPrice=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=거짓;

NZDJPY를 사용하면 IBFX에서 0.09랏의 lotsize와 24.53의 EAR을 얻습니다.

2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: 오픈 #94468343 매수 스톱 0.09 NZDJPY at 64.354 sl: 64.134 tp: 64.
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: 시도된 OP_BUYSTOP 0.09000000 랏 @64.35400000 sl:64.134000000.0600000 tp:
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: 현재 EquityAtRisk = $24.53 및 현재 Lotsize = 0.09 및 이익 목표 = $11.82(0.5:1 손실 비율의 경우)
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: 허용되는 최대 EquityAtRisk = $27.19 및 최대 계산된 랏 크기 = 0.0998
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4 입력: Order_Type="BUY STOP"; 공개입찰가=64.297; StopLossBidPrice=64.134; TakeProfitBidPrice=64.46; MaxPercentEquityAtRisk=0.5; MinLotOverRide=거짓;

호환성을 테스트하는 9개의 브로커가 있으며 이 코드는 Alpari(US), CitiFXPro, CMS, Forex.com(Gain Capital), FXCM, FXDD, IBFX, MIG Bank 및 ODL에서 작동하는 것으로 알려져 있습니다.

이 브로커는 충분히 다르기 때문에 지금까지 코드가 이 브로커에 걸쳐 있는 브로커 시장 매개변수의 차이를 능숙하게 처리하는 데 기반한 브로커 불가지론적 코드라는 점에 만족했습니다.

그러나 코드 구현이 손상되지 않았다고 가정하므로 먼저 제거해 보겠습니다. 첨부된 스크립트를 시도하고 EURJPY에 드래그 앤 드롭하고 위에서 했던 것처럼 구매 중지에 대한 매개변수를 입력하고 결과를 알려주세요. (분명히 데모 계정 에서만 사용)

 

감사합니다 Phillip... 저는 Alpari UK 데모, 계정 자산 US$2272.85를 사용하고 있습니다. 알겠습니다. EURJPY 시간별 차트에 스크립트를 추가했습니다(EA에서 사용하는 것처럼). 아무 것도 하지 않았거나 보류 중인 주문을 하지 않았기 때문에 "전문가" 탭에 오류 메시지가 있는지 확인했습니다... 다음과 같이 표시됩니다.


2010.11.04 20:39:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: 제거됨
2010.11.04 20:38:38 Assisted_Order_Script_2010.11.01 EURJPY,H1: 성공적으로 로드됨
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: 제거됨
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: 단위 이유 0
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: 0분할
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1: 허용되는 최대 EquityAtRisk = $22.73 및 최대 계산된 Lotsize = 0
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1 입력: Order_Type="BUY"; 공개입찰가=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=거짓;


감사해요!


 

참고: 저는 지금 스크립트를 다시 시도했습니다. Phillip, 같은 숫자이지만 MinLotOverride를 true로 설정했습니다. 즉시 MARKET 주문을 시작했습니다(내 구매 가격이 115.827이고 시장이 114.945에 불과했음에도 불구하고. Lotsize = 0.01이고 손절매 또는 이익 없음) 목표 주문 - 둘 다 0.0000

감사해요

 

확인을 위해 귀하의 계정 금액은 USD입니다. 맞습니까?

지금 Alpari UK를 다운로드하여 확인하고 있습니다.

매수 정지 대신 시장으로 주문을 여는 것은 주문을 신뢰할 수 있는 루틴에 의해 완전히 제어됩니다...매우 이상합니다. 그때도 조사를 해야 한다.

내 주의를 끄는 한 가지는 다음 알림입니다.
" 데모 계정 의 레버리지는 최대 레버리지 1:500으로 자동 설정됩니다."

레버리지가 lotsize 계산에 영향을 미쳐야 한다는 것이 아니라 freemargin 계산 IIRC에만 영향을 미쳐야 합니다.

편집: 신경 쓰지 마세요. 플랫폼이 실제로 기본값으로 설정되어 있지 않다는 것을 알 수 있습니다. 최대 레버리지가 1:100입니다.