초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 410

 
rosomah :

표준 라이브러리 를 사용할 때 Ask 및 Bid를 받을 때 mysymbol.RefreshRates();

저것들. 업데이트하거나 라이브러리의 데이터를 업데이트할 필요가 없습니까?

또는

실시간 가격이 필요한 경우. 할 것이 없다

if((Bid-Xprice)/Point>=Step)

 

뭔말인지 모르겠다) 벌써 3시간째 코드를 정리하고 있다. 이것은 그리드에 대한 기능입니다. 그리드에서 새 주문이 열릴 때 호출되며 목적은 TP를 다시 계산하고 그리드의 모든 주문에 대해 변경하는 것입니다.

그러나 그리드에서 가장 오래된 순서의 TR만 변경합니다.

내가 무엇을 과도하게 생각 했습니까?)))

 void ModifyOrders()
  {
   double avg= 0 ;
   int count = 0 ;

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OP_SELL)
              {
               avg+=OrderOpenPrice();
               count++;
              }
           }
        }
     }
   int Tcount=count- 1 ;         // Print("204");
   avg=(Tcount*Step* 0.4 );
//     avg=NormalizeDouble(avg/count,Digits);
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY)
              {
               double Bprice=FindLastBuyPrice(); //Print("215");
               TP= NormalizeDouble (Bprice+avg* Point , Digits ); //Print("216");
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ,Blue); // Print("217");
               if (!res)
                   Print ( " Error modification. Error code = " , DoubleToString ( GetLastError (), 0 ));
              }

             if (OrderType()==OP_SELL)
              {
               double Sprice=FindLastSellPrice();
               TP= NormalizeDouble (Sprice-avg* Point , Digits );
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ,Red);
               if (!res)
                   Print ( " Error modification. Error code = " , DoubleToString ( GetLastError (), 0 ));
              }
           }
        }
     }

  }
 
Leanid Aladzyeu :

뭔말인지 모르겠다) 벌써 3시간째 코드를 정리하고 있다. 이것은 그리드에 대한 기능입니다. 그리드에서 새 주문이 열릴 때 호출되며 목적은 TP를 다시 계산하고 그리드의 모든 주문에 대해 변경하는 것입니다.

그러나 그리드에서 가장 오래된 순서의 TR만 변경합니다.

내가 무엇을 과도하게 생각 했습니까?)))

언제 브라우저를 바꾸나요? 마치 어린아이처럼.
 
Karputov Vladimir :
언제 브라우저를 바꾸나요? 마치 어린아이처럼.

내 브라우저에 사이트를 적용하지 않은 사이트의 문제입니다. 평소와 같이 서비스 데스크, 0 도움. 내 브라우저가 나에게 적합합니다.

 
Leanid Aladzyeu :

내 브라우저에 사이트를 적용하지 않은 사이트의 문제입니다. 평소와 같이 서비스 데스크, 0 도움. 내 브라우저가 나에게 적합합니다.

항상 일반 Internet Explorer를 사용 하여 코드를 삽입할 수 있습니다. 이를 통해 코드가 정확하게 삽입됩니다. 다른 사람들을 생각해 보십시오. 붙여넣은 텍스트로 코드를 읽는 것은 불편합니다.
 

MT4 코드를 알려주세요. 새 막대 가 도착하면 지표 차트를 다시 그립니다.

코드를 찾은 것 같아 시작 부분에 삽입합니다.

 if (IsNewBar())
   {
     Print ( "Новый бар" );
    RefreshRates();
    WindowRedraw();

   }

// функция за кодом

 bool IsNewBar()

{

   static datetime BARflag = 0;

   datetime now = Time[0];

   if(BARflag < now)

   {

      BARflag = now;         

      return(1);

   }

   

   else

   {

      return(0);

   }

}


인쇄가 종료되고 그래프가 다시 그려지지 않습니다 =(

 
twiling1983 :

MT4 코드를 알려주세요. 새 막대 가 도착하면 지표 차트를 다시 그립니다.

코드를 찾은 것 같아 시작 부분에 삽입합니다.


인쇄가 종료되고 그래프가 다시 그려지지 않습니다 =(

아마도 RefreshRates와 WindowRedraw가 지표에 어떤 식으로든 영향을 미치지 않기 때문일 것입니다. 지표를 파헤쳐야 합니다.
 

현재 차트에서 무엇을 구매하고 무엇을 위해 구매하는지 결정하는 방법(러시아어로 비뚤어진, 죄송합니다). 예를 들어 EURUSD 차트에서 기준 통화 (구매 대상)는 EUR이고 견적 통화(구매 대상)는 USD입니다. 다음과 같이 정의할 수 있습니다.

 string first = SymbolInfoString ( Symbol (), SYMBOL_CURRENCY_BASE );
string second = SymbolInfoString ( Symbol (), SYMBOL_CURRENCY_PROFIT );

그러나 예를 들어 금은 어떻습니까? GOLD 차트에서 두 값은 모두 USD입니다. 그리고 우리가 USD로 금을 사는지 확인해야 합니다. 문자 이름 문자열을 구문 분석하는 것은 적절하지 않습니다.

 
Alexey Viktorov :
아마도 RefreshRates와 WindowRedraw가 지표에 어떤 식으로든 영향을 미치지 않기 때문일 것입니다. 지표를 파헤쳐야 합니다.

글쎄, 터미널에서 새로 고침 버튼을 누르면 모든 것이 다시 계산됩니다.

코드에서 동일한 버튼을 클릭하는 방법은 무엇입니까? =)

나에게는 이렇게 보인다

ChartSetSymbolPeriod(0,NULL, PERIOD_CURRENT );

 

배열에 대해 배우기 시작했습니다.

나는 arrays , 3 arrays = 0 buy, 1= Sell, 2= total buy and Sell Deals 가 있는 주문에 대한 함수를 작성했습니다.

그런 다음 구매 조건에 if (첫 번째 조건 && 배열 [0] == 0 )을 작성한 다음 구매를 엽니다.

판매를 위해 (첫 번째 조건 && 배열 [1]==0) 판매를 위해 엽니다.

그러나 테스터에서 오류가 발생하고 테스트가 중지됩니다. 무슨 문제가 있습니까? ( "배열 부족" 오류)

사유: