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

 
Alexey Viktorov :

나는 그 논쟁들을 읽었다. 그러나 분쟁은 없었지만 설명을 이해하려는 열망과 터미널의 오작동을 증명하려는 시도가 없었습니다. 당신의 말은 거기에 뒷받침되지 않았습니다. 당신은 스크린샷을 찍고 당신의 생각을 명확하게 설명하기에는 너무 게으릅니다 .

무슨 스킨?! 코드를 제공하면 MT4에서 실행되고 MT5에서 오류와 함께 충돌합니다. 오류 유형은 코드에 작성되며 주석도 함께 표시됩니다.
 
comp :
무슨 스킨?! 코드를 제공하면 MT4에서 실행되고 MT5에서 오류와 함께 충돌합니다. 오류 유형은 코드에 작성되며 주석도 함께 표시됩니다.

글쎄, 알았어. 이것은 당신의 관점입니다. 당신은 당신의 관점을 이해하기 위해 모든 사람이 여전히 몇 가지 조치를 취해야한다고 생각하지만 당신과 논쟁하지 않는 것이 더 쉽다고 생각하지 않으며 너무 요구하는 것을 금지하는 것이 실제로 더 쉽다고 생각합니다.

다행히 나에게는 금지할 권리가 없으므로 이 대화를 중단합니다.

 
내가 주문을 열지 않는 이유를 알려주세요
 void OnTick ()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi= iRSI ( Symbol (), 0 ,RSI, 0 , 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>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend ( Symbol (), OP_BUY ,Lot, Ask , 30 , 0 , 0 , "" ,Magic, 0 , clrAliceBlue );
         OrderSend ( Symbol (), OP_SELL ,Lot, Bid , 30 , 0 , 0 , "" ,Magic, 0 , clrRed );

        }
     }
  }
쯔야.
 
edutak :
주문이 열리지 않는 이유를 알려주세요.

최소 4개의 오류가 있습니다.

'RSI_uroven1' - 선언되지 않은 식별자 32.mq4 열셋 12

'RSI_uroven2' - 선언되지 않은 식별자 32.mq4 십사 12

'RSI' - 선언되지 않은 식별자 32.mq4 열여섯 24

'pos' - 이미 정의된 변수 32.mq4 십구 12

 //+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
int RSI= 23 ;
int RSI_uroven1= 100 ;
int RSI_uroven2= 100 ;
int Magic= 777 ;
double Lot= 0.1 ;
void OnTick ()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi= iRSI ( Symbol (), 0 ,RSI, 0 , 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>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend ( Symbol (), OP_BUY , NormalizeDouble (Lot, 2 ), Ask , 30 , 0 , 0 , "" ,Magic, 0 , clrAliceBlue );
         OrderSend ( Symbol (), OP_SELL , NormalizeDouble (Lot, 2 ), Bid , 30 , 0 , 0 , "" ,Magic, 0 , clrRed );

        }
     }
  }
//+------------------------------------------------------------------+

все октрывает

1	2015.01.02 09:00	buy	1	0.10	120.42	0.00	0.00	0.00	10000.00
2	2015.01.02 09:00	sell	2	0.10	120.39	0.00	0.00	0.00	10000.00
3	2016.04.04 13:08	close at stop	2	0.10	111.66	0.00	0.00	3.26	10003.26
4	2016.04.04 13:08	close at stop	1	0.10	111.63	0.00	0.00	-11.85	9991.41

 
edutak :
주문이 열리지 않는 이유를 알려주세요.

첫째, 주문 수를 세는 정상적인 기능을 제공했는데 여전히 잘못된 주문을 사용하고 있습니다.

둘째, if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2) 조건은 서로 모순됩니다.

 
Vitalii Ananev :

첫째, 주문 수를 세는 정상적인 기능을 제공했는데 여전히 잘못된 주문을 사용하고 있습니다.

둘째, if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2) 조건은 서로 모순됩니다.

나는 일반 기능을 사용할 것입니다. 이것은 테스터를 위한 초안 버전입니다. 저는 블록 단위로 복사하기 때문에 더 빠릅니다.

어떤 수준의 RSI 교차점에서 주문이 열리고 다른 수준의 교차점에서 주문이 닫히고 다른 단계가 즉시 열리면 모순이 없습니다.

아니면 있습니까?

 
Vladislav Andruschenko :

최소 4개의 오류가 있습니다.

'RSI_uroven1' - 선언되지 않은 식별자 32.mq4 열셋 12

'RSI_uroven2' - 선언되지 않은 식별자 32.mq4 십사 12

'RSI' - 선언되지 않은 식별자 32.mq4 열여섯 24

'pos' - 이미 정의된 변수 32.mq4 십구 12


덕분에 작동합니다.
 
edutak :

나는 일반 기능을 사용할 것입니다. 이것은 테스터를 위한 초안 버전입니다. 저는 블록 단위로 복사하기 때문에 더 빠릅니다.

어떤 수준의 RSI 교차점에서 주문이 열리고 다른 수준의 교차점에서 주문이 닫히고 다른 단계가 즉시 열리면 모순이 없습니다.

아니면 있습니까?

스스로 생각하십시오. uroven1 = 80이라고 합시다. rsi = 30; 조건 rsi > 80 또는 rsi < 80은 (30 > 80 [false] 또는 30< 80[true] ) 이것이 자연에서 발생하지 않음을 나타냅니다. 조건이 true 이지만 OR 연산자를 사용하므로 실제로는 의미가 없습니다.

표현식의 두 번째 부분은 uroven2 = 20이라고 가정해 보겠습니다. rsi = 30(30 > 20 [true] 또는 30< 20[false] )은 동일합니다.

 

표현식의 두 번째 부분은 uroven2 = 20이라고 가정해 보겠습니다. rsi = 30(30 > 20 [true] 또는 30< 20[false] )은 동일합니다.

내가 쓸 때 또는, 나는 어떤 수준의 교차점을 의미합니다. 주문이 열립니다. 두 번째 조건 30<20[false]가 오면 그 순간 이전 주문이 닫히고 참이 됩니다.

내가 올바르게 이해한다면.

 
당신이 옳다면 두 번째 RSI를 추가하겠습니다.
사유: