MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 91

 
Vitaly Muzichenko :
가격순으로 정렬해야 합니다. 크기로 검색할 수 없고 그리드가 여러 개 있을 수 있으며 가장 큰 것 또는 작은 것 중 하나를 찾을 수 있지만 첫 번째와 마지막은 찾을 수 없기 때문입니다.

마리나가 게시한 기능에 대해 이야기하고 있습니다.

거기에서 최종 주문의 정의는 시간별로 수행 됩니다.

 
Alekseu Fedotov :

마리나가 게시한 기능에 대해 이야기하고 있습니다.

거기에서 최종 주문의 정의는 시간별로 수행 됩니다.

모든 것이 동시에 거기에 배치되었으므로 14개의 주문으로 차이가 1초가 될 수 있으며 시간순으로 정렬하는 것은 불가능합니다.
 
Marina Korotkih :

이렇게 부르니까

GetOrderOpenPrice( Symbol (), OP_SELLSTOP ,_Magic)
이해했다.
 

친애하는 프로그래머! 이 문제를 해결하는 데 도움이 됩니다. EA는 M15에서 거래를 시작하지만 H1에서도 조건을 취합니다. H1의 조건이 충족되면 M15에 여러 진입점이 있을 수 있습니다. 실제로 문제는 H1의 조건이 반대 방향으로 바뀔 때까지 첫 번째 진입점으로만 자신을 제한하려는 것입니다.

k=0;
(i=OrdersTotal()-1;i>=0;i--)
{
새로 고침();
if( 주문 선택 (i, SELECT_BY_POS, MODE_TRADES ) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != 시간[0]) // 매수

 
customer03 :

친애하는 프로그래머! 이 문제를 해결하는 데 도움이 됩니다. EA는 M15에서 거래를 시작하지만 H1에서도 조건을 취합니다. H1의 조건이 충족되면 M15에 여러 진입점이 있을 수 있습니다. 실제로 문제는 H1의 조건이 반대 방향으로 바뀔 때까지 첫 번째 진입점으로만 자신을 제한하려는 것입니다.

k=0;
(i=OrdersTotal()-1;i>=0;i--)
{
새로 고침();
if(주문 선택(i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != 시간[0]) // 매수

그리고 코드 없이? 특히 코드가 명확하지 않기 때문에.

정확히 무엇을 원하십니까? 추상적이지 않지만 정확히 얻고자 하는 것.

 
customer03 :

친애하는 프로그래머! 이 문제를 해결하는 데 도움이 됩니다. EA는 M15에서 거래를 시작하지만 H1에서도 조건을 취합니다. H1의 조건이 충족되면 M15에 여러 진입점이 있을 수 있습니다. 실제로 문제는 H1의 조건이 반대 방향으로 바뀔 때까지 첫 번째 진입점으로만 자신을 제한하려는 것입니다.

k=0;
(i=OrdersTotal()-1;i>=0;i--)
{
새로 고침();
if(주문 선택(i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != 시간[0]) // 매수

샘플 알고리즘:

bool flag = false ;
bool flagH1 = true ;
bool flagM15 = true ;

if (!flag && flagH1 && flagM15)
{
  flag = true ;
}

if (!flagH1 && flag)
flag = false ;
 
Artyom Trishkin :

그리고 코드 없이? 특히 코드가 명확하지 않기 때문에.

정확히 무엇을 원하십니까? 추상적이지 않지만 정확히 얻고자 하는 것.

안녕하세요 Artyom입니다! 작업은 H1에 신호가 있는 동안 M15의 항목을 1(첫 번째 신호)로 제한하는 것입니다.
#property strict
extern double     Lot= 0.1 ;

extern int     stoploss= 20 ;
extern int takeprofit= 50 ;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.



extern int   Magic = 99999999 ;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1 ;        
// величина максимально возможного проскальзывания.
//  slippage
extern int sec = 2000 ;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure


//============================= Stochastic
input int InpKPeriod= 13 ; // K Period
input int InpDPeriod= 3 ; // D Period
input int InpSlowing= 3 ; // Slowing

//============================= Stochastic
input int InpKPeriod1= 13 ; // K Period
input int InpDPeriod1= 3 ; // D Period
input int InpSlowing1= 3 ; // Slowing





int A, a, b, i, ii, o;


     double SL, TP, op, stH0, stH1, stM0, stM1;
     bool c;
     datetime OldTime, Time0, opp;

int init()
  {    
  
   OldTime = iTime ( NULL , Period (), 0 );
  
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  

                      
//====================================================================

stH0 = iStochastic ( NULL , 60 ,InpKPeriod,InpDPeriod,InpSlowing, MODE_EMA , 1 , MODE_MAIN , 0 );
stH1 = iStochastic ( NULL , 60 ,InpKPeriod,InpDPeriod,InpSlowing, MODE_EMA , 1 , MODE_MAIN , 1 );

stM0 = iStochastic ( NULL , 15 ,InpKPeriod1,InpDPeriod1,InpSlowing1, MODE_EMA , 1 , MODE_MAIN , 0 );
stM1 = iStochastic ( NULL , 15 ,InpKPeriod1,InpDPeriod1,InpSlowing1, MODE_EMA , 1 , MODE_MAIN , 1 );
  
//====================================================================  

          
b= 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)  
       {
         RefreshRates ();
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true ) a = 0 ;
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) b++;
       }

      
if (  stM1 <= 20 && stM0 > 20   && stH0 > 70   && b== 0    && opp != Time [ 0 ]) // покупка
      {
       opp = Time [ 0 ];

     RefreshRates ();
    op = Ask ;
   A = OrderSend ( Symbol (), OP_BUY , Lot, Ask , Slipp, 0 , 0 , NULL , Magic, 0 , Blue);
    o = GetLastError ();
         while (A < 0 && o != 4109 && o != 132 && o != 133 )
         {
           Print ( "Error =" , o);
         Sleep (sec);
         RefreshRates ();
         op = Ask ;
         A = OrderSend ( Symbol (), OP_BUY , Lot, Ask , Slipp, 0 , 0 , NULL , Magic, 0 , Blue);
         o = GetLastError ();
        }      
        
SL = op-stoploss* Point ;
if (stoploss == 0 ) SL = 0 ;
TP = op+takeprofit* Point ;
if (takeprofit == 0 ) TP = 0 ;        
        
     if (SL != 0 || TP != 0 )
      {
     RefreshRates ();
     if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
    c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
    o = GetLastError ();
       while (c == false && o != 4109 && o != 132 && o != 133 )
                  {
                   Print ( "Error =" , o);
                   Sleep (sec);
                   RefreshRates ();
                   if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
                  c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
                  o = GetLastError ();
                  }  }          
     }

//---------------------------------------------------------------------------------------------------------+                          
b= 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)  
       {
         RefreshRates ();
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true ) a = 0 ;
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) b++;
       }


if ( stM1 >= 80 && stM0 < 80   &&  stH0 < 30    && b== 0    && opp != Time [ 0 ]) // продажа
     {
     opp = Time [ 0 ];

       RefreshRates ();
      op = Bid ;
         A = OrderSend ( Symbol (), OP_SELL , Lot, Bid , Slipp, 0 , 0 , NULL , Magic, 0 , Red);
         o = GetLastError ();
             while (A < 0 && o != 4109 && o != 132 && o != 133 )
            {
             Print ( "Error =" , o);
             Sleep (sec);
             RefreshRates ();
            op = Bid ;
            A = OrderSend ( Symbol (), OP_SELL , Lot, Bid , Slipp, 0 , 0 , NULL , Magic, 0 , Red);
            o = GetLastError ();
            }    

SL = op+stoploss* Point ;
if (stoploss == 0 ) SL = 0 ;
TP = op-takeprofit* Point ;
if (takeprofit == 0 ) TP = 0 ;
        
         if (SL != 0 || TP != 0 )
      {
         RefreshRates ();
         if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
         c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
         o = GetLastError ();
         while (c == false && o != 4109 && o != 132 && o != 133 )
                  {
                   Print ( "Error =" , o);
                   Sleep (sec);
                   RefreshRates ();
                   if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
                  c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);                  
                  o = GetLastError ();
                  } }
      }
      
    

   return ( 0 );
   }      

  
//+------------------------------------------------------------------+
 
customer03 :
안녕하세요 Artyom입니다! 작업은 H1에 신호가 있는 동안 M15의 항목을 1(첫 번째 신호)로 제한하는 것입니다.

음, 제로 캔들 M15의 열린 위치 수를 확인하십시오. 이미 포지션이 있고 제로 캔들 M15에서 열려 있으면 다시 열지 마십시오.
 

안녕하세요, 친애하는 포럼 사용자. Expert Advisor에서 Metatrader4에 내장된 "trailing stop" 도구의 값을 어떻게든 설정할 수 있습니까? 흥미로운 것은 내장 도구와 상관 없이 후행 중지를 구현하기 위해 Expert Advisor에 코드를 추가하는 것이 아닙니다.

답변에 미리 감사드립니다.

 
Dr_G :

안녕하세요, 친애하는 포럼 사용자. Expert Advisor에서 Metatrader4에 내장된 "trailing stop" 도구의 값을 어떻게든 설정할 수 있습니까? 흥미로운 것은 내장 도구와 상관 없이 후행 중지를 구현하기 위해 Expert Advisor에 코드를 추가하는 것이 아닙니다.

답변에 미리 감사드립니다.

아니요.