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

 
Некоторые ДЦ на реальных счетах именам символов присваивают всякие префиксы типа "." или "FXF" .

Как мне подставлять эти префиксы?

문자열 StringConcatenate (..)를 시도하십시오.

 
Dimka-novitsek :

알겠습니다, 지금 바로 하겠습니다.

또한 조건이 작동하지 않습니다

"작동하지 않음"이 아니라 X와 같은 이유로 도달하지 않습니다.

이것은 Alert 에서 i의 신호가 없다는 사실에서 분명히 알 수 있습니다.

 
ilunga :

"작동하지 않음"이 아니라 X와 같은 이유로 도달하지 않습니다.

이것은 Alert에서 i의 신호가 없다는 사실에서 분명히 알 수 있습니다.


네 바로..
 
만세, 내가 쓴다!!!!!!
 //+------------------------------------------------------------------+
//|                                                    для лавин.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern double stoploss= 0 ; extern double takeprofit= 20 ; extern int otstup= 20 ; extern datetime expiration= 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 int tiket,tikett; double volume= 0.1 ; int i= 0 ,R1= 0 ,R2= 0 ,A= 1 ; double price= PRICE_OPEN ;
   //  R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;
     
     
int start()
  {       int X,Y; double price=(Ask+Bid)/ 2 ;            
//----
       Alert ( "OrdersTotal()" , OrdersTotal ());


 for ( int i= OrdersTotal ();i> 0 ;i--){ Alert ( "i" , i); if (OrderSymbol()== Symbol ()&&OrderMagicNumber( )== 1000 ){
OrderSelect (i,SELECT_BY_POS ); if (OrderType( )==OP_BUYSTOP){X++;}}} Alert ( "X" , X);
if (X== 0 ){


   tiket= OrderSend ( Symbol (), OP_BUYSTOP,  volume*A, price +otstup* Point , Point * 3 , R1, price+takeprofit* Point +otstup* Point , "OP_BUYSTOP" , 1000 ,  expiration, Red ); 
   Alert ( "OP_BUYSTOP" , GetLastError ( )); }
   

 for ( i= OrdersTotal ();i> 0 ;i--){ Alert ( "i" , i); OrderSelect (i,SELECT_BY_POS ); if ( OrderMagicNumber( )== 2000 &&OrderSymbol()== Symbol ()) { 
if (OrderType( ) ==OP_SELLSTOP) { Y++;}}} Alert ( "Y" , Y);
 if (Y== 0 ){ 
   tikett= OrderSend ( Symbol (), OP_SELLSTOP,  volume*A, price -otstup* Point , Point * 3 ,R2, price-takeprofit* Point -otstup* Point , "OP_SELLSTOP" , 2000 ,  expiration, C'0,128,255' );
     Alert ( "OP_SELLSTOP" , GetLastError ( )); 
    }       
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
ilunga :

글쎄, "즉시"옵션이 작동했습니다.

네, 그렇게 작동합니다. 고맙습니다!
 
휴!! 만세!! 일어난!!! 괜찮은!!
 

안녕하세요. 그런 문제, 내가 쓴 어드바이저가 일정 시간이 지나면 멈춘다? 제거되면 시간 초과로 종료를 씁니다. '종소리' 없는 고문의 이유는?

 //+------------------------------------------------------------------+
//|                                                      RSITest.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int deal, cnt;
   double TotalProfit;
//----
   // Проверяем, сободен ли торговый поток
if (!IsTradeAllowed())
{
return ( 0 );
}


if ( OrdersTotal () == 0 )
   {
       while (true)
      {
         //*********************************** Открываем Buy ордер  ***********************************
         if ( iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 ) > iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ))
         { 
             if ( iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 ) > 60 && iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ) < 60 )
            {
               deal = OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 ,iLow( NULL , 0 , 0 )- 20 * Point , 0 , "Long EUR/USD" , 0 , 0 , CLR_NONE );
               if (deal > 0 ) Print ( "Long" );
               else Print ( GetLastError ());
               return ( 0 );
            }
         }
         //*********************************** Открываем Sell ордер  **********************************
         if ( iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 ) < iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ))
         { 
             if ( iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 ) < 40 && iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ) > 40 )
            {
               deal = OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 0 ,iHigh( NULL , 0 , 0 )+ 20 * Point , 0 , "Short EUR/USD" , 0 , 0 , CLR_NONE );
               if (deal > 0 ) Print ( "Short" );
               else Print ( GetLastError ());
               return ( 0 );
            }
         }
      }
   }      
//else
//if
   //{
   for (cnt= 0 ;cnt< OrdersTotal ();cnt++)
      {
       if ( OrderSelect (cnt, SELECT_BY_POS)==true)
      {
         TotalProfit += OrderProfit();
         if (TotalProfit>= 2 || iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 )< iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ))
         {
             if (OrderType()== OP_BUY)
            {         
               // Закрываем и отдыхаем 15 минут
               OrderClose(OrderTicket(),OrderLots(),Bid, 0 , CLR_NONE );
           //    Sleep(900000);
               return ( 0 );
            }
         }
         if (TotalProfit>= 2 || iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 )> iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 1 )) 
         {  
             if (OrderType()== OP_SELL)
            {     
               // Закрываем и отдыхаем 15 минут    
               OrderClose(OrderTicket(),OrderLots(),Ask, 0 , CLR_NONE );
           //    Sleep(900000);
               return ( 0 );
            }
         }
      }
      }   
     //}


//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
while 루프를 제거하십시오. 여기서는 중복됩니다.
 
정말 감사합니다. 또 다른 질문은 15분이 소요됩니다. 시간 프레임, 18-38-55에 주문이 마감되었다고 가정해 봅시다. 어드바이저가 18-45-00까지 작동하지 않도록 하는 방법, 즉 다음 막대로 ??
 
https://www.mql5.com/ru/forum/133552 스레드를 보고 귀하의 경우에만 Timebar 변수가 구현되는 방법을 자세히 살펴보십시오(일부 수정 포함).