[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 18

 
Figar0 >> :

전체 코드를 게시하십시오. 아직 여기에 손절매의 냄새가 없습니다...

손절매에 관한 것이 아니라 가격이 MA에 닿는 즉시 포지션이 닫힐 것입니다.

 
Novice писал(а) >>

손절매에 관한 것이 아니라 가격이 MA에 닿는 즉시 포지션이 닫힐 것입니다.

그래서 당신은 손절매에 대해 썼습니다 ...) 어쨌든 코드가 없으면 작동하지 않는 이유를 이해할 수 없으며 배치 된 부분은 전혀 유익하지 않습니다.

 
Figar0 >> :

그래서 당신은 손절매에 대해 썼습니다 ...) 어쨌든 코드가 없으면 작동하지 않는 이유를 이해할 수 없으며 배치 된 부분은 전혀 유익하지 않습니다.

내가 매우 부정확했을 것입니다. 죄송합니다. MA 자체가 손절매의 역할을 해야 한다는 뜻이었습니다. 즉,

초보자 >> :

... 가격이 MA에 닿자마자 포지션이 청산되었습니다.


그리고 코드는 매우 원시적입니다.


         Ticket = OrderTicket ( ) ;                  
         Tip   = OrderType ( ) ;                    
         Lot   = OrderLots ( ) ;                    

    MA2C = iMA ( NULL , 0 , Period_MA2 , 0 , MODE_SMA , PRICE_CLOSE , 0 ) ; //Есть две MA с разным периодом.
    MA3C = iMA ( NULL , 0 , Period_MA3 , 0 , MODE_SMA , PRICE_CLOSE , 0 ) ; //И вот с такими параметрами.
     
     //Так же есть условия, при которых по идее должны срабатывать 
     // функции закрытия ордеров.
     
     RefreshRates ( ) ;                   
     if ( Tip = = 0 & & Bid = = MA2C )          //Обозначение типа ордера и условия закрытия
     {
      CloseBuy = true ;                                // Закрыть Buy
     }
     RefreshRates ( ) ;
     if ( Tip = = 0 & & Bid = = MA3C )
     {
      CloseBuy = true ;                                // Закрыть Buy
     }
     RefreshRates ( ) ;
     if ( Tip = = 1 & & Ask = = MA2C )
     {
      CloseSell = true ;                                // Закрыть Sell
     }
     RefreshRates ( ) ;
     if ( Tip = = 1 & & Ask = = MA3C )
     {
      CloseSell = true ;                                // Закрыть Sell
     }

         // Закрытие ордеров
   while ( true )                                    // Цикл закрытия орд.
     {
       if ( Tip = = 0 & & CloseBuy = = true )                  // Открыт ордер Buy..
         {                                        //и есть критерий закр
         Alert ( "Попытка закрыть Buy " , Ticket , ". Ожидание ответа.." ) ;
         RefreshRates ( ) ;                          // Обновление данных
         ALERT = OrderClose ( Ticket , Lot , Bid , 3 , Blue ) ;        // Закрытие Buy
         if ( ALERT = = true )                          // Получилось :)
           {
             Alert ( "Закрыт ордер Buy " , Ticket ) ;
             break ;                                // Выход из цикла закр
           }
         if ( Fun_Error ( GetLastError ( ) ) = = 1 )        // Обработка ошибок
             continue ;                            // Повторная попытка
         return ;                                  // Выход из start()
         }
         if ( Tip = = 1 & & CloseSell = = true )                  // Открыт ордер Sell..
         {                                        // и есть критерий закр
         Alert ( "Попытка закрыть Sell " , Ticket , ". Ожидание ответа.." ) ;
         RefreshRates ( ) ;                          // Обновление данных
         ALERT = OrderClose ( Ticket , Lot , Ask , 3 , Red ) ;        // Закрытие Sell
         if ( ALERT = = true )                          // Получилось :)
           {
             Alert ( "Закрыт ордер Sell " , Ticket ) ;
             break ;                                // Выход из цикла закр
           }
         if ( Fun_Error ( GetLastError ( ) ) = = 1 )        // Обработка ошибок
             continue ;                            // Повторная попытка
         return ;                                  // Выход из start()
         }
       break ;                                      // Выход из while
     }

이미 지금은 4가지 조건을 2로 변경할 수 있다고 생각합니다.


     RefreshRates ( ) ;
     if ( Tip = = 0 & & Bid = = MA2C | | Tip = = 0 & & Bid = = MA3C )
     {
      CloseBuy = true ;                                // Критерий закр. Buy
     }
     RefreshRates ( ) ;
     if ( Tip = = 1 & & Ask = = MA2C | | Tip = = 1 & & Ask = = MA3C )
     {
      CloseSell = true ;                                // Критерий закр. Sell
     }
 
     RefreshRates ( ) ;
     if ( Tip = = 0 & & ( Bid = = MA2C   | | Bid = = MA3C ) )
     {
      CloseBuy = true ;                                // Критерий закр. Buy
     }
     RefreshRates ( ) ;
     if ( Tip = = 1 & & ( Ask = = MA2C | |    Ask = = MA3C ) )
     {
      CloseSell = true ;                                // Критерий закр. Sell
     }

그럼 그렇군요) 어쨌든 미친 조각이지만, 차들은 입찰 가격으로 만들어지고, 이렇게 비교하고... 글쎄요, 잘 모르겠습니다.

코드에 무언가가 있는데 OrderSelect 가 표시되지 않습니까?

 

교과서에서 표준입니다.


Symb = Symbol ( ) ;                                // Название фин.инстр.
   Total = 0 ;                                      // Количество ордеров
   for ( int i = 1 ; i < = OrdersTotal ( ) ; i + + )            // Цикл перебора ордер
     {
       if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) // Если есть следующий
         {                                        // Анализ ордеров:
         if ( OrderSymbol ( ) ! = Symb ) continue ;        // Не наш фин. инструм
         if ( OrderType ( ) > 1 )                      // Попался отложенный
           {
             Alert ( "Обнаружен отложенный ордер. Эксперт не работает." ) ;
             return ;                              // Выход из start()
           }
         Total + + ;                                // Счётчик рыночн. орд
         if ( Total > 1 )                            // Не более одного орд
           {
             Alert ( "Несколько рыночных ордеров. Эксперт не работает." ) ;
             return ;                              // Выход из start()
           }
         Ticket = OrderTicket ( ) ;                    // Номер выбранн. орд.
         Tip   = OrderType ( ) ;                      // Тип выбранного орд.
         Lot   = OrderLots ( ) ;                      // Количество лотов
         }

//И далее как выше...
시각화 모드에서 테스트 할 때 MA에서 주문이 마감되지 않기 때문에 이것이 원칙적으로 가능한지 이해하는 것이 중요합니다.
 
Novice писал(а) >>

시각화 모드에서 테스트 할 때 MA에서 주문이 마감되지 않기 때문에 이것이 원칙적으로 가능한지 이해하는 것이 중요합니다.

원칙적으로는 가능합니다. 시스템에 한 번에 주문만 있습니까?

평등을 비교할 때 Bid/Ask 가격과 MA 값을 정상화하려고 노력하십시오. 누구에게나 필요합니다...

각 코드 조각은 틱으로 선택해야 합니다. 거기에 성배가 있습니까?) 즉시 전문가를 선택하는 것이 좋습니다. 오래전에 수정했을텐데

 
Figar0 >> :

원칙적으로는 가능합니다. 시스템에 한 번에 주문만 있습니까?

평등을 비교할 때 Bid/Ask 가격과 MA 값을 정규화하십시오 . 누구에게나 필요합니다...

각 코드 조각은 틱으로 선택해야 합니다. 거기에 성배가 있습니까?) 즉시 전문가를 선택하는 것이 좋습니다. 오래전에 수정했을텐데

그 후로 머리가 핑 돌기 시작...

아니오) 다른 은하계와 마찬가지로 성배 이전에는 TS를 구현하고 개선하려고 시도합니다.


게시물의 모든 코드를 게시 할 수 없었습니다. 첨부합니다.

파일:
g.ei.vn.gl..mq4  12 kb
 
Novice писал(а) >>

그 후로 머리가 핑 돌기 시작...

아니요) 다른 은하계와 마찬가지로 성배 이전에는 TS를 구현하고 개선하려는 시도만 있습니다.

게시물의 모든 코드를 게시 할 수 없었습니다. 첨부합니다.

글쎄, 물론 그것은 미친 짓입니다) 그러나 어떻게 든 인쇄에서 작동합니다.

부지의 증가를 제거한 유일한 것. 주문이 마감되지 않았다고 했습니까?

 
그들은 가격이 그들에게 닿는 바로 그 순간에 MA에서 닫히지 않습니다. MA2C 및 MA3C에서. 미쳤어. 네, 아직 끝내지 못했습니다.


처럼...?

Figar0 >> :

...동등한지 비교할 때 Bid/Ask 가격과 MA 값을 정규화...

정확히 어떻게 정규화하는지 잘 모르겠습니다... NormalizeDouble(Ask, Digits) ?

 

문제는 관련이 있습니다. MA 가격에 도달했을 때 주문을 즉시 강제 종료하는 방법에 대해 여전히 생각합니다.


컴파일 중 정규화 후 어떤 이유에서인지 코드에서 전혀 영향을 받지 않은 부분에서 오류가 발생했습니다.