[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 123

 
여기에 도움을 주셔서 감사합니다. OrdersTotal() 대신 OrdersHistoryTotal()을 넣었습니다 . 벌었다.
 

저보다 mql4를 더 잘 아시는 분들은 도와주세요. 3개의 질문이 있습니다.

1. 먼저, 이중 상수로. 잘 알려진 iMa, 기호, 이동 평균이 있습니다. / 질문은 다음과 같습니다. 잘못된 값 표시

예시:

 extern string   MA1= "" ;
extern string   MA2= "" ;
extern string   MA3= "" ;
string com;


double MA1 = iMA ( NULL , PERIOD_M15 , 9 , 0 , 0 , 0 );
double MA2 = iMA ( NULL , PERIOD_M15 , 15 , 0 , 0 , 0 );
double MA3 = iMA ( NULL , PERIOD_M15 , 21 , 0 , 0 , 0 );

if (MA1>MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 ) com= "значение1" ;
if (MA1<MA2 && MA1==MA2 && MA1<MA3 && MA3!=MA3 ) com= "значение2" ;

따라서 값은 항상 = value1이 됩니다. 코드는 != (같지 않음) 이해를 완고하게 거부합니다.

2. 질문/열기 검색 닫기/

프로그램에서 원하지만 작동하지 않는 것.

1. 조건 확인(true ; false)

2. 그러한 주문이 있으면 열지 않고, 없으면 열지 않습니다. 조건부 OrderComment()

3. 이벤트 X 또는 Y가 발생 했는지 확인 하십시오. X-(예: 다른 iMA1>iMA2 신호, Y-다른 iMA2>iMA3 신호)

이것이 내가하는 방법이지만 작동하지 않습니다.

 if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)
{
   for ( int i= 1 ;i<= OrdersTotal (); i++)       
       {
         if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES)== true )
           {
             if (OrderComment()== "значение1" ) return ( 0 );
             else
            {
             OrderSend ( Symbol (),OP_SELL, LOT, NormalizeDouble (Bid, Digits ), 2 , 0 , 0 ,com,Magic, 0 ,Red);
            }
           }
       } 
}

그리고 닫는 방법은 삽입 위치를 이해하지 못합니다.

3. shift에 대한 질문(int shift)

두 번째 iMA 그룹에서는 상대 전류 막대를 3) 뒤로 이동하여 위에서 설명한 신호가 나타날 때 각 막대에서 반복되는 주문이 열리지 않도록 합니다. 하지만 어떤 이유에서인지 움직이지 않습니다.

 double MA1 = iMA ( NULL , PERIOD_M15 , 9 , 0 , 0 , 0 );
double MA2 = iMA ( NULL , PERIOD_M15 , 15 , 0 , 0 , 0 );
double MA3 = iMA ( NULL , PERIOD_M15 , 21 , 0 , 0 , 0 );

double MA4 = iMA ( NULL , PERIOD_M15 , 9 , 0 , 0 , 3 );
double MA5 = iMA ( NULL , PERIOD_M15 , 15 , 0 , 0 , 3 );
double MA6 = iMA ( NULL , PERIOD_M15 , 21 , 0 , 0 , 3 );

누구보다 지식을 도와주세요. 미리 감사드립니다. 또는 인터넷에 유사한 코드 구현이 있는 링크.

 
dertop :

저보다 mql4를 더 잘 아시는 분들은 도와주세요. 3개의 질문이 있습니다.

1. 먼저, 이중 상수로.

2. 어떻게 닫아야 하는지, 어디에 넣어야 하는지 도통 모르겠습니다.

3. shift에 대한 질문(int shift)

1. https://www.mql5.com/ru/articles/1561

2. if (종료 조건) OrderClose(...)

3. 이 변위가 정확히 무엇이며 누구를 대체하는지 확인하십시오.
 
ilunga :

1. https://www.mql5.com/ru/articles/1561

2. if (종료 조건) OrderClose(...)

3. 이 변위가 정확히 무엇이며 누구를 대체하는지 확인하십시오.


빠른 답변 감사합니다.

1. 네, 알겠습니다. 파헤쳐보겠습니다.(고마워요)

2. if(닫는 조건) OrderClose(...)에 따르면 (이것 없이 이해가 가는데, 설 자리가 없다) 노아는 만약, 무엇을 위해, 왜 ....

틀리면 수정....

 if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for ( int i= 1 ;i<= OrdersTotal (); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
         if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES)== true )
           {
             if (OrderComment()== "значение1" ) return ( 0 );                                             // если орден найден то ничего не делаем
             else
            {
             OrderSend ( Symbol (),OP_SELL, LOT, NormalizeDouble (Bid, Digits ), 2 , 0 , 0 ,com,Magic, 0 ,Red);   // а вот тут проблемы кто за чем идёт и куда вставить условие закрытие отдельно за телом всего условия (ma1;ma2 и тд), или там где OrderSelect()
            }
           }
       } 
}

3. 표시기 버퍼 에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 이전만큼 이동). mql4 도움말에서

 
dertop :


이렇게 빠른 답변을 주셔서 대단히 감사합니다.

2. if(닫는 조건) OrderClose(...)에 따르면 (이것 없이 이해가 가는데, 설 자리가 없다) 노아는 만약, 무엇을 위해, 왜 ....

틀리면 수정....


 if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for ( int i= 1 ;i<= OrdersTotal (); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
         if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES)== true )
           {
             if (OrderComment()== "значение1" ) return ( 0 );                                             // если орден найден то ничего не делаем
             else
            {
             OrderSend ( Symbol (),OP_SELL, LOT, NormalizeDouble (Bid, Digits ), 2 , 0 , 0 ,com,Magic, 0 ,Red);   // а вот тут пока написано следующее: для каждого из ордеров у которого мы сюда зашли мы поставим еще один ордер
            }
           }
       } 
}
 
ilunga :

죄송합니다. 조건에 이미 주어진 경우 불평등을 확인하는 이유는 무엇입니까! 이렇게 하면 조건 읽기와 실행 속도가 느려집니다!

 if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3) //MA1!=MA2 && и && MA2!=MA3 не нужны, т.к. в предыдущих сравнениях
                                                           //равенство ухе исключено! Так что нужно так:
if (MA1>MA2 && MA1<MA3 && MA2>MA3)
 
borilunad :

죄송합니다. 조건에 이미 주어진 경우 불평등을 확인하는 이유는 무엇입니까! 이렇게 하면 조건 읽기와 실행 속도가 느려집니다!


여기 뭔가 이상해

 if (MA1>MA2 && MA1<MA3 && MA2>MA3)

MA1>MA2 및 MA2>MA3 다음 MA1<MA3

게다가 충분히

 if (MA1>MA2 && MA2>MA3)
 
borilunad :

죄송합니다. 조건에 이미 주어진 경우 불평등을 확인하는 이유는 무엇입니까! 이렇게 하면 조건 읽기와 실행 속도가 느려집니다!


예, 죄송합니다. 여기에 약간을 추가하지 않았습니다. 처음에는 이것에 중요성을 부여하지 않았습니다. 이 계산은 4 MA에 대해 이루어집니다. 그리고 MA1>MA2이고 이때 MA3=MA4인 경우도 있습니다.

 if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2<MA3 && MA2!=MA3 && MA3<MA4 && MA3!=MA4)                                         // если true то заходим в тело цикла...
{
   for ( int i= 1 ;i<= OrdersTotal (); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
         if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES)== true )
           {
             if (OrderComment()== "значение1" ) return ( 0 );                                             // если орден найден то ничего не делаем
                 else
                {
                 if (OrderComment()!= "значение1" )                                                         // если такого ордера нету
                   {
                   OrderSend ( Symbol (),OP_SELL, LOT, NormalizeDouble (Bid, Digits ), 2 , 0 , 0 ,com,Magic, 0 ,Red);   // тогда открываем
                   }
                }
         if (MA1<MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 && MA3>MA4 && MA3!=MA4)                           // если true новый сигнал
             {
            OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Ask, Digits ), 3 , CLR_NONE );               // тогда закрываем
             }

           }
       } 
}

이 같은?????

 
Vinin :


여기 뭔가 이상해

MA1>MA2 및 MA2>MA3 다음 MA1<MA3


예, 처음으로 포럼에 글을 썼을 때 혼란을 드려 죄송합니다. 먼저 복사 붙여넣기 하고 펜으로 결정하고 헷갈렸는데... 위의 예에서는 다 맞습니다..

MA1>MA2 및 MA1<MA3 및 MA3<MA4

[Deleted]  

안녕하세요.

표시기 변경 을 도와주세요.

표준 피벗이 있어서 표준 공식에 따라 레벨을 계산하지만 내가 직접 입력한 H, L, C 데이터에 따라 레벨을 계산하는 지표를 갖고 싶습니다.

답변해 주시는 모든 분들께 감사드립니다.