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

 

Boris.45 :

Yedelkin : Time_H1[1][0]은 무엇을 반환합니까?

나는 배열의 이 요소를 사용하지 않는다. 왜냐하면 앞으로는 즉시 마지막 5개 막대에서 프랙탈 검색 알고리즘을 사용합니다. 그리고 Time_H1[1][0]은 이 막대의 매개변수가 아직 형성되지 않은 제로 막대의 개방 시간입니다. 내가 틀릴 수도 있지만 내 경험에 따르면 시계열을 형성하기 위해 0 막대 매개변수를 사용하면 왜곡이 발생한다는 것을 알았습니다.

좋아, 내 질문을 명확히 하자:

"Time_H1[nomer_instr][i]=Time_buf[i];"인 경우 및 "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0]은 무엇을 반환합니까?

 

특정(특정) 포지션을 닫기 위한 링크를 보내주세요.


즉, 특정 시점 에 포지션을 청산하기 위한 조건이 충족되면 BUY라고 하면 어드바이저(현재)가 열려 있는 BUY 포지션을 청산합니다. 그리고 이제 특정(특정) BUY 포지션을 청산해야 할 때 문제가 발생했습니다.

예를 들어, BUY 위치를 열 때 특정 지정을 할당하고 닫을 때 조건에 "존재"를 지정할 수 있습니다.
 
Lester : 특정(특정) 포지션을 청산하기 위한 링크를 보내주십시오.즉, BUY와 같은 포지션 청산 조건이 충족되는 특정 순간에 어드바이저(현재)가 열려 있는 BUY 포지션을 청산합니다. 그리고 이제 특정(특정) BUY 포지션을 청산해야 할 때 문제가 발생했습니다.

예를 들어, BUY 위치를 열 때 특정 지정을 할당하고 닫을 때 조건에 "존재"를 지정할 수 있습니다.
"열린 포지션"을 어떻게 청산합니까? 실제로 각 열린 위치는 하나의 단일 기호에 해당합니다. 따라서 닫을 때 이 기호의 이름을 사용해야 하며 열린 위치에 "특정 지정"을 지정하지 않아야 합니다.
 
다음은 예입니다. 첫 번째 BUY는 플랫에서 구매하는 것이고 두 번째 구매는 플랫에서 SELL을 종료하고 매수하지만 이미 추세에 있습니다. BU는 열려 있는 모든 BU에 대해서도 닫힙니다. 두 번째 폐쇄는 추세만 참조하기 때문에 좋지 않습니다.
 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Позиция на покупку имеется" );
             return ;     // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL ;     // немедленное исполнение
         mrequest.symbol = _Symbol ;               // символ
         mrequest.magic = EA_Magic;               // Magic Number
         mrequest.volume = Lot;                   // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend (mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Buy успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
         }
      }
 if (Buy_Condition_4 || Buy_Condition_5)
     { 
       if (Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
   if (Buy_opened)
      {
       Alert ( "Позиция на покупку во Флэте есть" );
       return ;     // не добавлять к открытой позиции на покупку
      }   
     if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
      {
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
       {
         Alert ( "Закрываю ордер Sell флэт!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;         // символ
         mrequest.magic = EA_Magic;         // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
           Alert ( "тикет закрытия Sell флэт #:" ,mresult.order, "!!" );
           }
         else
           {
           Alert ( "Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:" , GetLastError ());
           return ;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL ;     // немедленное исполнение
         mrequest.symbol = _Symbol ;               // символ
         mrequest.magic = EA_Magic;               // Magic Number
         mrequest.volume = Lot;                   // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend (mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Buy на тренд успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy тренд не выполнен - код ошибки:" , GetLastError ());
             return ;
           }         
         }
      }
....
...
if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
           {
             if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
                {
           Alert ( "Закрываю ордер BUY!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {            
             Alert ( "тикет закрытия Buy #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера закрытия Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
    }
  }

if (Buy_Close_4 || Buy_Close_5)
        {
         if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
           {
             if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
                {
           Alert ( "Закрываю ордер BUY!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {            
             Alert ( "тикет закрытия Buy #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера закрытия Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
    }
 
Lester : 여기 예가 있습니다. 첫 번째 BUY는 플랫에서 구매하는 것이고 두 번째 구매는 플랫에서 SELL을 종료하고 매수하지만 이미 추세에 있습니다. BU는 열려 있는 모든 BU에 대해서도 닫힙니다. 두 번째 폐쇄는 추세만 참조하기 때문에 좋지 않습니다.
따라서 하나의 기호에서 다른 "위치"를 닫을 것입니까?
 
Yedelkin :
따라서 하나의 기호에서 다른 "위치"를 닫을 것입니까?

설마.

매수 플랫이 열려 있으면 매수 추세를 닫을 수 없습니다. 그 반대.

즉, 하나의 기호에서 플랫(플랫이 열린 경우) 또는 추세(트렌드가 열린 경우)와 같은 특정 위치를 닫습니다.

 
Lester : 정확히는 아닙니다. 매수 플랫이 열려 있으면 매수 추세를 닫을 수 없습니다 . 그 반대.

즉, 하나의 기호에서 플랫(플랫이 열린 경우) 또는 추세(트렌드가 열린 경우)와 같은 특정 위치를 닫습니다 .

분명한. 불행히도 용어상의 부정확성으로 인해 제가 잘못 인도되어 더 이상 도움을 드릴 수 없습니다. MQL5에서 각 기호는 하나의 위치만 가질 수 있습니다. " 매수 플랫 및 매수 추세"와 같은 두 위치는 하나의 기호에 동시에 있을 수 없습니다. 본질적으로 당신은 mql5 포지션에 대한 질문이 아니라 당신이 한 거래 주문 추적에 대한 질문을 제기합니다. 포럼 검색을 보십시오. 약 3년 전에 MT5에 대한 "가상 주문"에 대한 기사가 있었습니다. 예, 나중에 이 주제가 포럼에서 반복적으로 제기되었습니다.
 
Yedelkin :

좋아, 내 질문을 명확히 하자:

"Time_H1[nomer_instr][i]=Time_buf[i];"인 경우 및 "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0]은 무엇을 반환합니까?

나는 Expert Advisor에서 구현하려는 아이디어를 설명하려고 노력할 것입니다.

해당 배열 Time_buf[], Open_buf[], High_buf[] 등을 사용하는 표준 함수 CopyTime(), CopyOpen(), CopyHigh() 등이 있습니다.

이러한 기능을 사용하여 다양한 기간 및 통화에 대한 과거 데이터를 얻을 수 있습니다. 동시에 Time_buf[0]은 제로 바의 여는 시간이고,

High_buf[0] - 마지막 틱 시간에 0 막대에 있는 특정 통화 가격의 최대값.

그런 다음 각 시간대에 대해 각 Time, Open 등에 대한 2차원 배열을 만듭니다. 그런 다음 H1 기간 동안 배열을 얻습니다.

Time_H1[i][j], Open_H1[i][j], High_H1[i][j] 등 이 배열에서 각 행은 특정 통화의 과거 데이터에 대한 것입니다. 따라서,

for( i=1; i<=nomer_instr; i++ ) 통화 번호 루프를 사용하여 과거 데이터 Time_buf[j], High_buf[j] 등을 덮어씁니다. 배열의 해당 행으로

Time_H1[i][j], High_H1[i][j] 등

틱에 작동하는 Expert Advisor와 거래하는 경우 제로 바에서 현재 매개변수를 사용할 수 있습니다. 당연히 제로 바의 현재 매개 변수는

종료 순간은 첫 번째 막대의 매개 변수와 같습니다. 내 고문은 진드기가 아니라 막대에서 작동합니다. 그래서 나는 고문이 술집에서 일할 때

High_buf[0], Low_buf[0] 값은 제로 바가 닫히는 순간의 역사적 값이 아니라 일부 임의의 값입니다. 따라서 다음을 포함하면

제로 막대 매개변수를 기록 시퀀스에 넣으면 매개변수의 전체 기록 시퀀스가 왜곡됩니다. 이것이 내가 제로 바 매개변수를 사용하지 않는 이유입니다.

너무 길어져서 죄송합니다.


 

Boris.45 :

Yedelkin : 알겠습니다. 질문을 명확히 하겠습니다. If "Time_H1[nomer_instr][i]=Time_buf[i];" 및 "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0]은 무엇을 반환합니까?

나는 Expert Advisor에서 구현하려는 아이디어를 설명하려고 노력할 것 입니다.

글쎄, 나는 아이디어에 대해 묻지 않았다 :)

Boris.45 : 동시에 Time_buf[0]은 제로바가 열리는 시간이고,

여기서 나는 또한 어떤 값이 당신이 언급한 배열의 요소를 반환하는지 묻습니다 .

 

말해봐 pzhl!

시장 시계에서 통화 쌍의 배경을 다시 칠하는 방법

또는 색상을 제거하십시오.

미리 ATP!

사유: