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

 
주문을 보낸 후 retcode가 말하는 내용을 확인하십시오.
 
Fast235 # :
주문을 보낸 후 retcode가 말하는 내용을 확인하십시오.

고맙습니다.

10018

TRADE_RETCODE_MARKET_CLOSED

시장이 닫혀있다

그래서 브로커에 문제가 있습니다.

 

안녕하세요 무리하게 차지 말아주세요)
고문이 있습니다. 여러 통화 쌍에서 인덱스 1의 막대가 같은 방향(강세 또는 약세)을 갖는 경우 포지션을 여는 기능을 구현하고 싶습니다.
iclose와 iopen을 통해 이것을 구현하려고 합니다.

Все происходит в bool-ой функцие.
Хотел реализовать конструкцию следующего вида:
if (( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;
else if (( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;

Но ничего не получилось, и открываются позиции при любой комбинации баров с индексом 1 .


Но работает следующая конструкция.

if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;

Тут советник правильно находит комбинацию из баров. Но таким способом можно искать либо комбинации из бычьих баров, либо медвежьих.


Ибо код такого вида не работает.
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
{

   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

else if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
{

   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

И такого тоже)
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
{
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
 return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

else if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
{
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
 return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
   return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}


처럼   결국   약세 막대와 강세 막대의 조합을 동시에 찾는 것이 맞습니까? 다시한번 말씀드리지만 슬리퍼로 세게 밟지 마세요)

 
Scarick # :

안녕하세요 무리하게 차지 말아주세요)
고문이 있습니다. 여러 통화 쌍에서 인덱스 1의 막대가 같은 방향(강세 또는 약세)을 갖는 경우 포지션을 여는 기능을 구현하고 싶습니다.
iclose와 iopen을 통해 이것을 구현하려고 합니다.

 if (( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;
else if (( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;

처럼   결국   약세 막대와 강세 막대의 조합을 동시에 찾는 것이 맞습니까? 다시한번 말씀드리지만 슬리퍼로 세게 밟지 마세요)

CopyRates 를 통해 작업하고 주문한 금액과 받은 금액을 제어 해야 합니다. 다음은 예입니다.

   MqlRates rates_current[],rates_eurgbp[],rates_eurjpy[];
   ArraySetAsSeries (rates_current, true );
   ArraySetAsSeries (rates_eurgbp, true );
   ArraySetAsSeries (rates_eurjpy, true );
   int start_pos= 0 ,count= 3 ;
   if ( CopyRates ( Symbol (), Period (),start_pos,count,rates_current) !=count )
       return ;
   if ( CopyRates ( "EURGBP" , Period (),start_pos,count,rates_eurgbp) !=count )
       return ;
   if ( CopyRates ( "EURJPY" , Period (),start_pos,count,rates_eurjpy) !=count )
       return ;
//---
   bool signal_buy= false ,signal_sell= false ;
   if ((rates_current[ 1 ].open>rates_current[ 1 ].close) && (rates_eurgbp[ 1 ].open>rates_eurgbp[ 1 ].close) && (rates_eurjpy[ 1 ].open>rates_eurjpy[ 1 ].close))
     {
      signal_buy= true ;
      signal_sell= false ;
     }
   else
     {
       if ((rates_current[ 1 ].open<rates_current[ 1 ].close) && (rates_eurgbp[ 1 ].open<rates_eurgbp[ 1 ].close) && (rates_eurjpy[ 1 ].open<rates_eurjpy[ 1 ].close))
        {
         signal_buy= false ;
         signal_sell= true ;
        }
     }
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

안녕하세요!

상황.

Expert Advisor는 예를 들어 이사 에 대해 작성됩니다. 테스터에서 테스트를 마치면 사용된 이동(사용된 매개변수 포함)이 창에 나타납니다. 괜찮아.

문제.

그리고 동일한 어드바이저를 마켓에 업로드하고 사용자가 데모를 다운로드하면 테스트가 완료된 후에도 표시됩니까? 아니면 mql에 이와 관련하여 일종의 개인 정보 보호 정책이 있습니까?


Конечно, можно самому заморочиться и проверить. Но те кто, заливал продукты, поймут, что лучше просто спросить)  

 
Anton Iudakov # :

안녕하세요!

상황.

Expert Advisor는 예를 들어 이사 에 대해 작성됩니다. 테스터에서 테스트를 마치면 사용된 이동(사용된 매개변수 포함)이 창에 나타납니다. 괜찮아.

문제.

그리고 동일한 어드바이저를 마켓에 업로드하고 사용자가 데모를 다운로드하면 테스트가 완료된 후에도 표시됩니까? 아니면 mql에 이와 관련하여 일종의 개인 정보 보호 정책이 있습니까?


물론 물어보는 것이 더 쉽지만 시장에 어드바이저를 업로드한 모든 사람이 다운로드 후 확인하는 것은 아닙니다.

그런데 사실, 어드바이저 파일을 받는 곳은 어떤 차이가 있습니까? 그것은 개발자를 위해 동등하게 작동하고 시장에서 암호화됩니다 ...

 
Anton Iudakov # :

안녕하세요!

상황.

Expert Advisor는 예를 들어 이사 에 대해 작성됩니다. 테스터에서 테스트를 마치면 사용된 이동(사용된 매개변수 포함)이 창에 나타납니다. 괜찮아.

문제.

그리고 동일한 어드바이저를 마켓에 업로드하고 사용자가 데모를 다운로드하면 테스트가 완료된 후에도 표시됩니까? 아니면 mql에 이와 관련하여 일종의 개인 정보 보호 정책이 있습니까?


 TesterHideIndicators
 
후 방법을 알려주세요   MQL5에서 Expert Advisor 를 테스트할 때 화살표 위로 마우스를 가져갈 때 팝업 창에 통계를 표시하시겠습니까?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

표시기를 수정하는 데 도움이 됩니다. 지정된 값에서 가격 단계/그리드를 그립니다. 문제는 그것을 제거해도 차트에 선이 남아 있다는 것입니다. 또한 같은 유형의 두 번째 지표를 차트에 추가할 수 없습니다. 일반적으로 차트에서 완전히 제거하는 방법과 차트에 동일한 지표를 다른 값으로 던질 수 있습니다.

 #property link        " https://www.forexsystems.biz "
#property version    "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots    0
//--- входные параметры 
input int count = 500 ;       //количество линий вверх вниз от цены
input int step  = 100 ;     //шаг линий 
input double pr = 1.1 ;   //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   Comment ( "" );
   
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine( const string name= "HLine" , double price= 0 )
  {
//--- создадим горизонтальную линию 
   if (! ObjectCreate ( 0 ,name, OBJ_HLINE , 0 , 0 ,price))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- установим цвет линии 
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrDodgerBlue );
   ObjectSetInteger ( 0 ,name, OBJPROP_WIDTH , 2 );
   return ( true );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for ( int i= 0 ;i<=count;i++)
     {
      HLine( "HLine" +( string )i,price+step*i* _Point );
      HLine( "HLine" +( string )(i+count+ 1 ),price-step*i* _Point );
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


 
Green handsome # :

표시기를 수정하는 데 도움이 됩니다. 지정된 값에서 가격 단계/그리드를 그립니다. 문제는 그것을 제거해도 차트에 선이 남아 있다는 것입니다. 또한 같은 유형의 두 번째 지표를 차트에 추가할 수 없습니다. 일반적으로 차트에서 완전히 제거하는 방법과 차트에 동일한 지표를 다른 값으로 던질 수 있습니다.

OnDeinit에서 ObjectsDeleteAll - 접두사로 삭제해야 합니다(귀하의 경우 접두사는 "HLine")

 int    ObjectsDeleteAll (
   long            chart_id,   // идентификатор графика
   const string      prefix,   // префикс имени объекта
   int        sub_window=- 1 ,   // индекс окна
   int       object_type=- 1      // тип объекта для удаления
   );

Документация по MQL5: Графические объекты / ObjectsDeleteAll
Документация по MQL5: Графические объекты / ObjectsDeleteAll
  • www.mql5.com
ObjectsDeleteAll - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
사유: