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

 
lottamer :


이 모드를 쓰지 않았습니다.

도서관에서 준비했습니다.

그래서 나는 그것을 청소할 수 없습니다. 가장 중요한 것은 100% 작동한다는 것입니다.

그래서 그 안의 매개변수가 최적화되지 않은 것입니다. 그것이 바로 문제입니다.....

근본적인 실수는 없습니다!

나머지 코드는 작동합니다.

알고리즘에 조건을 입력합니다.

- 구입

-수정하다

- 닫다

--------------------------

MODIFY 순서 내에서 매개변수를 최적화하려고 시도합니다. 멈추고 취하다

글쎄, 일단 노동자, 그리고 더 나아가 100%라면, 그것은 그것에 아무런 문제가 없다는 것을 의미합니다. 그렇다면 왜 오류를 찾으십니까? - 그 사람에 관한 것이 아니라 그게 요점입니다! - 오류를 찾고 있다면 100% 확신할 수 없습니다. 따라서 문제는 더 이상 코드가 아니라 평가 기준에 있습니다. 그들은 또한 당신을 혼란스럽게합니다. (당신이 이것을 처음 시작했습니다 :))) 나는 약간의 기름을 추가했습니다 ...)

여기에 제시된 것 - 나는 그것을 무엇이라고 불러야할지조차 모릅니다 ... 아마도 - 하나의 작업이 함수의 크기로 부풀어 올랐습니다. 대부분의 프로그램에서 이러한 응용 프로그램은 최적이 아닙니다. 단일 블록에서 다른 것과 함께 이동합니다. - 하지만. 조건이 다를 수 있습니다. 하지만 여기서 최적화할 것은 아무것도 없다는 뜻입니다... 왜냐하면. 그것은 단지 행동입니다.

 
lottamer :

글쎄, 봐

내가 지금 모든 것을 되돌려준다면, 즉. 외부 매개변수 STOP AND TAKE를 제거하고 함수 내에서 대신 숫자를 쓰면 10주 동안 매주 실행한 어드바이저가 명확한 결과를 보여줍니다. 필요한 작업을 정확히 수행합니다. 거래 후 육안으로 확인된 거래.

그리고 수동으로 중지를 변경하고 매개 변수를 사용하면 모든 것이 작동하고 약간 다른 결과가 나타납니다(이는 자연스러운 현상입니다)

이제 왜 이러한 매개변수를 수정자 외부에 배치할 때 옵티마이저가 이를 중요하지 않은 것으로 간주합니까?

그래서 저는 이것에 대해 정확히 이야기하고 있으며 문제는 이 기능이 아닌 다른 곳에 있을 가능성이 가장 높다는 것을 말씀드리고자 합니다. 그래서 당신은 여전히 혼란스러워합니다. 아마도 이러한 SL과 TP는 어떻게 든 교차하는 다른 장소에서 사용되거나 다른 것입니다 ... 우리는 추측 할 수 있습니다. - 그렇기 때문에 전체 코드를 살펴봐야 합니다. 그리고 아무도 맹목적으로 당신을 도울 수 없습니다. 여기에는 마법사가 없습니다.

보고, 질문하고, 원인을 식별하는 데 필요한 정보의 일부를 보고하지 않습니다(노하우를 합리적으로 숨김). - 포함된 예와 같습니다. - 그러나 이 경우 어떻게 도울 수 있습니까? - 답: 안 돼요. 모든 도움은 의미가 없습니다. 그리고 힘도 필요합니다.

 
Chiripaha :

글쎄, 일단 노동자, 그리고 훨씬 더 100 %는 그것에 문제가 없다는 것을 의미합니다. 그렇다면 왜 오류를 찾으십니까? - 그 사람에 관한 것이 아니라 그게 요점입니다! - 오류를 찾고 있다면 100% 확신할 수 없습니다. 따라서 문제는 더 이상 코드가 아니라 평가 기준에 있습니다. 그들은 또한 당신을 혼란스럽게합니다. (당신이 이것을 처음 시작했습니다 :))) 나는 약간의 기름을 추가했습니다 ...)

여기에 제시된 것 - 나는 그것을 무엇이라고 불러야할지조차 모릅니다 ... 아마도 - 하나의 작업이 함수의 크기로 부풀어 올랐습니다. 대부분의 프로그램에서 이러한 응용 프로그램은 최적이 아닙니다. 단일 블록에서 다른 것과 함께 이동합니다. - 하지만. 조건이 다를 수 있습니다. 하지만 여기서 최적화할 것은 아무것도 없다는 뜻입니다... 왜냐하면. 그것은 단지 행동입니다.

나는 그것을보고 있습니다. 왜냐하면 우리는 단지 그것을 변경했을뿐이고 매개 변수가 최적화되어 있기 때문입니다.

어떻게 최적화 할 것이 없습니까? 정지 및 목표 크기가 최적화되었습니다!

 
Chiripaha :

그래서 저는 이것에 대해 정확히 이야기하고 있으며 문제는 이 기능이 아닌 다른 곳에 있을 가능성이 가장 높다는 것을 말씀드리고자 합니다. 그래서 당신은 여전히 혼란스러워합니다. 아마도 이러한 SL과 TP는 어떻게 든 교차하는 다른 장소에서 사용되거나 다른 것입니다 ... 우리는 추측 할 수 있습니다. - 그렇기 때문에 전체 코드를 살펴봐야 합니다. 그리고 아무도 맹목적으로 당신을 도울 수 없습니다. 여기에는 마법사가 없습니다.

보고, 질문하고, 원인을 식별하는 데 필요한 정보의 일부를 보고하지 않습니다(노하우를 합리적으로 숨김). - 포함된 예와 같습니다. - 그러나 이 경우 어떻게 도울 수 있습니까? - 답: 안 돼요. 모든 도움은 의미가 없습니다. 그리고 힘도 필요합니다.

알겠어요...

쉬고 생각해야지...

바라보다....

어딘지 알 것 같기도 하고...

 
lottamer :

나는 그것을보고 있습니다. 왜냐하면 우리는 그것을 변경했을뿐이고 매개 변수가 최적화되어 있기 때문입니다.

어떻게 최적화 할 것이 없습니까? 정지 및 목표 크기가 최적화되었습니다!

:)))))) 최적화 방법은 무엇입니까? 순서 수정? - 방금 말씀하신 것이 아닙니다.

그들은 당신이 안전하게 숨기는 프로그램, 그 조건과 관련하여 최적화되어야 합니다. 그리고 단일 작업과 관련하여 이것은 어떤 식으로든 최적화될 수 없습니다.

이 경우 개발자는 이러한 점을 스스로 결정하기만 하면 됩니다. 우리 모두는 이것을 겪습니다. 저를 믿으십시오. :)) 그리고 나와 다른 동료들. 도움을 요청하고 숨길 수 없습니다. 그런 다음 공개해야합니다.이 경우 공개해야합니다. 왜냐하면. 공개 포럼 - 그들의 지도.
 
Chiripaha :

:)))))) 최적화 방법은 무엇입니까? 순서 수정? - 방금 말씀하신 것이 아닙니다.

그들은 당신이 안전하게 숨기는 프로그램, 그 조건과 관련하여 최적화되어야 합니다. 그리고 단일 작업과 관련하여 이것은 어떤 식으로든 최적화될 수 없습니다.

이 경우 개발자는 이러한 점을 스스로 결정하기만 하면 됩니다. 우리 모두는 이것을 겪습니다. 저를 믿으십시오. :)) 그리고 나와 다른 동료들. 도움을 요청하고 숨길 수 없습니다. 그런 다음 공개해야합니다.이 경우 공개해야합니다. 왜냐하면. 공개 포럼, 그들의 지도.

이제 모든 코드를 준비하고 보여줄 것입니다 .......
 

코드는 다음과 같습니다.

페어 EURUSD

 //+------------------------------------------------------------------+
//|                                                           33.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#include <WinUser32.mqh>
#include <b-Positions.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

extern    int   STOP = 100 ; 
extern    int   TAKE = 200 ;

double   Ma_1, Ma_2,  m2, m3; // m2 и m3 - это маркеры



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
Ma_1= iMA ( NULL , PERIOD_M15 , 20 , 0 , MODE_SMA , PRICE_CLOSE , 1 ) ;

Ma_2= iMA ( NULL , PERIOD_M15 , 100 , 0 , MODE_SMA , PRICE_CLOSE , 1 ) ;





//=============================BUY_CONDITIONS=============================================
    

if (Ma_1>Ma_2 && m2== 0 )     {My_close();  My_buy ();  My_modify();  m2= 1 ;   }   // закрыть если висят открытые позы   
                                                                                                   // и открыть новую
//=============================SELL_CONDITIONS=============================================
 
if (Ma_1<Ma_2 && m3== 0 )     {My_close();  My_sell ();  My_modify();  m3= 1 ;  }    
 
