GetProfitFromDateInCurrency() 기능을 개선하는 데 도움을 주시겠습니까? 마감된 주문의 이익만 계산해야 합니다. 주문의 부분 마감(분할)과 기존 주문의 나머지 부분을 마감하기 위해 CloseBy 기능을 사용합니다. 짝수 또는 홀수 주문 이 마감되었는지 확인하려면 다음 공식을 사용하십시오.
이중 x, y; --------------------------------- 추정하다 x=MathFloor(OrderLots()/0.02); --------- ㅏ. 많은 경우 0.04/0.02=2 --- b. 로트 0.03/0.02=1인 경우 y=x*0.02; ---------- ㅏ. 2*0.02=0.04 --- b. 1*0.02=0.02 if (y==OrderLots()) ---------- a. 0.04==0.04 --- b. 0.02!=0.04 XLots=y; 같으면 XLots는 y 값을 얻습니다.
작동합니다 (짝수 / 홀수로 나누는 더 좋은 방법을 생각하지 않았으며 질문했을 때 힌트를 얻지 못했습니다).
또한, 사실, 함수 호출(내가 당신에게서 한 것) ClOrdProf=GetProfitFromDateInCurrency("", -1, -1, XTime, XLots);
그리고 로트가 짝수인 경우 이익을 계산해야 한다는 조건을 함수에 추가하려는 헛된 시도:
이중 GetProfitFromDateInCurrency(문자열 sy="", int op=-1, int mn=-1, datetime dt=0 , 이중 lt=-1 ) { 이중 p=0; 정수 i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol(); (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { if (dt<OrderCloseTime()) { if (OrderLots()==lt) { p+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } } } 리턴(p); }
계산하고 싶지 않습니다. 1. 함수의 어딘가에 내가 잘못 되었습니까? 2. OrdCloseBy로 주문을 마감할 수 있습니까?
GetProfitFromDateInCurrency() 함수에서 intlt 매개변수를 사용합시다. 세 가지 플래그 값을 취합니다. -1 모든 주문, 0 - 짝수 로트, 1 - 홀수 로트, 다음 바꾸다 if (OrderLots()==lt) { p+=OrderProfit()+OrderCommission()+OrderSwap(); }
에
if (lt == -1){ p+=OrderProfit()+OrderCommission()+OrderSwap(); } 또 다른 { 정수 테스트 = OrderLors() * 100; if (lt == 테스트 % 2) { p+=OrderProfit()+OrderCommission()+OrderSwap(); } 또 다른 { p+=OrderProfit()+OrderCommission()+OrderSwap(); } }
keekkenen писал(а)>> GetProfitFromDateInCurrency() 함수에서 intlt 매개변수를 사용합시다. 세 가지 플래그 값을 취합니다.
고마워요, 모듈로 나눗셈으로 로트를 결정하는 당신의 방법은 매우 정확합니다. 조금 후에 취하겠습니다. 그러나 흥미롭게도 내가 수정한 기능이 작동하는 것으로 밝혀졌습니다. 어떤 의미에서는. "p+="가 변경되고 올바르게 계산되는 것을 확인하기 위해 경고를 추가했습니다. 그러나 정보를 가져와야 하는 ClOrdProf 값은 업데이트되지 않습니다. Alert ("ClOrdProf= ",ClOrdProf);. 코드에서는 다음과 같습니다. 정수 시작() { ........................... 부울 ClOrdProf=거짓; //부울 ........................... ClOrdProf=GetProfitFromDateInCurrency("",-1,-1,XTime,XLots); //함수 호출 if (ClOrdProf==true) Alert("ClOrdProf= ",ClOrdProf); - 로그에서 업데이트되지 않음 ........................... 반품; // start()에서 종료 } // 마감된 주문의 이익을 계산하는 함수 이중 GetProfitFromDateInCurrency(문자열 sy="", int op=-1, int mn=-1, datetime dt=0, 이중 lt=-1) { 이중 p=0; 정수 i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol(); (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { if (dt<OrderCloseTime()) { if (OrderLots()==lt) { p+=OrderProfit()+OrderCommission()+OrderSwap(); 경고("p= ", p); - 잡지에서 업데이트됨 } } } } } } } 반환(p); } 평생 이해불가...
웃기다, 그렇지, 웃기다 ... 그리고 너도 나도 웃기다 ... (블라디미르 세메노비치) 처음에 ClOrdProf는 bool이 아니라 double입니다. 그리고 "if (ClOrdProf>0 || ClOrdProf<0 )"이어야 합니다. 두 번째 부분은 "or"로 시작하여 음수 이익의 경우 계산을 위해... 제가 "흐릿한 모양"이라고 부르는 것입니다. 표면에 있는 것을 바로 확인하십시오. 짝수/홀수 로트 계산 지침을 주신 keekkenen 에게 감사드립니다. 기능을 업그레이드할 수 있는 기회를 주신 Igor에게 감사드립니다.
이 함수는 시장에서 가장 가까운 포지션의 티켓을 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.
sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 값은 현재 기기를 의미합니다.
op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
추신. TicketNearPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
if (pp == 0 )
{ return (ti);}
TypeNearPos 함수에서 조건이 충족될 때 잼을 발견했습니다. 시장 가격 = 주문 개시 가격, 이 주문은 함수에서 고려되지 않습니다. 이 간단한 조건을 코드에 추가해야 했습니다. 이 조건은 유사한 함수 TypeNearPos() 및 PriceOpenNearPos()에서도 도움이 됩니다.
안녕하세요 이고르입니다!
e-OpenByTime Expert Advisor를 변경하거나 새로 작성하거나 준비된 것이 있으면 제안할 수 있습니다. :)))
가격에서 N 포인트만큼 X 시간에 다른 방향으로 예금을 설정하는 고문이 필요합니다!
안녕하세요 이고르입니다!
귀하의 무기고에 수평선 을 그리는 스크립트가 있습니까? 신호에서 X 및 Y 지점으로 간격을 둔 세그먼트가 있습니까?
설명하겠습니다. 매수/매도 신호(교차, 프랙탈 등)가 있습니다.
4개의 매개변수가 스크립트에 설정됩니다. 예를 들면 다음과 같습니다.
- 정지까지 300핍,
- Teik 500포인트,
- 10개 막대 = 세그먼트 길이,
- 신호를 받는 위치와 방법 - 신호 터키에 대한 링크, 신호에 대한 조건 삽입... 이 점을 생각해야 합니다!
각 Bai 신호의 스크립트는 두 줄을 그립니다.
1) 첫 번째("정지")는 신호 막대의 시작 가격에서 300포인트 낮습니다.
2) 두 번째("테이크")는 시그널 바의 시가보다 500포인트 높습니다.
3) 라인은 신호 막대에서 시작하여 10번째 막대에서 끝납니다.
Sel 신호에서 - 같은 방식으로 행의 들여쓰기만 반전됩니다.
그러한 시각화는 "신호 테이크 스톱"의 예비 평가에 유용할 것 같습니다.
진심으로, Vadim.
안녕하세요 이고르입니다!
질문 1.
OpenPosition() 함수에서 오류 138 - ERR_REQUOTE가 일시 중지됩니다.
if (err!=135) Sleep(1000*7.7);
문서에서는 데이터를 업데이트하고 즉시 다시 시도할 것을 권장하지만(가격이 내려가고 있지만 가능한 한 빨리 포지션을 열고 싶습니다)).
그러면 정확할 수 있습니다.
if (err!=135 && err!=138) 절전(1000*7.7);?
아니면 내가 뭔가를 이해하지 못하고 있습니까?
질문 2.
DC(Alpari)가 소수점 이하 5자리를 제공하는 경우 OrderSend() 함수 에서 5포인트와 동일한 Slippage 매개변수를 올바르게 지정하는 방법을 알려주세요.
- "오십"?
- 아니면 여전히 "5"입니까?
질문 1.
OpenPosition() 함수에서 오류 138 - ERR_REQUOTE가 일시 중지됩니다.
if (err!=135) Sleep(1000*7.7);
문서에서는 데이터를 업데이트하고 즉시 다시 시도할 것을 권장하지만(가격이 내려가고 있지만 가능한 한 빨리 포지션을 열고 싶습니다)).
그러면 다음과 같이 정확할 수 있습니다.
if (err!=135 && err!=138) 절전(1000*7.7);?
네, 좋아요! 당신은 그렇게 할 수 있습니다 ... 감사합니다!
질문 2.
DC(Alpari)가 소수점 이하 5자리를 제공하는 경우 OrderSend() 함수에서 5포인트와 동일한 Slippage 매개변수를 올바르게 지정하는 방법을 알려주세요.
- "오십"?
- 아니면 여전히 "5"입니까?
안녕하세요 이고르님
GetProfitFromDateInCurrency() 기능을 개선하는 데 도움을 주시겠습니까? 마감된 주문의 이익만 계산해야 합니다. 주문의 부분 마감(분할)과 기존 주문의 나머지 부분을 마감하기 위해 CloseBy 기능을 사용합니다. 짝수 또는 홀수 주문 이 마감되었는지 확인하려면 다음 공식을 사용하십시오.
이중 x, y; --------------------------------- 추정하다
x=MathFloor(OrderLots()/0.02); --------- ㅏ. 많은 경우 0.04/0.02=2 --- b. 로트 0.03/0.02=1인 경우
y=x*0.02; ---------- ㅏ. 2*0.02=0.04 --- b. 1*0.02=0.02
if (y==OrderLots()) ---------- a. 0.04==0.04 --- b. 0.02!=0.04
XLots=y; 같으면 XLots는 y 값을 얻습니다.
작동합니다 (짝수 / 홀수로 나누는 더 좋은 방법을 생각하지 않았으며 질문했을 때 힌트를 얻지 못했습니다).
또한, 사실, 함수 호출(내가 당신에게서 한 것)
ClOrdProf=GetProfitFromDateInCurrency("", -1, -1, XTime, XLots);
그리고 로트가 짝수인 경우 이익을 계산해야 한다는 조건을 함수에 추가하려는 헛된 시도:
이중 GetProfitFromDateInCurrency(문자열 sy="", int op=-1, int mn=-1, datetime dt=0 , 이중 lt=-1 )
{
이중 p=0;
정수 i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
if (OrderLots()==lt) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
}
리턴(p);
}
계산하고 싶지 않습니다.
1. 함수의 어딘가에 내가 잘못 되었습니까?
2. OrdCloseBy로 주문을 마감할 수 있습니까?
-1 모든 주문, 0 - 짝수 로트, 1 - 홀수 로트, 다음
바꾸다
if (OrderLots()==lt) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
에
if (lt == -1){
p+=OrderProfit()+OrderCommission()+OrderSwap();
} 또 다른 {
정수 테스트 = OrderLors() * 100;
if (lt == 테스트 % 2) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
} 또 다른 {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
GetProfitFromDateInCurrency() 함수에서 int lt 매개변수를 사용합시다. 세 가지 플래그 값을 취합니다.
고마워요, 모듈로 나눗셈으로 로트를 결정하는 당신의 방법은 매우 정확합니다. 조금 후에 취하겠습니다. 그러나 흥미롭게도 내가 수정한 기능이 작동하는 것으로 밝혀졌습니다. 어떤 의미에서는. "p+="가 변경되고 올바르게 계산되는 것을 확인하기 위해 경고를 추가했습니다. 그러나 정보를 가져와야 하는 ClOrdProf 값은 업데이트되지 않습니다. Alert ("ClOrdProf= ",ClOrdProf);. 코드에서는 다음과 같습니다.
정수 시작()
{
...........................
부울
ClOrdProf=거짓; //부울
...........................
ClOrdProf=GetProfitFromDateInCurrency("",-1,-1,XTime,XLots); //함수 호출
if (ClOrdProf==true)
Alert("ClOrdProf= ",ClOrdProf); - 로그에서 업데이트되지 않음
...........................
반품; // start()에서 종료
}
// 마감된 주문의 이익을 계산하는 함수
이중 GetProfitFromDateInCurrency(문자열 sy="", int op=-1, int mn=-1, datetime dt=0, 이중 lt=-1)
{
이중 p=0;
정수 i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
if (OrderLots()==lt) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
경고("p= ", p); - 잡지에서 업데이트됨
}
}
}
}
}
}
}
반환(p);
}
평생 이해불가...
웃기다, 그렇지, 웃기다 ... 그리고 너도 나도 웃기다 ... (블라디미르 세메노비치)
처음에 ClOrdProf는 bool이 아니라 double입니다. 그리고 "if (ClOrdProf>0 || ClOrdProf<0 )"이어야 합니다. 두 번째 부분은 "or"로 시작하여 음수 이익의 경우 계산을 위해... 제가 "흐릿한 모양"이라고 부르는 것입니다. 표면에 있는 것을 바로 확인하십시오.
짝수/홀수 로트 계산 지침을 주신 keekkenen 에게 감사드립니다.
기능을 업그레이드할 수 있는 기회를 주신 Igor에게 감사드립니다.
TicketNearPos() 함수.
이 함수는 시장에서 가장 가까운 포지션의 티켓을 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.
- sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 값은 현재 기기를 의미합니다.
- op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
- mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
추신. TicketNearPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.시장 가격 = 주문 개시 가격, 이 주문은 함수에서 고려되지 않습니다.
이 간단한 조건을 코드에 추가해야 했습니다.
이 조건은 유사한 함수 TypeNearPos() 및 PriceOpenNearPos()에서도 도움이 됩니다.