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

 
Vitalie Postolache :

Duck은 인수가 제공되기 때문에 함수에 인수를 전달합니다. 제거하는 것이 좋지만 동어반복으로 판명됩니다.

그리고 사이클에서 모든 주문이 다시 계산되는 것은 아닙니다.

for (i= OrdersTotal ()- 1 ; i> = 0 ; i--)
그리고 계정 상태, 티켓 비교, 하나의 티켓에 여러 주문이 가능한가요?
수정, 인수 삽입, 전역 범위로 이동, 이제 이 인수가 다른 함수의 입력으로 이미 사용되었다는 경고가 표시됩니다.

티켓 덮어쓰기, 마틴과 마지막 주문부터 작업

그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다...

제대로 작동하도록 하는 것이 흥미롭습니다.

지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류"

 

인사말.

다음과 같은 항목을 발견했습니다.

if ( OrderSelect (ticket, SELECT_BY_TICKET )) OrderModify (ticket, OrderOpenPrice (), SL, TP, 0 ;

즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까?

if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ?

도움말과 교과서를 살펴보았는데 이 형식에 대한 기록을 찾지 못했습니다.

그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까?

 
trader781 :
수정, 인수 삽입, 전역 범위로 이동, 이제 이 인수가 다른 함수의 입력으로 이미 사용되었다는 경고가 표시됩니다.

티켓 덮어쓰기, 마틴과 마지막 주문부터 작업

그런 다음 'count' 선언을 제거하는 방법은 줄에서 전역 선언을 숨깁니다...

제대로 작동하도록 하는 것이 흥미롭습니다.

지금까지 테스터의 결과에 따르면 어딘가에 꽤 좋은 작업을 제공하고 어딘가에 즉시 "Expert Advisor의 극복 할 수없는 오류"

수정 된 버전을 표시하십시오. 그렇지 않으면 코드없이 운세를 얻습니다.
 
spoiltboy :

인사말.

다음과 같은 항목을 발견했습니다.

if ( OrderSelect (ticket, SELECT_BY_TICKET )) OrderModify (ticket, OrderOpenPrice (), SL, TP, 0 ;

즉, 여기서 조건 연산자 if 대신 bool 유형 의 거래 함수를 즉시 작성했습니다 . 나는 그러한 표기법이 다음과 같다는 것을 올바르게 이해하고 있습니까?

if ( OrderSelect (티켓, SELECT_BY_TICKET )) ==true { OrderModify (티켓, OrderOpenPrice (), SL, TP, 0} ; ?

나는 도움말과 교과서를 모두 보았습니다. 이 형식에 대한 기록을 찾지 못했습니다.

그리고 표현식 대신 다른 유형의 함수를 즉시 작성할 수 있습니까? 그렇다면 알고리즘은 무엇입니까?

이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다.

그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다.

 
Vitalie Postolache :

이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 작동하지 않습니다. 조건은 대괄호 밖으로 던질 수 없습니다.

그리고 이와 같이 if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; 할 수 있습니다.

예, 브래킷으로 밀봉되었습니다. 나머지 질문은 관련이 있습니다.
 
Vitalie Postolache :
수정 된 버전을 표시하십시오. 그렇지 않으면 코드없이 운세를 얻습니다.

확인.

그는 그가 할 수있는 것을 얻은 것 같습니다. 설명이 이루어졌습니다. 목표는 원하는 대로 작동하지 않는 이유를 이해하는 것입니다.

파일:
count.mq4  19 kb
 
//+------------------------------------------------------------------+
//|                                                      ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss     = 1000 ; //Стоплосс ордера  
extern double TakeProfit   = 1500 ; //Тейкпрофит ордера
extern double TrailingStop = 1000 ; // трал
extern int     Delta        = 100 ; //Расстояние от цены для установки ордера
extern double LOT          = 0.1 ; //Объём позиции
extern int     Magic        = 200 ;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if (TrailingStop!= 0 ) Trailing();
  
   //ИНДИКАТОР RSI
   double RSI0= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 0 );
   double RSI1= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 1 );
  
   int b,s,p,res;
   double BuyPrice= Ask +Delta* Point ;
   double SellPrice= Bid -Delta* Point ;
  
   for ( int i= 0 ; i< OrdersTotal (); i++)
    {
     if ( OrderSelect (i, SELECT_BY_POS )== true )
      {  
         if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
         if ( OrderType ()== OP_BUYSTOP ) b++;
         if ( OrderType ()== OP_SELLSTOP ) s++;        
      }  
    }
       double SL,TP;
//---- buy stop
   if (RSI0> 50 &&RSI1< 50 )
     {
          
      res= OrderSend ( Symbol (), OP_BUYSTOP ,LOT,BuyPrice, 0 ,BuyPrice-StopLoss* Point ,BuyPrice+TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_SELLSTOP ,Blue);
     }        
//---- sell stop  
   if (RSI0< 50 &&RSI1> 50 )
     {

      res= OrderSend ( Symbol (), OP_SELLSTOP ,LOT,SellPrice, 0 ,SellPrice+StopLoss* Point ,SellPrice-TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_BUYSTOP ,Red );
     }
//---- buy stop делете
       if (RSI0< 50 &&RSI1> 50 )
    {
     OrderDelete ( OrderTicket ());
    
    }
//---- sell stop делете
       if (RSI0> 50 &&RSI1< 50 )
    {
     OrderDelete ( OrderTicket ());
    
    }
//----
   return ( 0 );
  }
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------

void Trailing()
{
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
       if ( OrderSymbol ()== Symbol ()|| OrderMagicNumber ()==Magic)
       if ( OrderType ()== OP_BUY )
         {
           if (TrailingStop> 0 )  
            {                
               if ( Bid - OrderOpenPrice ()>TrailingStop)
               {
                 if ( OrderStopLoss ()< Bid -TrailingStop)
                  {
                     OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TrailingStop, OrderTakeProfit (), 0 ,Green);
                  }
               }
            }
         }
        
         if ( OrderType ()== OP_SELL )
         {
           if (TrailingStop> 0 )  
            {                
               if (( OrderOpenPrice ()- Ask )>TrailingStop)
               {
                 if (( OrderStopLoss ()>( Ask +TrailingStop)) || ( OrderStopLoss ()== 0 ))
                  {
                     OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TrailingStop, OrderTakeProfit (), 0 ,Red);
                  }
               }
            }
         }  
   }
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
주문이 삭제되지 않습니다 도와주세요
 

주문이 삭제되지 않습니다 도와주세요
미개봉 주문 티켓은 어떻게 구하셨나요?
 
trader781 :
미개봉 주문 티켓은 어떻게 구하셨나요?
그렇죠 거기엔 못삽니다
for ( int i= 0 ; i< OrdersTotal (); i++)
    {
     if ( OrderSelect (i, SELECT_BY_POS )== true )
      {  
         if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
         if ( OrderType ()== OP_BUYSTOP )
             if (сигнал_bue) OrderDelete ( OrderTicket ());
                 else b++;
         if ( OrderType ()== OP_SELLSTOP )
             if (сигнал_sell) OrderDelete ( OrderTicket ());
                 else s++;
      }  
    }
 
Movlat Baghiyev :
그렇죠 거기엔 못삽니다
for ( int i= 0 ; i< OrdersTotal (); i++)
    {
     if ( OrderSelect (i, SELECT_BY_POS )== true )
      {  
         if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
         if ( OrderType ()== OP_BUYSTOP )
             if (сигнал_bue) OrderDelete ( OrderTicket ());
                 else b++;
         if ( OrderType ()== OP_SELLSTOP )
             if (сигнал_sell) OrderDelete ( OrderTicket ());
                 else s++;
      }  
    }
나는 그것을 설명하는 방법을 모른다. 그러나 그것은 확실히 걸작입니다.