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

 
ewoke :

안녕하세요.

2009년 이전에 EURUSD m5/m15에 대한 기록이 필요합니다. 공유할 수 있는 사람이 있습니까? (즉, Expert Advisors를 디버그하는 곳).

나는 매우 감사하게 될 것입니다.

터미널이 열린 상태에서 F2 키를 누른 다음 Fx Majors -> EURUSD -> 1분(M1) -> 다운로드로 이동합니다.

 
paladin80 :
여는 중괄호 {는 price[...]=Ask 앞에 있어야 합니다. (아래 참조). if 연산자에 대해 자세히 알아보세요. if 바로 뒤에 대괄호가 없으면 하나의 작업만 처리합니다(가격[...]=Ask;가 있음). 여러 작업이 필요한 경우 바로 뒤에 {...}로 묶어야 합니다. 만약.

감사합니다. 하지만 나는 당신이 제안한 대로 if 문 바로 뒤에 괄호를 넣었습니다.
그러나 그것은 아무것도 바꾸지 않았다.
그리고 가격이 하락하여 1.2100과 1.2200 수준을 넘어 오퍼레이터의 조건에 따라 포즈를 취합니다.

공개 매수가 레벨 1.2100 및 1.2200에 있는 경우 - 열리지 않음.


 
alex12 :
감사합니다. 하지만 나는 당신이 제안한 대로 if 문 바로 뒤에 괄호를 넣었습니다.
그러나 그것은 아무것도 바꾸지 않았다.
그리고 가격이 하락하여 1.2100과 1.2200 수준을 넘어 오퍼레이터의 조건에 따라 포즈를 취합니다.

공개 매수가 레벨 1.2100 및 1.2200에 있는 경우 - 열리지 않음.


이 경우 틱 처리를 완료하기 위해 ordersend 뒤에 return 문을 넣어야 하는 것 아닌가요?
 
alex12 :
감사합니다. 하지만 나는 당신이 제안한 대로 if 문 바로 뒤에 괄호를 쳤습니다.
그러나 그것은 아무것도 바꾸지 않았습니다.
그리고 가격이 하락하여 1.2100과 1.2200 수준을 넘어 오퍼레이터의 조건에 따라 포즈를 취합니다.

공개 매수가 레벨 1.2100 및 1.2200에 있는 경우 - 열리지 않음.

첫 번째 포지션을 수동으로 여시겠습니까, 아니면 가격이 특정 수준을 넘었을 때 보류 주문을 넣고 그런 수준의 존재를 기반으로 하시겠습니까? 다음과 같이 시도하십시오.
 if ( OrdersTotal ()> 0 )
{   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (SELECT_BY_POS,MODE_TRADES)
      {   if ( OrderSymbol ()!= Symbol ())   continue ;
         if ( OrderType ()==OP_BUYLIMIT) return ( 0 );
}  }  }

if ( OrdersTotal ()> 0 )
{   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
      {   if ( OrderSymbol ()!= Symbol ()) continue ;
         if ( OrderType ()==OP_BUY)
         {   for ( int j= 0 ; j= 10 - 1 ; j++}
            {   OrderSend ( Symbol (),OP_BUYLIMIT,Lot,price[j], 10 , 0 ,Ask+g* Point , "My order #" , 11 +j);
               Sleep ( 10 * 1000 );
      }  }  }
}  }
물론 여기서 DC 가 보류 중인 주문을 거부하는 경우에 대비한 오류 처리가 여전히 충분하지 않습니다.
 
OlegTs :
이 경우 틱 처리를 완료하기 위해 ordersend 뒤에 return 문을 넣어야 하는 것 아닌가요?

감사합니다. 주문 발송 후 반품 명세서를 넣었는데 아무 변화가 없습니다.


 extern double Lot= 1 ;
int g= 20 ; //тейкпрофит
double price[ 10 ];   // Заданный уровень 
//-----------------------
int init()
  {
double price[ 10 ];   // объявляем массив из 5 элементов            
price[ 0 ] = 1.2100 ; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
price[ 1 ] = 1.2200 ;   // обращаемся ко второму элементу 
price[ 2 ] = 1.2300 ;   // и так далее 
price[ 3 ] = 1.2400 ; 
price[ 4 ] = 1.2500 ;
price[ 5 ] = 1.2600 ; 
price[ 6 ] = 1.2700 ;  
price[ 7 ] = 1.2800 ; 
price[ 8 ] = 1.2900 ;
price[ 9 ] = 1.3000 ;  
   return ( 0 );
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 );

   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==False) //проверка наличия откр.поз
   {
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 11 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 12 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 13 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 14 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 15 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 5 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2600 , 10 , 0 ,Ask+g* Point , "My order #" , 16 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 6 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2700 , 10 , 0 ,Ask+g* Point , "My order #" , 17 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 7 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2800 , 10 , 0 ,Ask+g* Point , "My order #" , 18 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 8 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2900 , 10 , 0 ,Ask+g* Point , "My order #" , 19 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 9 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.3000 , 10 , 0 ,Ask+g* Point , "My order #" , 20 ); return ;
   }
       return ( 0 );
  }
//+------------------------------------------------------------------+
 
paladin80 :
첫 번째 포지션을 수동으로 여시겠습니까, 아니면 가격이 특정 수준을 넘었을 때 보류 주문을 넣고 그런 수준의 존재를 기반으로 하시겠습니까? 다음과 같이 시도하십시오. 물론 여기서 DC가 보류 중인 주문을 거부하는 경우에 대비한 오류 처리가 여전히 충분하지 않습니다.

감사합니다.첫 번째 포즈는 주문 보내기에 정의된 수준에 따라, 그런 다음 이러한 존재에 따라 주문 보내기에 정의된 수준에 따라 열린 포즈입니다.

테이크에서 닫힐 때까지 한 수준에서 하나의 포즈로 나타납니다.

 
alex12 :

...

테이크에서 닫힐 때까지 한 수준에서 하나의 포즈로 나타납니다.

위험한 전략, 나는 그런 식으로 플레이하지 않을 것입니다.
 
paladin80 :
첫 번째 포지션을 수동으로 여시겠습니까, 아니면 가격이 특정 수준을 넘었을 때 보류 주문을 넣고 그런 수준의 존재를 기반으로 하시겠습니까? 다음과 같이 시도하십시오. 물론 여기서 DC가 보류 중인 주문을 거부하는 경우에 대비한 오류 처리가 여전히 충분하지 않습니다.

물론, 제안된 코드에 감사드립니다. 하지만 저는 아주 좋은 프로그래머가 아니기 때문에 오류를 찾을 수 없습니다: '}' - 닫히지 않은 괄호

메모장++에서 코드를 확대하여 보았지만 오류를 수정할 수 없습니다.

당연하게도. 코드 자체에 관심이 있습니다. TS에는 없습니다.

오류 '}' 발생 - 불균형 괄호

나는 그것을 고칠 방법을 모른다.

 extern double Lot= 1 ;
int g= 20 ;           //тейкпрофит
double price[ 5 ];   // Заданный уровень 
//-----------------------
int init()
  { 
double price[]={ 1.2100 , 1.2200 , 1.2300 , 1.2400 , 1.2500 }; // объявляем массив из 5 элементов  
   return ( 0 );
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 );  
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==False) //проверка наличия откр.поз
   {
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 11 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 12 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 13 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 14 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 15 ); return ;
   }
   if ( OrdersTotal ()> 0 )
   {  
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {  
   if ( OrderSelect (SELECT_BY_POS,MODE_TRADES)
   { 
   if ( OrderSymbol ()!= Symbol ()) continue ;
         
   if ( OrderType ()==OP_BUYLIMIT) return ( 0 );
   } 
   }
   }
   if ( OrdersTotal ()> 0 )
   { 
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {  
   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
   { 
   if ( OrderSymbol ()!= Symbol ()) continue ;
   if ( OrderType ()==OP_BUY)
   {
   for ( int j= 0 ;j= 5 - 1 ;j++}
   { 
   OrderSend ( Symbol (),OP_BUYLIMIT,Lot,price[j], 10 , 0 ,Ask+g* Point , "My order #" , 11 +j);
   Sleep ( 10 * 1000 );
   } 
   } 
   }
   } 
   }
       return ( 0 );
   }
//+------------------------------------------------------------------+
 

어드바이저가 테스트 중에 포지션을 열지 않는 이유를 알려주세요. 왜 그런지 이해가 되지 않습니다. 코드가 올바르게 작성된 것 같습니다.

 extern double Lot= 1 ;
//--------------------------------------------------------------------
int g= 20 ; //тейкпрофит
double price[ 5 ];   // Заданный уровень 
//--------------------------------------------------------------------
int init()
  { 
double price[]={ 1.2100 , 1.2200 , 1.2300 , 1.2400 , 1.2500 }; // объявляем массив из 5 элементов  
   return ( 0 );
  }
//---------------
int start()
   {
   double WMA0= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA1= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA2= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA3= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA4= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );

   // начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 ); // не открывает новые пока не закроются открытые
   
   if (price[ 0 ]<WMA0&&price[ 0 ]>WMA0) //Buy
   {                           
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 1 ); return ;
   }
   else
       if (price[ 1 ]<WMA1&&price[ 1 ]>WMA1) //Buy
   {                           
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 2 ); return ;
   }
   else
       if (price[ 2 ]<WMA2&&price[ 2 ]>WMA2) //Buy
   {                           
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 3 ); return ;
   }
   else
       if (price[ 3 ]<WMA3&&price[ 3 ]>WMA3) //Buy
   {                           
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 4 ); return ;
   }
   else
       if (price[ 4 ]<WMA4&&price[ 4 ]>WMA4) //Buy
   {                           
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 5 ); return ;
   }

return ( 0 );
} 
/////////////////////////////////////////////////////////////////////////////////////////
 
alex12 :

어드바이저가 테스트 중에 포지션을 열지 않는 이유를 알려주세요. 왜 그런지 이해가 되지 않습니다. 코드가 올바르게 작성된 것 같습니다.


시장가 주문(OP_SELL 또는 OP_BUY)을 열 때 가장 최근의 Bid (판매) 또는 Ask (구매) 가격만 시작 가격으로 사용할 수 있습니다.

이 같은.