[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 188

 

스왑을 계산하려고 하지만 작동하지 않습니다.

다음은 지난 20개 거래의 스왑을 표시하는 코드입니다.

for ( int j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {
OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPLONG)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
if(OrderType()==OP_SELL)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPSHORT)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
}

하지만 결제 스왑과 실제 스왑은 다릅니다. 입찰 가격이 다시는 동일하지 않다는 것이 아니라 1만분의 1 정도가 아닙니다.

차이가 10의 배수인 이유는 무엇입니까?

즉, 계산된 스왑은 실제 스왑보다 10배 더 높습니다.

여기에서 무슨 일이 일어나고 있는지 알 수 없습니다.

MarketInfo(OrderSymbol(),MODE_SWAPTYPE) 반환 단위 , 다음 있다

"스왑 계산 방법 1 - 상품의 기본 통화로,"

나는 반환되는 포인트에서 스왑 값을 취합니다.

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

이 값에 입찰가 를 곱합니다.

*MarketInfo(OrderSymbol(),MODE_BID)

그 다음에 크기 많은

*OrderLots()

한 점의 값을 곱합니다. 하나의 로트에서 예금 통화

*MarketInfo(OrderSymbol(),MODE_TICKVALUE)

다음 값이 반환됩니다.

EURGBP 랏 = 0.46000000 실제 스왑 = -1.31000000 결제 스왑 -13.05244609

 

어떻게 했는지 알려주세요

이중 MA1,MA2;

MA1= iMA (....,0);

MA2=iMA(....,3);

if (MA1-MA2>Point)//MA 조회

if (MA1-MA2,-Point)//MA가 아래를 내려다보면

 
vasya_vasya писал(а) >>

이 값에 입찰가 를 곱합니다.

*MarketInfo(OrderSymbol(),MODE_BID)

이것은 무엇을 위한 것입니까?

 
Roger >> :

어떻게 했는지 알려주세요

이중 MA1,MA2;

MA1=iMA(....,0);

MA2=iMA(....,3);

if (MA1-MA2>Point)//MA 조회

if (MA1-MA2,-Point)//MA가 아래를 내려다보면

정말 감사합니다))

 
Roger писал(а) >>

이것은 무엇을 위한 것입니까?

반환 값에 대한 설명은 어디에도 없습니다.

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

이것이 EUR 포인트의 크기라고 결론 지었습니다. EURGBP 견적에서 , GBP 로 얼마인지 확인하기 위해 BID 를 곱했습니다.

사실은

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

특히 GBP 에 대한 로트당 핍 값을 반환합니다. EUR 이 아닌 EURGBP 견적에서.

 
vasya_vasya писал(а) >>

반환 값에 대한 설명을 어디에서도 찾지 못했습니다.

어떤 이유에서인지 모든 계산이 예금 통화로 이루어진 것처럼 보였습니다.
 
Roger писал(а) >>
어떤 이유에서인지 모든 계산이 예금 통화로 이루어진 것처럼 보였습니다.

함수 MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

다른 모든 주문과 마찬가지로 정수 값 -2를 반환합니다. 따라서 이것이 포인트 값이라고 가정합니다.

이것이 우리 예금 통화의 포인트로 표현된 스왑의 가치라고 가정합시다.

통화 보증금 = USD

곱하다

MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

로트 수에 대해

*OrderLots()

우리는 또한 하나의 로트에 예금 통화의 1포인트 비용을 곱합니다.

*10

우리는 얻는다

스왑 = -9.20000000

대신에

실제 스왑 = -1.31000000

 
vasya_vasya писал(а) >>

함수 MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

다른 모든 주문과 마찬가지로 정수 값 -2를 반환합니다. 따라서 이것이 포인트 값이라고 가정합니다.

저에게 EURGBP의 경우 - 0(Alpari)은 짧고 -0.68은 긴 값을 반환하며 이는 정확히 달러 단위입니다.

 
전문가들은 mql5 언어 도움말에 따라 iHighest 기능 이 없다고 말해 주세요. N 기간의 최대 최고치를 계산하는 방법은??? ..함수를 직접 작성해야 합니다. ..copyHigh 및 fmax를 통해 시도했지만 특정 기간 동안만 해당되며 물론 그렇지는 않습니다.
 

대략 이렇습니다.

 double HighestBar ( int start , int end )
{
double maxBar ;
for ( int i = start ; i < end ; i + + )
if ( maxBar < High [ i ] ) maxBar = High [ i ] ;
return ( maxBar ) ;
}