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

 
#속성 표시기_분리_창
#속성 표시기_버퍼 1
#property indicator_color1 파란색
//------------------------------------------------ --------------------
더블버퍼[];
//------------------------------------------------ --------------------
정수 초기화()
{
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY,2);
SetIndexBuffer(0,버퍼);
리턴(0);
}
// ------------------------------------------------ --------------------
정수 초기화()
{
리턴(0);
}
//------------------------------------------------ --------------------
정수 시작()
{
int StartBar = 막대 - IndicatorCounted() - 1;
for(int i = StartBar; i >= 0; i--)
버퍼[i] =( iClose ("EURGBP",0,i)-iOpen("EURGBP",0,i))/MarketInfo("EURGBP",MODE_POINT)+
(iClose("EURAUD",0,i)-iOpen("EURAUD",0,i))/MarketInfo("EURAUD",MODE_POINT);
리턴(0);
}

//------------------------------------------------ ----------------------

죄송합니다. 텍스트를 코딩하는 방법을 모르겠습니다.

이것은 모든 계측기의 간단한 카운터 표시기(현재 TF-me의 포인트로 표시된 계측기 본체의 합계)입니다. 히스토그램의 각 열은 "O"로 시작하여 기간이 끝날 때 끝납니다. 예를 들어, 현재 TF는 H1이고 12.00에서 "0"을 표시하고 13.00에서 "+20"을 표시하고 히스토그램 막대는 명확하게 =+20입니다. 그러나 이 시간 동안 판독값은 모두 -50 및 +60 이었지만 표시기가 이를 표시하지 않으면 최소 Buffer[i] 에 대해 하나의 버퍼를 추가하고 최대 Buffer[i] 에 대해 하나를 추가해야 합니다. 표시기에 지정된 각 기기에 대해 이러한 값이 다른 시간에 발생하기 때문에 높음 및 낮음을 사용할 수 없습니다. 따라서 두 번째 버퍼는 현재 차트(H1)의 작은 차트(M5)의 Buffer[i] 최대값을 고정하고 세 번째 버퍼는 작은 차트의 Buffer[i] 최소값을 고정해야 합니다. 현재 차트의 (M5) (H1) . 친애하는, 누가 조언을 할 수 있습니까?

 
vitek2010 :

죄송합니다. 텍스트를 코딩하는 방법을 모르겠습니다 .

표시기에 지정된 각 기기에 대해 이러한 값이 다른 시간에 발생하기 때문에 높음 및 낮음을 사용할 수 없습니다.

그리고 각 악기에 대해 동시에 닫기, chtoli, 촛불 의 수명 동안 온다??? 따라서 이것은 잘못된 의견입니다. 틱은 모두 다른 시간에 나타납니다.)))

 
trader781 :
사실은 체인에는 항상 어떤 종류의 로트가 있는 수익성 없는 주문이 있으며 다른 로트를 희생하여 추적해야 한다는 것입니다. 방아쇠 - 마감 시간. 적어도 하나가 닫히면 전체 체인이 덮입니다. 따라서 문제는 선택한 모든 가격의 평균 가격을 정확히 추적하는 방법입니다.

즉, 한 주기의 모든 "필요한" 주문을 검토하고 이 평균 가격을 계산해야 합니다. 그런 다음 현재 가격 이 계산된 평균에서 올바른 방향으로 벗어나면 모든 주문을 수정하여 주기를 다시 청구합니다.

각 틱에 대한 평균을 계산하지 않기 위해 다음 주문을 추가할 때만 계산할 수 있습니다.

 
Alexey Viktorov :

즉, 한 주기의 모든 "필요한" 주문을 검토하고 이 평균 가격을 계산해야 합니다. 그런 다음 현재 가격 이 계산된 평균에서 올바른 방향으로 벗어나면 모든 주문을 수정하여 주기를 다시 청구합니다.

각 틱에 대한 평균을 계산하지 않기 위해 다음 주문을 추가할 때만 계산할 수 있습니다.

어렵지 않다면 주문 그리드의 고르지 않은 분포(여기서 OrderType()<2)로 평균 가격을 계산하는 방법을 설명하십시오. 그리고 그게 다야.
 
Vitalie Postolache :

그리고 각 악기에 대해 동시에 닫기, chtoli, 촛불 의 수명 동안 온다??? 따라서 이것은 잘못된 의견입니다. 틱은 모두 다른 시간에 나타납니다.)))

나는 틱에 대해 이야기하지 않았습니다. 더 작은 시간 프레임에서 계산된 표시기 버퍼의 최소 및 최대 판독값을 수정해야 한다고 말했습니다. 더 큰 시간 프레임 간격으로 화면에 표시하려고 합니다. 다른 TF의 창):

[img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

참고로 저는 05.12주(빨간색 십자선)를 사용할 것입니다. 위의 지표에 따른 이 히스토그램은 주 종료 시 쌍의 총 움직임이 95포인트 하락했음을 분명히 보여주지만, 얼마나 증가했는지는 보여주지 않습니다 감소는 주중이었습니다.

그러나 이 화면에서 이번 주 동안 H1 차트에서 이 표시기 의 움직임의 역학을 볼 수 있습니다.

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

표시기의 최소값이 400인 다음 700의 값으로 상승하고 160에서 마감됨을 알 수 있습니다(두 스크린샷의 마감 숫자 사이의 불일치는 중요하지 않음)

하나의 표시기에서 이 모든 것이 히스토그램의 한 열에 있어야 하며 최소값과 최대값 및 마감(이 경우 주간)이 필요합니다. 이상적으로는 설정에 지정된 TFma의 현재 TF-me에서

어떤 이유로 스크린샷이 표시되지 않았습니다. 9 MKL5 웹사이트를 복사하여 MT4에서 인스타를 했습니다.

 
trader781 :
어렵지 않다면 주문 그리드가 고르지 않게 분포되어 있는 평균 가격을 계산하는 방법을 설명하세요(여기서 OrderType()<2). 그리고 그게 전부입니다.

난 당신이 이해 바랍니다

for ( int i= 0 ; i< OrdersTotal (); i++) {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
   if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==Magic) {
     if ( OrderType ()== OP_BUY ) {
      _BuyProfit+= OrderProfit ()+ OrderSwap ()+ OrderCommission (); // совокупный профит  по всем Sell
      _BuyLot+= OrderLots (); //совокупный лот по всем Sell
    }
     if ( OrderType ()== OP_SELL ) {
      _SellProfit+= OrderProfit ()+ OrderSwap ()+ OrderCommission (); // совокупный профит  по всем Sell
      _SellLot+= OrderLots (); //совокупный лот по всем Sell
    }
}}}

double TickValue= MarketInfo ( _Symbol , MODE_TICKVALUE );

if (_BuyLot  > 0 ) { BuyAwerage = NormalizeDouble ( Bid -(_BuyProfit/(TickValue*_BuyLot))* _Point , _Digits ); } else { BuyAwerage= 0 ; } // безубыток buy
if (_SellLot > 0 ) { SellAwerage= NormalizeDouble ( Ask +(_SellProfit/(TickValue*_SellLot))* _Point , _Digits ); } else { SellAwerage= 0 ; } // безубыток sell
if (_BuyLot-_SellLot! = 0 ) { AllAwerage= NormalizeDouble (((_BuyLot>_SellLot)? Bid : Ask )-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))* _Point ), _Digits ); } else { AllAwerage= 0 ; } // общий безубыток
 
Vitaly Muzichenko :

난 당신이 이해 바랍니다



double TickValue= MarketInfo ( _Symbol , MODE_TICKVALUE );


여기 그것에 대해 조금 가능? 이 코드에서 그 의미를 이해하지 못합니다.
 
trader781 :
여기 그것에 대해 조금 가능?

예금 통화 로 표시된 상품 가격의 최소 변동 금액

포인트 값은 상품마다 다르며 EUR/USD와 같이 "1"이 아닙니다.

 
Vitaly Muzichenko :

예금 통화 로 표시된 상품 가격의 최소 변동 금액

포인트 값은 상품마다 다르며 EUR/USD와 같이 "1"이 아닙니다.

아, 이제 이해한다

그러나 (equity=balance*1.1) 또는 (equity=balance*0.9)와 같이 부동 정지를 설정할 수도 있습니다.

그런 도구가 있습니까?

 
trader781 :

아, 이제 이해한다

그러나 (equity=balance*1.1) 또는 (equity=balance*0.9)와 같이 부동 정지를 설정할 수도 있습니다.

그런 도구가 있습니까?

귀하는 이미 특정 가격을 가지고 있으며 단순 추적의 유사점에 따라 추적만 남습니다. 단순 추적만 위치 개시 가격 = OrderOpenPrice() 를 기반으로 하며 여기에서는 평균 계산 가격에서 모든 것을 수정합니다. 한 수준의 위치