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

 
Vitalii Ananev :
레벨은 표시기 설정 에서 수동으로 설정해야 합니다. 기본적으로 레벨 50은 없습니다. 위 사진에서 보여드렸어요.

해봤는데 안 뜨네요. 아마 다시 이해하지 못했을거야

 extern double RSI          = 10 ;
extern double RSI_uroven_1 = 70 ;
extern double RSI_uroven_2 = 30 ;
extern double RSI_uroven_3 = 50 ;
extern double Lots         = 0.01 ;
extern int     Slip         = 30 ;
extern int     Magic        = 125 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   int kolpos= 0 ;
   double rsi= 0 ,uroven70= 70 ,uroven30= 30 ,uroven50= 50 ;
   rsi= iRSI ( Symbol (), 0 , 10 , PRICE_CLOSE , 1 );
   for ( int pos= 0 ; pos< OrdersTotal (); pos++) 
     {
       OrderSelect (pos, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
         kolpos++;
     }
   if (kolpos== 0 )
     {
       if (rsi>uroven70) 
         OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 30 , 0 , 0 , "" ,Magic, 0 , clrGreen );
       if (rsi<uroven30) 
         OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 30 , 0 , 0 , "" ,Magic, 0 , clrRed );
     }
 }
 
Vitalii Ananev :

RSI는 오실레이터이며 추세를 나타내지 않습니다.

예를 들어 MA와 같은 다른 추세 표시기 를 추가하십시오.

무슨 말인지 이해는 하지만 이동 평균이 없으면 여전히 혼란스럽습니다.

나에게 가장 중요한 것은 논리적이고 기술적으로 알고리즘을 올바르게 작성하는 것입니다.

저는 그냥 열겠습니다: 30 미만 - 매도, 70 초과 - 매수.

 
edutak :

무슨 말인지 이해는 하지만 이동 평균이 없으면 여전히 혼란스럽습니다.

나에게 가장 중요한 것은 논리적이고 기술적으로 알고리즘을 올바르게 작성하는 것입니다.

저는 그냥 열겠습니다: 30 미만 - 매도, 70 초과 - 매수.

그런 다음 rsi가 50을 교차하면 하단에서 상단으로 구매, 상단에서 하단으로 판매하는 것이 좋습니다.

 void OnTick ()
  {
   int kolpos= 0 ;
   double rsi= 0 ,uroven70= 70 ,uroven30= 30 ,uroven50= 50 ;
   rsi= iRSI ( Symbol (), 0 , 10 , PRICE_CLOSE , 1 );
   rsi2= iRSI ( Symbol (), 0 , 10 , PRICE_CLOSE , 2 );
   for ( int pos= 0 ; pos< OrdersTotal (); pos++) 
     {
       OrderSelect (pos, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
         kolpos++;
     }
   if (kolpos== 0 )
     {
       if (rsi>=uroven50 && rsi2<uroven50) 
         OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 30 , 0 , 0 , "" ,Magic, 0 , clrGreen );
       if (rsi<=uroven50 && rsi2>uroven50) 
         OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 30 , 0 , 0 , "" ,Magic, 0 , clrRed );
     }
 }
 

그래서 그랬데. 바르게?

 extern double RSI          = 10 ;
extern double RSI_uroven_1 = 70 ;
extern double RSI_uroven_2 = 30 ;
extern double RSI_uroven_3 = 50 ;
extern double Lots         = 0.01 ;
extern int     Slip         = 30 ;
extern int     Magic        = 125 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   int kolpos= 0 ;
   double rsi= 0 ,uroven70=RSI_uroven_1,uroven30=RSI_uroven_2,uroven50=RSI_uroven_3;
   rsi= iRSI ( Symbol (), 0 , 10 , PRICE_CLOSE , 1 );
   for ( int pos= 0 ; pos< OrdersTotal (); pos++) 
     {
       OrderSelect (pos, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
         kolpos++;
     }
   if (kolpos== 0 )
     {
       if (rsi>RSI_uroven_1) 
         OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 30 , 0 , 0 , "" ,Magic, 0 , clrGreen );
       if (rsi<RSI_uroven_2) 
         OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 30 , 0 , 0 , "" ,Magic, 0 , clrRed );
     }
 }
 
Vitalii Ananev :

그런 다음 rsi가 50을 교차하면 하단에서 상단으로 구매, 상단에서 하단으로 판매하는 것이 좋습니다.

아니요, 다른 생각이 있습니다.
 
edutak :

그래서 그랬데. 바르게?

논리적 오류가 없습니다.

...

uroven70=RSI_uroven_1,uroven30=RSI_uroven_2,uroven50=RSI_uroven_3;

그러면 이 항목이 중복됩니다.

 
Vitalii Ananev :

논리적 오류가 없습니다.

...

그러면 이 항목이 중복됩니다.

감사합니다 바꿔서 계속 해보겠습니다.
 
edutak :
감사합니다 바꿔서 계속 해보겠습니다.
별말씀을요. 행운을 빕니다.
 
잠깐만, 그러면 외부 설정을 어떻게 꺼낼까요?
 
edutak :
잠깐만, 그러면 외부 설정을 어떻게 꺼낼까요?

외부 설정에서 무엇을 꺼낼까요?

최적화 가능성에 대한 레벨 설정을 의미하고 사용자가 변경하면 이미 설정되어 있습니다.

 extern double RSI_uroven_1 = 70 ;
extern double RSI_uroven_2 = 30 ;
extern double RSI_uroven_3 = 50 ;
사유: