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

 

아, 문제가 보이네요...외부 변수를 BUY STOP으로 변경하는 대신 "BUY" 주문을 하도록 스크립트를 설정했습니다... 그래서 시장 주문을 넣었습니다.

게시물에서:

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=거짓;

구매 중지를 시도합니다.


$2300 USD로 자금을 조달한 데모 계정 에서 EURJPY에 대해 0.12랏을 얻습니다.

2010.11.04 20:10:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: 오픈 #155713274 매수 스톱 0.12 EURJPY at 115.840 sl: 115.689 tp: 5 115.
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: 시도 OP_BUYSTOP 0.12000000 랏 @115.84000000 sl:115.689000005.8089000005.8089000000 tp:
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: Current EquityAtRisk = $22.44, Current Lotsize = 0.12, Profit Target = $6.69(0.3:1 이익:손실 비율)
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: 최대 허용 EquityAtRisk = $23.00 및 최대 계산된 Lotsize = 0.123
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1 입력: Order_Type="BUY STOP"; 공개입찰가=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=거짓;
 

나는 또한 NZDJPY 바이스톱 예제를 수행했습니다.

2010.11.04 20:14:16 Assisted_Order_Script_2010.11.01 NZDJPY,H1: 오픈 #155714279 매수 스톱 0.10 NZDJPY at 64.319 sl: 64.134.4tp: 64ok
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: 시도 OP_BUYSTOP 0.10000000 랏 @64.31900000 sl:64.134000000.4600000 tp:
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Current EquityAtRisk = $22.90 및 Current Lotsize = 0.1 및 Profit Target = $17.45 for the 0.8:1 Profit:Los 비율
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: 허용되는 최대 EquityAtRisk = $23.00 및 최대 계산된 Lotsize = 0.1004
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1 입력: Order_Type="BUY STOP"; 공개입찰가=64.297; StopLossBidPrice=64.134; TakeProfitBidPrice=64.46; MaxPercentEquityAtRisk=1; MinLotOverRide=거짓;

이제 시도된 64.297의 진입 주문 가격이 현재 시장 가격에 너무 가까워서 orderreliable 루틴이 진입 가격을 64.319로 옮겼지만 여전히 합리적인 0.10 lotsize를 얻습니다.

이 시점에서 코드에 포함 파일을 구현한 방법 및/또는 출력을 사용하는 방법에 문제가 있다는 결론을 내려야 합니다. 내가 더 이상 추적할 수 있도록 코드를 업로드해야 검사할 수 있습니다.

 

네, USD 표시 데모 계정 이며 1:100 레버리지입니다. 좋아요, 방금 EURJPY에서 BUY STOP으로 실행했는데 이번에는 좋은 수치를 얻은 것 같습니다. 전문가 로그는 다음과 같이 말합니다.


2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: 제거됨
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: 단위 이유 0
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: 오픈 #155719095 매수 스톱 0.11 EURJPY at 115.843 sl: 115.689 tp: 5 115.
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: OP_BUYSTOP 시도 0.11000000 랏 @115.84300000 sl:115.689000010.8089000005.8089000005.tp:
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: 현재 EquityAtRisk = $20.95 및 현재 Lotsize = 0.11 및 이익 목표 = $5.71 0.3:1 이익:손실 비율에 대해
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: 최대 허용 EquityAtRisk = $22.73 및 최대 계산된 Lotsize = 0.1193
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1 입력: Order_Type="BUY STOP"; 공개입찰가=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=거짓;
2010.11.04 21:36:23 Assisted_Order_Script_2010.11.01 EURJPY,H1: 성공적으로 로드됨
2010.11.04 21:34:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: 제거됨
2010.11.04 21:34:11 Assisted_Order_Script_2010.11.01 EURJPY,H1: 성공적으로 로드됨



... 그리고 보류 중인 바이스톱 주문을 0.11랏으로 배치했습니다. 완벽한. 네, 제 코드에서 뭔가 "중단된" 것 같습니다. 말씀하신 대로... lol. 나는 당신의 코드를 삽입하는 데 매우 조심스러웠지만... 그게 무엇일 수 있습니까? 알겠습니다. 여기서 디버깅을 하고 알려드리겠습니다. 번거롭게 해서 죄송합니다 필립!


감사해요

 

방금 게시한 최신 버전으로 새로 시작해야 할까요? Phillip?



 

가장 최근에 사용하는 것이 합리적입니다.

 

안녕하세요 Phillip, 며칠 전에 게시한 최신 버전으로 업그레이드하기 위해 내 EA를 다시 수술하려고 했으나 해당 게시물을 다시 읽은 후... 상당히 많은 질문을 남겼습니다. 내 EA를 찢어버리기 전에 먼저 당신에게 물어봐야 한다고 생각했습니다.


(1) 2개의 새로운 포함 파일이 있다고 언급했습니다.