//======================================

if   ( OrdersTotal ()== 0 && (m2== 1 || m3== 1 )) {m2= 0 ; m3= 0 ;}   // обнуляет маркеры при закрытии позиций,
                                                           // что дает возможность открывать снова
//==============переход в безубыток ========================
   
OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES);
   
if   (OrderProfit()> 0.5 )  {My_modify_close_zero ();}


return ( 0 );
  }

//============================функция  ПРОДАТЬ==============================================

int My_sell()
{
     OrderSend ( Symbol ( ), OP_SELL,   0.01 ,Bid, 0 , 0 , 0 , NULL , 0 , 0 , CLR_NONE );

}
return ;

///==================================КУПИТЬ==========================================
int My_buy ()
{
     OrderSend ( Symbol ( ), OP_BUY, 0.01 ,Ask, 0 , 0 , 0 , NULL , 0 , 0 , CLR_NONE );
}
return ;


//+---------------------МОДИФИЦИРОВАТЬ сделку сразу по открытии---------------------------------------------+


int My_modify()
 {
   bool    result;
   double take_profit,stop_loss,point;
   int     cmd,total,error;
//----
   total= OrdersTotal ();
   point=MarketInfo( Symbol (),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
       if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         //---- buy or sell orders are considered
         if (cmd==OP_BUY || cmd==OP_SELL)
           {
             //---- modify first market order
             while ( true )
              {
               if (cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point;
               else             stop_loss=OrderOpenPrice()+STOP*point;
               
                 if (cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point;
                           else take_profit=OrderOpenPrice()-TAKE*point;
               
               
               result=OrderModify(OrderTicket(), 0 ,stop_loss, take_profit, 0 , CLR_NONE );
               if (result!=TRUE) { error= GetLastError (); Print ( "LastError = " ,error); }
               else error= 0 ;
               if (error== 135 ) RefreshRates();
               else break ;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//            break;
           }
        }
       else { Print ( "Error when order select " , GetLastError ()); }
//     }

   return ( 0 );
  }
  
  
//==============================выставить стопы в безубыток============================================================
int My_modify_close_zero ()
{
   bool    result;
   double stop_loss,point;
   int     cmd,total,error;
//----
   total= OrdersTotal ();
   point=MarketInfo( Symbol (),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
       if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         
         //---- buy or sell orders are considered
         if (cmd==OP_BUY || cmd==OP_SELL)
           {
             //---- modify first market order
             while ( true )
              {
               if (cmd==OP_BUY) stop_loss=OrderOpenPrice();
               else             stop_loss=OrderOpenPrice();
               
               result=OrderModify(OrderTicket(),OrderOpenPrice(),stop_loss,OrderTakeProfit(), 0 , CLR_NONE );
               if (result!=TRUE) { error= GetLastError (); Print ( "LastError = " ,error); }
               else error= 0 ;
               if (error== 135 ) RefreshRates();
               else break ;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//             break;
           }
        }
       else { Print ( "Error when order select " , GetLastError ()); }
//     }
//----
   return ( 0 );
  }

  
//=================ЗАКРЫТЬ СДЕЛКУ=======================================================
int My_close()
  {
   bool    result;
   double price;
   int     cmd,error;
//----
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
       //---- first order is buy or sell
       if (cmd==OP_BUY || cmd==OP_SELL)
        {
         while ( true )
           {
             if (cmd==OP_BUY) price=Bid;
             else             price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price, 3 , CLR_NONE );
             if (result!=TRUE) { error= GetLastError (); Print ( "LastError = " ,error); }
             else error= 0 ;
             if (error== 135 ) RefreshRates();
             else break ;
           }
        }
     }
   else Print ( "Error when order select " , GetLastError ());
//----
   return ( 0 );
  }
 
lottamer :

코드는 다음과 같습니다.

페어 EURUSD

b-Positions.mqh를 첨부하십시오. 그렇지 않으면 실행하지 마십시오. 프로그램의 작업을 볼 수 없습니다.
 
Chiripaha :
b-Positions.mqh를 첨부하십시오. 그렇지 않으면 실행하지 마십시오. 프로그램의 작업을 볼 수 없습니다.

파일:
b-positions.mqh  90 kb
 
lottamer :
내 질문은 이것입니다. 필요한 모든 기능이 고문 자체에 있는 경우 이 파일을 포함해야 하는 이유는 무엇입니까? 다른 계획이 있으신가요?