KimIV의 유용한 기능 - 페이지 98

 
안녕하세요 이고르입니다! 05/09/2008 17:10 on page 17 상관 함수에 대해 설명했습니다. Pearson 공식을 사용하여 상관 함수를 설명할 수 있습니까?
 

안녕하세요 이고르입니다!

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"입니까?

 
slavamir писал(а) >>

질문 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"입니까?

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로 주문을 마감할 수 있습니까?

 
GetProfitFromDateInCurrency() 함수에서 int lt 매개변수를 사용합시다. 세 가지 플래그 값을 취합니다.
-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() 함수에서 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에게 감사드립니다.

 
KimIV >> :

TicketNearPos() 함수.

이 함수는 시장에서 가장 가까운 포지션의 티켓을 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 값은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
추신. TicketNearPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 if (pp == 0 ) 
{ return (ti);}
TypeNearPos 함수에서 조건이 충족될 때 잼을 발견했습니다.
시장 가격 = 주문 개시 가격, 이 주문은 함수에서 고려되지 않습니다.
이 간단한 조건을 코드에 추가해야 했습니다.
이 조건은 유사한 함수 TypeNearPos() 및 PriceOpenNearPos()에서도 도움이 됩니다.