MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1477

 
MakarFX :

중요하지 않습니다. 모든 틱 을 확인합니다.

그리고 저점 계산이 잘못되었습니다... 두 막대 뒤로 롤백

당신의 그림과 같이 최소 계산이 빗나갔습니다. 그러나 변수 LoY1을 추가하고 이 노크 다운을 중지했습니다. 결과적으로 모든 주문은 내 원래 코드와 동일한 방식(시간, 수량 및 가격 기준)으로 열립니다(즉, 필요에 따라). 다른곳에서 코드가 엉망이었는데....이곳도 수정 했습니다.


 double LoU,LoY1,Pr;
int x;
void OnTick ()
{
if (Low[ 1 ]>Low[ 2 ] &&Time[ 2 ]>x &&Low[ 2 ]<LoY1)
{
LoU=Low[ 2 ];
LoY1=Low[ 2 ];
}
//**************************************************************
if (Bid-LoU>= 0.0030 &&Pr!=LoU)
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , "300" , 0 );
Pr=LoU;
LoU=Bid;
LoY1=Bid;
x= TimeCurrent ();
}
}

그리고 마켓에 오픈하지 않고 30포인트 이후에 LoU에서 보류 주문을 할 수도 있습니다. 그러면 각 틱에서 입찰가를 확인할 필요가 없습니다. 하지만 보류 주문의 경우 LoU가 변경될 때마다 기존 보류 주문을 삭제하고 새로 작성하거나 삭제하지 않고 기존 보류 주문의 매개변수를 변경해야 합니다. 그리고 이 모든 작업은 각 Bid tick에서 확인하는 것보다 훨씬 덜 자주 수행해야 합니다 .

내 경우와 관련하여 코드를 실행하는 데 시간이 가장 적게 걸리는 옵션이 무엇인지 알려주십시오.

1. 입찰가 LoU 에서 30핍 떨어져 있는지 각 틱에서 확인하십시오.  

2. LoU가 변경될 때마다 기존 딜레이를 제거하고 새 딜레이를 설정합니다.

3. LoU가 변경될 때마다 현재 예금의 매개변수를 변경합니다.

도와 주셔서 감사합니다.

 
ANDREY :

당신의 그림과 같이 최소 계산이 빗나갔습니다. 그러나 변수 LoY1을 추가하고 이 노크 다운을 중지했습니다.

표준 함수 iLowest 및 iHighest 가 있습니다.

 
ANDREY :

당신의 그림과 같이 최소 계산이 빗나갔습니다. 그러나 변수 LoY1을 추가하고 이 노크 다운을 중지했습니다. 결과적으로 모든 주문은 내 원래 코드와 동일한 방식(시간, 수량 및 가격 기준)으로 열립니다(즉, 필요에 따라). 다른곳에서 코드를 망쳤는데....이곳도 수정 했습니다.


그리고 마켓에 오픈하지 않고 30포인트 이후에 LoU에서 보류 주문을 할 수도 있습니다. 그러면 각 틱에서 입찰가를 확인할 필요가 없습니다. 하지만 보류 주문의 경우 LoU가 변경될 때마다 기존 보류 주문을 삭제하고 새로 작성하거나 삭제하지 않고 기존 보류 주문의 매개변수를 변경해야 합니다. 그리고 이 모든 것은 각 Bid tick 을 확인하는 것보다 훨씬 덜 자주 수행해야 합니다 .

내 경우와 관련하여 코드를 실행하는 데 시간이 가장 적게 걸리는 옵션이 무엇인지 알려주십시오.

1. 입찰가 LoU 에서 30핍 떨어져 있는지 각 틱에서 확인하십시오.  

2. LoU가 변경될 때마다 이전 딜레이를 삭제하고 새 딜레이를 설정합니다.

3. LoU가 변경될 때마다 현재 예금의 매개변수를 변경합니다.

도와 주셔서 감사합니다.

1) x는 int가 아니라 datetime입니다(미래에 유용함).

2) 원래 코드에 보류 중인 주문 이 없습니다.

3) 이제 코드가 각 틱에서 더 많은 작업을 수행합니다.

오후 확인

 
Taras Slobodyanik :

표준 함수 iLowest 및 iHighest 가 있습니다.

적합하지 않습니다... 시계열 요소의 수가 일정하지 않습니다 .
 
MakarFX :
적합하지 않습니다... 시계열 요소의 수가 일정하지 않습니다 .

어... 하지만 그렇게 하면 고/저를 찾는 데 방해가 되나요?

 
Taras Slobodyanik :

어... 하지만 그렇게 하면 고/저를 찾는 데 방해가 되나요?

iLowestiHighest 함수는 특정 수의 막대( 시계열 요소의 수) 중에서 검색하는 것을 의미합니다.

이 경우 이 번호는 알 수 없으며 매번 변경됩니다.

 
MakarFX :

1) x는 int가 아니라 datetime입니다(미래에 유용함).

2) 원래 코드에 보류 중인 주문 이 없습니다.

3) 이제 코드가 각 틱에서 더 많은 작업을 수행합니다.

오후 확인

이것은 내 오래된 코드입니다.

이것은 이전 코드와 같은 기간 동안의 새 코드입니다.

틱당 작업 수는 이 숫자에 소요된 시간보다 훨씬 덜 걱정됩니다. 그리고 새 코드에서는 소요 시간이 25% 줄어듭니다.

도와 주셔서 감사합니다.

 
Aleksei Stepanenko :
여기에 미묘함이 있습니다. 먼저 크기를 설정한 다음 0으로 재설정하여 고정을 해제하지만 크기는 변경되지 않습니다. 다른 방법은 없습니다.
매우 감사합니다!
 
MakarFX :

중요하지 않습니다. 모든 틱 을 확인합니다.

낮은 계산 실패... 두 막대 뒤로 롤백

아래는 추가하지 않은 내 원래 코드입니다.

최신 업그레이드가 있는 아래층



if(TimeSeconds(TimeCurrent())==0)은 주문이 열리지 않았지만 다음 최소값이 검색되는 섹션에서만 사용해야 합니까?

내가 틀리지 않았다면, 당신의 기능 덕분에 내 코드는 매초 촛불이 시작될 때만 실행을 시작했는데, 이것이 바로 주문을 제대로 열지 못하는 이유입니다.


도와 주셔서 감사합니다.

 
ANDREY :

아래는 추가하지 않은 내 원래 코드입니다.

최신 업그레이드가 있는 아래층



if(TimeSeconds(TimeCurrent())==0)은 주문이 열리지 않았지만 다음 최소값이 검색되는 섹션에서만 사용해야 합니까?

내가 틀리지 않았다면, 당신의 기능 덕분에 내 코드는 매초 촛불이 시작될 때만 실행을 시작했는데, 이것이 바로 주문을 제대로 열지 못하는 이유입니다.


도와 주셔서 감사합니다.