포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1157

 

도와주세요 - 코드 조각이 있습니다


   if ( Bars <=RSIPeriod) return ( 0 );
   if (TF!= 0 )
   {
       string name = WindowExpertName ();
       for (i= 0 ; i< Bars -counted_bars+ 1 ; i++)
      {
         int barIndex = iBarShift ( NULL ,TF, Time [i], false );
         RSIBuffer[i]=       iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 0 ,barIndex);        
         PosBuffer[i]=       iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 1 ,barIndex);
         NegBuffer[i]=       iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 2 ,barIndex);
         RSI_Up_Buffer[i]=   iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 3 ,barIndex);
         RSI_Down_Buffer[i]= iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 4 ,barIndex);
         
         Worms_Up[i]=         iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 5 ,barIndex);        
         Worms_Down[i]=       iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 6 ,barIndex);
         Delta[i]=           iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 7 ,barIndex);
         Calc[i]=             iCustom ( Symbol (),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down, 0 , 8 ,barIndex);         
      }
       return ( 0 );
   }


일반적으로 모든 것이 잘 작동하지만 오류가 발생했습니다. 재현할 수 없습니다. 코드의 오류는 대괄호로 시작합니다. Time [I]

2017.07.25 21:09:57.266 Worms_UpDn_RSI_OSC_Calc AUDCAD,M15: 'Worms_UpDn_RSI_OSC_Calc.mq4'의 범위를 벗어난 배열(104,47)

오류의 원인과 해결 방법은 무엇입니까?
 
Aleksey Vyazmikin :

도와주세요 - 코드 조각이 있습니다



일반적으로 모든 것이 잘 작동하지만 오류가 발생했습니다. 재현할 수 없습니다. 코드의 오류는 대괄호로 시작합니다. Time [I]

2017.07.25 21:09:57.266 Worms_UpDn_RSI_OSC_Calc AUDCAD,M15: 'Worms_UpDn_RSI_OSC_Calc.mq4'의 범위를 벗어난 배열(104,47)

오류의 원인과 해결 방법은 무엇입니까?

BarsBars ( Symbol() , TF)로 교체해 보십시오.

다른 시간 프레임에서 데이터를 수신하고 현재 막대의 수 를 가져오지만 수신된 막대에는 더 적을 수 있으므로 오류

 
Vitaly Muzichenko :

막대막대 로 교체해 보십시오(Symbol(), TF).

다른 시간 프레임에서 데이터를 수신하고 현재 막대의 수 를 가져오지만 수신된 막대에는 더 적을 수 있으므로 오류


고맙습니다! 도움이 될 것 같아요!

 
Andrey Sokolov :

주의, 정답은 다음과 같습니다.

지원팀 2017.07.20 13:37
메타에디터의 최신 빌드에서 컴파일되지 않은 제품은 차트에 첨부되지 않을 수 있습니다.

My Expert Advisor는 마지막 업데이트 이후 비시각적 모드의 테스터에서 작동을 멈췄습니다. 나는 무언가를 다시 해야 했다.

 
Andrey Sokolov :

인사말.

확산을 통한 백테스팅이 가능합니까?


그래서 그것은 테스터에 설정됩니다. 아니면 실제 플로팅 스프레드 가 필요합니까?

 
Alexey Volchanskiy :

그래서 그것은 테스터에 설정됩니다. 아니면 실제 플로팅 스프레드 가 필요합니까?

진짜
 
Andrey Sokolov :
진짜
Real in the tester(과거)는 MT5에서만 사용할 수 있습니다.
 

안녕하세요! 나는 프랙탈에 대해 보류 중인 주문 을 하기 위해 Expert Advisor를 쓰고 있습니다. 단, 매수주문만 가능합니다. 어떻게 고치는 지? 첨부는 Expert Advisor 및 지표입니다.

파일:
Fractal_1.mq4  13 kb
RFractals.ex4  10 kb
 
scomoroh :

안녕하세요! 나는 프랙탈에 대해 보류 중인 주문 을 하기 위해 Expert Advisor를 쓰고 있습니다. 그러나 구매 주문만 열립니다. 어떻게 고치는 지?

모든 것이 여기 에 있습니다.

 

안녕하세요.

두 가지 오류를 수정하는 데 도움이 될 수 있습니다.

1. 하나의 바에서 1개의 주문을 열어야 합니다(이제 무작위로 열립니다).

2. 설정된 수량으로 1개 주문을 올바르게 엽니다(이제 다른 볼륨으로 열립니다).

이론상 이제 어드바이저에 설정이 되어있기 때문에(그렇게 바랐음) 보증금의 10% 정도의 거래를 한 바에서 열어야 하는데, 그렇게 되지 않습니다.

고맙습니다.

 //+------------------------------------------------------------------+
//|                                                      1237654.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             [url]https://www.mql5.com[/url] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
extern int tf_bar = 0 ; //таймфрейм на котором будет браться значение бара
extern int magic = 123 ;
extern double stop = 0 ;
extern double StopLoss = 0 ;
extern double TakeProfit = 0 ;
extern double Prots= 0.10 ;

int ticket, Symbol ;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int mper[ 10 ]={ 0 , 1 , 5 , 15 , 30 , 60 , 240 , 1440 , 10080 , 43200 }; //массив таймфрейма
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick ()
  {
       double Min_Lot= MarketInfo ( Symbol (), MODE_MINLOT ); // Мин. стоим. лотов
       double Step   = MarketInfo ( Symbol (), MODE_LOTSTEP ); //Шаг изменен лотов
       double Free   = AccountBalance ();       // Свободн средства
       double One_Lot= MarketInfo ( Symbol (), MODE_MARGINREQUIRED ); //Стоим.лота
  
   double Lot= MathFloor (Free*Prots/One_Lot/Step)*Step; // Лоты
        
        
        
  
   if ( Close [ 0 ]> Close [ 1 ])
//if (! NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_BUY, magic) ==0) 



{ //запрет неск. сделок на 1 баре
     stop = Ask - StopLoss * Point ;
     ticket= OrderSend ( Symbol (), OP_BUY ,Lot, Ask , 0 , 0 , 0 , "Buy" ,magic, 0 ,Lime);
     
     } //закрываем скобку NumberOfBarOpenLastPos
     
 if ( Close [ 0 ]< Close [ 1 ])   
     
//if (!NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_SELL, magic)  ==0) 
{ //запрет неск. сделок на 1 баре
     ticket= OrderSend ( Symbol (), OP_SELL ,Lot, Bid , 0 , 0 , 0 , "Sell" ,magic, 0 ,Red);
     
     } //закрываем скобку NumberOfBarOpenLastPos
     return ;
   
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  [url=http://www.kimiv.ru]Автоматизация торговли на финансовых рынках - Главная[/url]                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
 




int NumberOfBarOpenLastPos( string sy= "0" , int tf= 0 , int op=- 1 , int mn=- 1 ) {
   datetime t= 0 ;
  
   int       i, k= OrdersTotal ();

   if (sy== "" || sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++)                                    {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))      {
       if ( OrderSymbol ()==sy)                             {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
           if (op< 0 || OrderType ()==op)                   {
             if (mn< 0 || OrderMagicNumber ()==mn)          {
               if (t< OrderOpenTime ()) t= OrderOpenTime ();
              }}}}}}
   return ( iBarShift (sy, tf, t, True ));}