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

 
barabashkakvn :
표시기 코드 OnCalculate() 함수를 보십시오.

나는 이것을 이렇게 한다:

 int limit=rates_total-prev_calculated;
   double pr=close[ 0 ];
   //----
   if (rates_total-prev_calculated>=Period_)
      limit=limit-Period_;
       //----
   for ( int i=limit- 1 ;i>= 0 ;i--)
     {
       CopyBuffer (ma1Handle, 0 ,i, 1 ,ma1Val);
      ExtMapBuffer1[i]=ma1Val[ 0 ]-pr;
     }
아무것도 작동하지 않습니다. MQL4에서는 모든 것이 명확합니다. MQL5에 대해 잘 모릅니다. 아마도 가격을 얻으려면 일부 기능을 호출해야합니까?
 
forexman77 :

나는 이것을 이렇게 한다:

아무것도 작동하지 않습니다. MQL4에서는 모든 것이 명확합니다. MQL5에 대해 잘 모릅니다. 아마도 가격을 얻으려면 일부 기능을 호출해야합니까?

OnInit에 작성:

 //--- установим индексацию для буфера как в таймсерии 
ArraySetAsSeries (ma1Val, true ); 
 
forexman77 :

나는 이것을 이렇게 한다:

아무것도 작동하지 않습니다. MQL4에서는 모든 것이 명확합니다. MQL5에 대해 잘 모릅니다. 아마도 가격을 얻으려면 일부 기능을 호출해야합니까?

가격 기록에 액세스하려면 CopyRates ( CopyBuffer 와 유사)를 사용할 수 있습니다.

Ask, Bid 가격의 현재 값은 SymbolInfoTick 또는 SymbolInfoDouble 을 사용하여 얻을 수 있습니다( Spread 표시기 에서와 같이).

 
barabashkakvn :

OnInit에 작성:

자동화된 거래 :
가격 기록에 액세스하려면 CopyRates ( CopyBuffer 와 유사)를 사용할 수 있습니다. Ask, Bid 가격의 현재 값은 SymbolInfoTick 을 사용하여 얻을 수 있습니다.

아무것도 작동하지 않습니다. 전체 코드는 다음과 같습니다.

 #property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_label1   "BUY TP"
input int Period_= 34 ;
int ma1Handle;
double ma1Val[ 1 ];
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetIndexBuffer ( 0 ,ExtMapBuffer1, INDICATOR_DATA );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,Period_);
   ArraySetAsSeries (ExtMapBuffer1, true );
   ma1Handle= iMA ( _Symbol , _Period ,Period_, 0 , MODE_EMA , PRICE_CLOSE );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int limit=rates_total-prev_calculated;
   //----
   if (rates_total-prev_calculated>=Period_)
      limit=limit-Period_;
       //----
   for ( int i=limit- 1 ;i>= 0 ;i--)
     {
       MqlTick latest_price;       // Будет использоваться для текущих котировок
       if (! SymbolInfoTick ( _Symbol ,latest_price))
          {
           Alert ( "Ошибка получения последних котировок - ошибка:" , GetLastError (), "!!" ); return ( 0 );
          }
       double iclose=latest_price.bid;
       CopyBuffer (ma1Handle, 0 ,i, 1 ,ma1Val);
      ExtMapBuffer1[i]=iclose - ma1Val[ 0 ];
     }
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
forexman77 :

아무것도 작동하지 않습니다. 전체 코드는 다음과 같습니다.

글쎄요. 나는 무엇이든 할 수있다:

표시기가 작동합니다!

파일:
test.mq5  3 kb
 
Вbarabashkakvn :

글쎄요. 나는 무엇이든 할 수있다:

시각적으로 얼핏 보면 맞는 것 같습니다. 그러나 가격과 이동 평균의 차이를 다시 계산하면 완전히 다른 수치가 나옵니다.

EURUSD/1.36421-1.36168=0.00253을 확인했는데 표시기에 0.00157이 표시됩니다. 스크린샷을 첨부하고 있습니다.

 

안녕하세요.

KimIV가 MQL4 http://forum.mql4.com/ru/38949에 있었던 것처럼 MQL5 어딘가에 기성품 기능 코드가 있습니까?

Только "Полезные функции от KimIV". - MQL4 форум
  • www.mql5.com
Только "Полезные функции от KimIV". - MQL4 форум
 
forexman77 :

시각적으로 얼핏 보면 맞는 것 같습니다. 그러나 가격과 이동 평균의 차이를 다시 계산하면 완전히 다른 수치가 나옵니다.

EURUSD/1.36421-1.36168=0.00253을 확인했는데 표시기에 0.00157이 표시됩니다. 스크린샷을 첨부하고 있습니다.

그리고, 당신은 요청에서 더 정확해야 합니다. 이제 올바르게 계산됩니다.
파일:
test.mq5  3 kb
 
abeiks :

안녕하세요.

KimIV가 MQL4 http://forum.mql4.com/ru/38949에 있었던 것처럼 MQL5 어딘가에 기성품 기능 코드가 있습니까?

mql5는 기능 코드를 사용하지 않고 객체 라이브러리를 사용합니다. 함수는 연결하기 어렵지만 OOP에서는 더 쉽습니다. 필요한 라이브러리를 연결하고 객체를 만들고 필요한 메서드를 얻습니다. 알고리즘 언어의 함수와 유사합니다.
 
신호를 구독했습니다. 신호가 작동하려면 터미널이 시작되고 계정이 개설되어야 합니까?
사유: