초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 25

 
Viachaslau Baiko :

유형 변환으로 인한 데이터 손실 가능성

노력하다.

파일:
 
Renat Akhtyamov :
컴파일러가 가리키는 코드의 행을 표시합니다.

이러한 라인이 많이 있기 때문에 새 터미널에 적합한 모듈을 요청했습니다. 하지만 기꺼이 도와주셔서 감사합니다

 
Alekseu Fedotov :
감사합니다. 시도하겠습니다!
 
Viachaslau Baiko :

이러한 라인이 많이 있기 때문에 새 터미널에 적합한 모듈을 요청했습니다. 하지만 기꺼이 도와주셔서 감사합니다

바로 이 줄에:

" 유형 변환으로 인한 데이터 손실 가능성 "

오류가 있는 코드 줄의 줄 번호와 위치여야 합니다.

너무 쉽습니다. 코드의 정확한 위치를 알면 모든 오류를 수정할 수 있습니다.

 
Renat Akhtyamov :

바로 이 줄에:

" 유형 변환으로 인한 데이터 손실 가능성 "

오류가 있는 코드 줄의 줄 번호와 위치여야 합니다.

너무 쉽습니다. 코드의 정확한 위치를 알면 모든 오류를 수정할 수 있습니다.

나는 Alekseu Fedotov 가 제안한 어드바이저를 받아 내 필요에 맞게 끝내려고 노력했습니다.

그리고 필요 사항은 다음과 같습니다. 체크박스를 교차할 때 포지션을 열고, 뒤로 교차할 때 포지션을 닫습니다. 가능하면 포지션을 손익분기점으로 이전합니다.

그러나 결과적으로 아무 것도 열리지 않습니다. 나는 이미 내 머리를 망가뜨렸다. 여기서 문제가 될 수 있는 것은 무엇입니까?

파일:
4Tester.mq4  20 kb
 
Viachaslau Baiko :

나는 Alekseu Fedotov 가 제안한 어드바이저를 받아 내 필요에 맞게 끝내려고 노력했습니다.

그리고 필요 사항은 다음과 같습니다. 체크박스를 교차할 때 포지션을 열고, 뒤로 교차할 때 포지션을 닫습니다. 가능하면 포지션을 손익분기점으로 이전합니다.

그러나 결과적으로 아무 것도 열리지 않습니다. 나는 이미 내 머리를 망가뜨렸다. 여기서 문제가 될 수 있는 것은 무엇입니까?

내가 마지막으로 도움을 제공했을 때 KIM의 오류가 있는 코드의 한 줄을 보여주세요.
 
Renat Akhtyamov :
내가 마지막으로 도움을 제공했을 때 KIM의 오류가 있는 코드의 한 줄을 보여주세요.
제 잘못이 있었습니다. 프로그램의 논리를 잘못 컴파일했습니다. 그리고 모든 것을 새로운 방식으로 하는 것이 더 쉬웠습니다. KIM 코드에는 오류가 없습니다.
 
mql4 또는 mql5를 사용하여 다음을 수행할 수 있는지 알려주십시오.

가격이 수직선을 넘은 후 그림과 같이 배경의 일부를 다른 색으로 칠하십시오.

고맙습니다.
파일:
Immagine1.JPG  100 kb
 
Renat Akhtyamov :
어드바이저의 표시기에서 신호를 읽는 방법 코드의 일부를 보여줍니다.
extern int      stoploss             = 200 ,
               takeprofit           = 400 ,
               slippage             = 10 ,
               Magic                = 777 ;          

extern double   Lot                  = 0.5 ,
               buy_level            = 15 ;      
            

void OnTick ()
{
   for ( int i= 0 ; i< OrdersTotal (); i++)                        
   if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
   if ( OrderSymbol ()== Symbol () && Magic== OrderMagicNumber ()) return ;
  
   double STO = iStochastic ( NULL , 15 , 2 , 3 , 1 , MODE_SMA , 0 , MODE_SIGNAL , 0 );
   double SL= 0 ,TP= 0 ;
  
   if (STO > buy_level)
  
  
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble ( Ask + takeprofit* Point , Digits );
       if (stoploss!= 0 )   SL  = NormalizeDouble ( Ask - stoploss*   Point , Digits );    
       if ( OrderSend ( Symbol (), OP_BUY , Lot, NormalizeDouble ( Ask , Digits ),slippage,SL,TP, NULL ,Magic)==- 1 ) Print ( GetLastError ());
       PlaySound ( "timeout.wav" );
       Print ( "Ордер успешно размещен" );
}
}
 
TimBerg :
extern int      stoploss             = 200 ,
               takeprofit           = 400 ,
               slippage             = 10 ,
               Magic                = 777 ;          

extern double   Lot                  = 0.5 ,
               buy_level            = 15 ;      
            

void OnTick ()
{
   for ( int i= 0 ; i< OrdersTotal (); i++)                        
   if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
   if ( OrderSymbol ()== Symbol () && Magic== OrderMagicNumber ()) return ;
  
   double STO = iStochastic ( NULL , 15 , 2 , 3 , 1 , MODE_SMA , 0 , MODE_SIGNAL , 0 );
   double SL= 0 ,TP= 0 ;
  
   if (STO > buy_level)
  
  
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble ( Ask + takeprofit* Point , Digits );
       if (stoploss!= 0 )   SL  = NormalizeDouble ( Ask - stoploss*   Point , Digits );    
       if ( OrderSend ( Symbol (), OP_BUY , Lot, NormalizeDouble ( Ask , Digits ),slippage,SL,TP, NULL ,Magic)==- 1 ) Print ( GetLastError ());
       PlaySound ( "timeout.wav" );
       Print ( "Ордер успешно размещен" );
}
}

여기:

iStochastic ( NULL , 15 , 2 , 3 , 1 , MODE_SMA , 0 , MODE_SIGNAL , 0 );

기간(기간)을 1,5,15,30,60,240,1440,10080,43200 //M1.M5.M30 ... 등으로 변경합니다.

또는 15 대신 Period() 를 입력하면 수동으로 TF를 전환할 때 현재 것이 자동으로 설정됩니다.