Analyze_Currency_Symbol_2010.10.29.mqh(34.54KB)

Trade_Position_Management_2010.10.29.mqh(26.68KB)


... 이전 StopLoss_Manager_2010.05.24.mqh는 어떻습니까? 해당 파일은 새 버전에서 더 이상 필요하지 않습니까?


(2) 당신이 말하는 곳:


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

#include <OrderReliable_2010.10.12.mqh>

#include <Trade_Position_Management_2010.10.29.mqh>"


... 이것은 새 버전입니까 아니면 OrderReliable입니까? 나는 LibOrderReliable.mqh를 사용하고 있었습니다. 그것으로 뭔가 바뀌었나요? 또한 새 Analyze_Currency_Symbol_2010.10.29.mqh 파일도 포함해야 하지 않습니까?


(3) 이 코드 줄에서 새 버전을 사용할 때 추가하라고 말합니다.


더블 CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);


... OpenPrice_ND 및 StopLossPrice_ND는 무엇입니까? 이러한 변수는 내가 선언해야 합니까, 아니면 포함 파일의 어딘가에 포함되어 있습니까? 또한 이 새 버전의 LotSize 함수에서는 매개변수의 수와 순서가 상당히 변경되었습니다. 이전 버전에서 LotSize에 대한 호출은 다음과 같습니다.


CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);


(4) 이전 버전을 사용하는 코드에서 CurrentOrderType=OP_BUY를 할당했음을 알았습니다. 실제로는 매수 정지 주문 을 하고 있습니다. 차이가 날까요?



귀찮게 해서 미안하지만, 나는 이런 일들에 약간 당황했습니다.


감사해요

 

(1) You mention there's 2 new include files:


Analyze_Currency_Symbol_2010.10.29.mqh(34.54KB)

Trade_Position_Management_2010.10.29.mqh(26.68KB)


... 이전 StopLoss_Manager_2010.05.24.mqh는 어떻습니까? 해당 파일은 새 버전에서 더 이상 필요하지 않습니까?


최종 사용자가 그릴 수 있는 완전한 파일 세트를 갖도록 하는 것 외에는 원래 게시물에 해당 부분을 추가한 이유를 잘 모르겠습니다.

저는 개인적으로 그 손절매 관리자의 업데이트된 버전을 사용하지만 여기에서는 이 스레드와 아무런 관련이 없습니다. 사용하려는 손절매 절차를 구현해야 합니다. 이 스레드에서 업로드한 코드는 손절매 포함 파일에 의존하지 않지만, 당신이 그것을 equalatrisk 호출 함수 로 보낼 수 있도록 손절매 가격을 식별하도록 코드를 올바르게 설정하는 것에 의존합니다.

(2) 당신이 말하는 곳:


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

#include <OrderReliable_2010.10.12.mqh>

#include <Trade_Position_Management_2010.10.29.mqh>"


... 이것은 새 버전입니까 아니면 OrderReliable입니까? 나는 LibOrderReliable.mqh를 사용하고 있었습니다. 그것으로 뭔가 바뀌었나요? 또한 새 Analyze_Currency_Symbol_2010.10.29.mqh 파일도 포함해야 하지 않습니까?

새 버전입니다. 이 스레드의 첫 번째 페이지 맨 아래에 있는 내 게시물 맨 아래에 링크를 게시했습니다.

ecn-type 브로커와 투명하게 작동하도록 새 버전을 수정했습니다. ordersendreliable을 통해 주문을 보내고 브로커가 시장 주문에 대해 SL 및 TP를 수락하는지 여부는 중요하지 않습니다. orderreliable 스크립트가 이를 처리합니다.

(3) 이 코드 줄에서 새 버전을 사용할 때 추가하라고 말합니다.


더블 CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);


... OpenPrice_ND 및 StopLossPrice_ND는 무엇입니까? 이러한 변수는 내가 선언해야 합니까, 아니면 포함 파일의 어딘가에 포함되어 있습니까? 또한 이 새 버전의 LotSize 함수에서는 매개변수의 수와 순서가 상당히 변경되었습니다. 이전 버전에서 LotSize에 대한 호출은 다음과 같습니다.

예, 이들은 코드의 특정 지점에서 선언하고 새 포지션을 여는 시장 가격(OpenPrice_ND)과 손절매 가격(StopLossPrice_ND)을 할당해야 하는 변수입니다.

또는 이미 사용 중인 변수로 내 변수의 이름을 바꿀 수 있습니다. 이러한 변수를 자리 표시자로 간주하고 적절한 경우 변수를 대체하십시오.

(4) 이전 버전을 사용하는 코드에서 CurrentOrderType=OP_BUY를 할당했음을 알았습니다. 실제로는 매수 정지 주문을 하고 있습니다. 차이가 날까요?
제로 차이를 만듭니다. 중요한 것은 각각의 호출 함수에 ordertype을 올바르게 전달하는 것입니다. 그들은 이미 주문 유형에 따라 올바른 일을 하도록 코딩되어 있습니다. 호출 함수에 올바른 ordertype을 보내지 않으면 호출 함수 자체에서 잘못된 결과를 확실히 얻게 됩니다.

이것들은 모두 좋은 질문입니다. 묻지 않으면 스스로 배울 것을 기대할 수 없습니다 ;)
 
1005phillip :

최종 사용자가 그릴 수 있는 완전한 파일 세트를 갖도록 하는 것 외에는 원래 게시물에 해당 부분을 추가한 이유를 잘 모르겠습니다.

저는 개인적으로 그 손절매 관리자의 업데이트된 버전을 사용하지만 여기에서는 이 스레드와 아무런 관련이 없습니다. 사용하려는 손절매 절차를 구현해야 합니다. 이 스레드에서 업로드한 코드는 손절매 포함 파일에 의존하지 않지만, 당신이 그 값을 형평성 호출 함수로 보낼 수 있도록 손절매 가격을 식별하도록 코드를 올바르게 설정하는 것에 의존합니다.



>>> 좋아! 내 자신의 손절매가 있으므로 필요하지 않습니다. 제거하겠습니다!



새 버전입니다. 이 스레드의 첫 번째 페이지 맨 아래에 있는 내 게시물 맨 아래에 링크를 게시했습니다.

ecn-type 브로커와 투명하게 작동하도록 새 버전을 수정했습니다. ordersendreliable을 통해 주문을 보내고 브로커가 시장 주문에 대해 SL 및 TP를 수락하는지 여부는 중요하지 않습니다. orderreliable 스크립트가 이를 처리합니다.


>>> 좋습니다. 이미 OrderSendReliable2Step을 사용하고 있으므로 기존 LibOrderReliable.mqh를 사용하여 코드를 그대로 두겠습니다. 그래도 새 Analyze_Currency_Symbol_2010.10.29.mqh 파일도 포함해야 하지 않습니까?



예, 이들은 코드의 특정 지점에서 선언하고 새 포지션을 여는 시장 가격(OpenPrice_ND)과 손절매 가격(StopLossPrice_ND)을 할당해야 하는 변수입니다.

또는 이미 사용 중인 변수로 내 변수의 이름을 바꿀 수 있습니다. 이러한 변수를 자리 표시자로 간주하고 적절한 경우 변수를 대체하십시오.


>>> 잡았다, 그게 내가 생각했던 것입니다. 제가 작성한 이 댓글을 건너뛰신 것 같습니다. --> "이 새 버전의 LotSize 함수에서도 매개변수의 수와 순서가 상당히 변경되지 않았습니까?"




제로 차이를 만듭니다. 중요한 것은 각각의 호출 함수에 ordertype을 올바르게 전달하는 것입니다. 그들은 이미 주문 유형에 따라 올바른 일을 하도록 코딩되어 있습니다. 호출 함수에 올바른 ordertype을 보내지 않으면 호출 함수 자체에서 잘못된 결과를 확실히 얻게 됩니다.


>>> 좋아!



이것들은 모두 좋은 질문입니다. 묻지 않으면 스스로 배울 것을 기대할 수 없습니다 ;)


>>> 노력하고 있어요! 감사합니다 필립.



 

>>> 새 Analyze_Currency_Symbol_2010.10.29.mqh 파일도 포함해야 하지 않습니까?

귀하의 EA에는 없지만 Trade Position Management 포함 파일에서 호출되기 때문에 포함 디렉토리에 파일이 필요합니다.

EA에 #include < Trade_Position_Management_2010.10.29.mqh >가 있으면 이미 Trade_Position_Management_2010.10.29.mqh 및 Analyze_Currency_Symbol_2010.10.29.mqh에 모두 링크된 것입니다.

>>>또한 이 새 버전의 LotSize 함수 에서는 매개변수의 수와 순서가 상당히 변경되었습니다.

더 이상 CurrentSymbolType 또는 CurrentCounterPairForCross를 기반으로 할 필요가 없습니다. 현재 내부적으로 처리하고 있습니다.

Trade Position 파일 내부를 보면 형평성 섹션이 표시되고 기능 사용에 대한 설명이 있습니다. 그들은 도움이 될 수 있지만 그들이 얼마나 자명한지는 확실하지 않습니다.

 

저에게만 발생한 버그인가요?
# include가 있는 줄을 넣으면 MetaEditor mq4로 파일을 컴파일할 수 없습니다.
코드에 # 라인이 포함된 mq4 파일을 컴파일할 수도 없었습니다.
라인만 활성화
# <stderror.mqh> 포함
# <stdlib.mqh> 포함
# <WinUser32.mqh> 포함