오류, 버그, 질문 - 페이지 1921

 

컴파일 중 오류

 template < typename T1, typename T2>
void f( T2 t )
{
         Print ( typename ( T1 ), ":" , typename ( T2 ), ":" , t );
}
void OnStart ()
{
         char ch = 5 ;
        f< int >( ch ); //(1) //error: 'f' - wrong template parameters count
}

기록이 컴파일된다

         f< int , char >( ch ); //(2)
ch가 char가 아닌 경우 중복 정보와 모호성을 포함합니다. 또한 매크로에서 ch 유형에 대한 정보는 일반적으로 사용할 수 없습니다(컨텍스트에 따라 다름)
 
A100 :

컴파일 중 오류

그리고 플러스에서 가능합니까?

 
Комбинатор :

그리고 플러스에서 가능합니까?

C++는 둘 다 컴파일하지만 (1)이 더 정확하고 직관적인 것 같습니다. (2)에서 유형을 염두에 두어야 합니다. 이는 불편하고 단순화하는 대신 <>에 여러 유형 이름이 있는 경우 명확하게 보이는 불필요한 복잡성을 얻습니다.
 

알림이 사라지지 않고 모든 것을 시도했지만 모든 것을 읽었으며 사이트에는 알림이없고 터미널에서만 ..


 
Vladimir Pastushak :

알림이 사라지지 않고 모든 것을 시도했지만 모든 것을 읽었으며 사이트에는 알림이없고 터미널에서만 ..

처음부터 그랬습니다.

읽은 것으로 표시하려면 어떤 파일을 삭제해야 하는지 알아낸 주제가 있었습니다. 그러나 "귀신"은 여전히 나타납니다.

 
안녕하세요. 데모 골드 따옴표가 점점 사라지는 이유를 알려줄 수 있는 사람이 있습니까?
 

.log 파일 %AppData%\MetaQuotes\Terminal\...\MQL5\Logs\YYYYMMDD.log가 즉시 업데이트되지 않습니다.

업데이트는 터미널을 다시 시작한 후 또는 보기 메뉴를 선택한 경우에만 발생합니다. 다시로드하지 않고 하루의 시작부터보기를 선택하지 않으면 해당 파일이 비어 있습니다.

이전에는 모든 것이 작동했으며(MetaEditor 자체에서 열린 YYYYMMDD.log 파일도 전문가 탭에 줄이 표시된 후 몇 초 후에 업데이트됨) 불필요한 명확하지 않은 작업을 수행할 필요가 없었습니다.

 

잘 자! 어드바이저에는 RSI와 STO가 있고, 이제는 매수 또는 매도 신호가 발생하면 현재 캔들이 아닌 새 캔들 에서 열리도록 할 수 없습니다!!

코드는 다음과 같습니다.

무효 OnTick(){

for (int i=0; i<OrdersTotal(); i++)

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
반품;

이중 RSI0 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
이중 RSI1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1);

이중 STO0=iStochastic(NULL, 0, KPeriod, DPPeriod, 감속, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 0);
이중 STO1=iStochastic(NULL, 0, KPeriod, DPPeriod, 감속, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 1);

이중 STO2 = iStochastic(NULL, 0, KPeriod, DPPeriod, 감속, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 0);
이중 STO3 = iStochastic(NULL, 0, KPeriod, DPPeriod, 감속, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 1);

이중 SL=0,TP=0;

if (RSI1 < RSIDownLevel && RSIDownLevel < RSI0 && STO2 < STO0){

if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss* 포인트, 숫자);
if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NUL L,Magic)==-1) Print(GetLastError());
}

if (RSI1 > RSIUpLevel && RSIUpLevel > RSI0 && STO3 > STO1){

if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits);
if (손절매!=0) SL = NormalizeDouble(입찰가 + 손절매* 포인트, 자릿수);
if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi d,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
}

리턴(0);
}


다시 한 번 말씀드리지만 현재 양초에서 주문을 여는 것이 저에게 효과적이며 다음 양초에서 주문을 열어야 합니다 !!! 할 수 있도록 도와주세요!!

 
sviter-pro :

잘 자! 어드바이저에는 RSI와 STO가 있고, 이제는 매수 또는 매도 신호가 발생하면 현재 캔들이 아닌 새 캔들 에서 열리도록 할 수 없습니다!!

다시 한 번 말씀드리지만 현재 양초에서 주문을 여는 것이 저에게 효과적이며 다음 양초에서 주문을 열어야 합니다 !!! 도와주세요, 제발!!


 //+------------------------------------------------------------------+
void OnTick ()
  {

   for ( int i= 0 ; i< OrdersTotal (); i++)
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         if ( OrderSymbol ()== Symbol () && Magic== OrderMagicNumber ())
             return ;

   double RSI0 = iRSI ( NULL , 0 , RSIPeriod, PRICE_CLOSE , 0 );
   double RSI1 = iRSI ( NULL , 0 , RSIPeriod, PRICE_CLOSE , 1 );

   double STO0= iStochastic ( NULL , 0 , KPeriod, DPeriod, Slowing, MODE_SMA , STO_LOWHIGH , MODE_MAIN , 0 );
   double STO1= iStochastic ( NULL , 0 , KPeriod, DPeriod, Slowing, MODE_SMA , STO_LOWHIGH , MODE_MAIN , 1 );

   double STO2 = iStochastic ( NULL , 0 , KPeriod, DPeriod, Slowing, MODE_SMA , STO_LOWHIGH , MODE_SIGNAL , 0 );
   double STO3 = iStochastic ( NULL , 0 , KPeriod, DPeriod, Slowing, MODE_SMA , STO_LOWHIGH , MODE_SIGNAL , 1 );

   double SL= 0 ,TP= 0 ;
   
   if (NewBar())
     {
       if (RSI1<RSIDownLevel && RSIDownLevel<RSI0 && STO2<STO0)
        {

         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,NUL L,Magic)==- 1 ) Print ( GetLastError ());
        }

       if (RSI1>RSIUpLevel && RSIUpLevel>RSI0 && STO3>STO1)
        {

         if (takeprofit!= 0 ) TP= NormalizeDouble ( Bid -takeprofit* Point , Digits );
         if (stoploss!= 0 ) SL= NormalizeDouble ( Bid +stoploss * Point , Digits );
         if ( OrderSend ( Symbol (), OP_SELL ,Lot, NormalizeDouble (Bi d, Digits ),slippage,SL,TP, NULL ,Magic)==- 1 ) Print ( GetLastError ());
        }
     }

   return ( 0 );
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime time= 0 ;
   if (time== 0 )
     {
      time= Time [ 0 ];
       return false ;
     }
   if (time!= Time [ 0 ])
     {
      time= Time [ 0 ];
       return true ;
     }
   return false ;
  }
//+------------------------------------------------------------------+
 
sviter-pro :

잘 자! 어드바이저에는 RSI와 STO가 있고 매수 또는 매도 신호가 발생하면 현재 캔들이 아닌 새 캔들 에서 열리도록 만들 수 없습니다!!

코드는 다음과 같습니다.

다시 한 번 말씀드리지만 현재 양초에서 주문을 여는 것이 저에게 효과적이며 다음 양초에서 주문을 열어야 합니다 !!! 할 수 있도록 도와주세요!!

막대 0과 1에서 표시기 값을 가져옵니다.

0과 1 대신 각각 1과 2의 값을 가져옵니다.

사유: