[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 385

 
Michey25 >> :

여기서 무슨 일이야?

간단히 말해서, 이 어드바이저를 시간별 차트에 첨부하고, 시간 시작 시 가격이 cn1보다 높고 현재 가격이 8포인트를 초과하지 않으면 주문이 시작되어야 합니다(가격이 아래인 경우에도 현재 수준) 그리고 어떤 이유로 즉시 나를 위해 자리를 엽니다. 왜요?

그리고 8점의 조건은 어디에 쓰여 있습니까? 8에 MarketInfo(NULL,MODE_POINT)를 곱하는 것이 좋습니다.

 
splxgf >> :

그리고 8점의 조건은 어디에 쓰여 있습니까? 8에 MarketInfo(NULL,MODE_POINT)를 곱하는 것이 좋습니다.

(a-cn1)<0.0008)

 
안녕히 주무세요 여러분. 두 개의 EA를 병합하는 것을 도와주세요. 주어진 MAGIKE로 PYLOSE EA는 지정된 금액에 도달하면 특정 MAGIKOM으로 주문을 마감하고 Trailing EA는 지정된 금액에 도달하면 자산을 추적합니다. 일부를 삽입하는 데 도움을 주세요. 추적에서 PYLOSE로의 코드는 지정된 금액에 도달했을 때 지정된 MAGIKOM으로 주문을 마감하지 않았습니다.
파일:
archive_1.zip  10 kb
 

미쉐이25


내가 대답했을 때 코드가 다소 달랐습니다.)

몇 가지 질문이 있지만 open(0)의 결과는 현재 시간 프레임에 크게 의존합니다. cn이 어디에서 왔으며 어떤 유형인지는 분명하지 않습니다.

종교는 Alert(Open[0],cn1,Open[0]<cn1,a,(a-cn1)<0.0008)을 허용하지 않습니까?

힙 전에 i=1 대신 break를 사용하는 것이 좋습니다. 이렇게 하면 루프가 즉시 종료되고 모든 명령이 끝까지 실행되지 않습니다.

int i=0;
   double a,b;
   while (i==0)
   {
     a=MarketInfo("USDCAD", MODE_ASK);
     b=MarketInfo("USDCAD", MODE_BID); 
     if((Open[0]<cn1)&&((a-cn1)<0.0008))
      {
       OrderSend("USDCAD",OP_BUY,1,a,1,SL,cn2);
       i=1;
       }
     if((Open[0]>cn11)&&((cn11-b)<0.0008))
      {
       OrderSend("USDCAD",OP_SELL,1,b,1,SL1,cn21);
       i=1;
      }  
   }
 

안녕하세요. 이것을 구현하도록 도와주세요. 하나의 Expert Advisor에서 2개의 독립적인 조건이 작동하며, 이를 기반으로 각각 고유한 마법이 있는 별도의 주문이 열립니다. 매 순간에 각 조건에 대해 하나의 차트에 하나의 주문만 있을 수 있지만 서로 동시에 있을 수 있습니다. 오픈 오더 가능성을 확인하기 위해 다음과 같이 구성합니다.

 int CalculateCurrentOrders ( string symbol )
  {
   int buys = 0 , sells = 0 , buystop = 0 , sellstop = 0 ;
//----
   for ( int i = 0 ; i < OrdersTotal ( ) ; i + + )
     {
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = false ) break ;
      if ( OrderSymbol ( ) = = Symbol ( ) & & ( OrderMagicNumber ( ) = = MAGIC1 | | OrderMagicNumber ( ) = = MAGIC2 ) )
              {
         if ( OrderType ( ) = = OP_BUY )  buys + + ;
         if ( OrderType ( ) = = OP_SELL ) sells + + ;
          if ( OrderType ( ) = = OP_BUYSTOP )  buys + + ;
         if ( OrderType ( ) = = OP_SELLSTOP ) sells + + ;
        }
     }
//----
   if ( buys > 0 ) return ( buys ) ;
   else       return ( - sells ) ;

그러나 명령은 두 번째 마법으로만 열립니다.

또한 주문도 서로 독립적으로 마감됩니다. 동시에 첫 번째 마법이 있는 주문은 후행을 사용하고 두 번째 마법은 사용하지 않습니다.

이 옵션을 적용했지만 첫 번째 또는 두 번째 조건의 규칙에 따라 클로저가 발생하지 않거나 전혀 발생하지 않습니다.

 

  for ( int i = 0 ; i < OrdersTotal ( ) ; i + + )
     {
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) 
      if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MAGIC1 )
     if ( OrderType ( ) = = OP_BUY ) 
     if ( Sell1 = = 1 )
             {
              OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Red ) ;
              return ( 0 ) ;
             }
                     
      if ( OrderType ( ) = = OP_SELL ) 
      if ( Buy1 = = 1 )
             {
              OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Green ) ;
              return ( 0 ) ;
             }
  
      if ( OrderType ( ) = = OP_BUYSTOP & & Sell1 = = 1 )
         {
         OrderDelete ( OrderTicket ( ) ) ;
         return ( 0 ) ;
         }
      if ( OrderType ( ) = = OP_SELLSTOP & & Buy1 = = 1 )
         {
         OrderDelete ( OrderTicket ( ) ) ;
         return ( 0 ) ;
         }
    }
   
   for ( int i2 = 0 ; i2 < OrdersTotal ( ) ; i2 + + )
     {
      if ( OrderSelect ( i2 , SELECT_BY_POS , MODE_TRADES ) ) 
   
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MAGIC2 )
     if ( OrderType ( ) = = OP_BUY )
      if ( Sellcl0 = = 1 )
       {

       OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Red ) ;
              return ( 0 ) ;
            }
                 
    if ( OrderType ( ) = = OP_SELL ) 
    if ( Buycl0 = = 1 )
    
            {
              OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Green ) ;
              return ( 0 ) ;
          
        }
     if ( OrderType ( ) = = OP_BUYSTOP ) 
     if ( Sellcl0 = = 1 )
         {
         OrderDelete ( OrderTicket ( ) ) ;
         return ( 0 ) ;
         }
      if ( OrderType ( ) = = OP_SELLSTOP & & Buycl0 = = 1 )
        {
         OrderDelete ( OrderTicket ( ) ) ;
        return ( 0 ) ;
         }
      }   
    
     // MODIFICATION -------
     
     TrailingPositionsBuy ( parab ) ;
    TrailingPositionsSell ( parab ) ;
   // TrailingPositionsBuystop(parab);
   // TrailingPositionsSellstop(parab);
    return ( 0 ) ;
   }
/*bool ExistPositions() {
   for (int i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
            return(True);
         }
      } 
   } 
   return(false);
}*/
     
void TrailingPositionsBuy ( double parab ) { 
   for ( int i = 0 ; i < OrdersTotal ( ) ; i + + ) { 
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) { 
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MAGIC1 ) { 
            if ( OrderType ( ) = = OP_BUY ) { 
             //  if (Bid-OrderOpenPrice()>trailingStop*Point) { 
              //    if (OrderStopLoss()<Bid-trailingStop*Point) 
                     ModifyStopLoss ( parab ) ;
                                   
               } 
            } 
         } 
      } 
   } 
//} 
void TrailingPositionsSell ( double parab ) { 
   for ( int i = 0 ; i < OrdersTotal ( ) ; i + + ) { 
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) { 
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MAGIC1 ) { 
            if ( OrderType ( ) = = OP_SELL ) { 
             //  if (OrderOpenPrice()-Ask>trailingStop*Point) { 
             //     if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)  
                     ModifyStopLoss ( parab ) ;
                  
               } 
            } 
         } 
      } 
   } 

Sell1, Buy1, Sellcl0, buycl0 - 마감 조건에 대한 설명.


그러한 위치의 이중 열거가 전혀 효과가 있습니까? 덕분에!

 
exolon >> :

안녕하세요. 이것을 구현하도록 도와주세요. 하나의 Expert Advisor에서 2개의 독립적인 조건이 작동하며, 이를 기반으로 각각 고유한 마법이 있는 별도의 주문이 열립니다. 매 순간에 각 조건에 대해 하나의 차트에 하나의 주문만 있을 수 있지만 서로 동시에 있을 수 있습니다. 오픈 오더 가능성을 확인하기 위해 다음과 같이 구성합니다.

그러나 명령은 두 번째 마법으로만 열립니다.

또한 주문도 서로 독립적으로 마감됩니다. 동시에 첫 번째 마법이 있는 주문은 후행을 사용하고 두 번째 마법은 사용하지 않습니다.

이 옵션을 적용했지만 첫 번째 또는 두 번째 조건의 규칙에 따라 클로저가 발생하지 않거나 전혀 발생하지 않습니다.

Sell1, Buy1, Sellcl0, buycl0 - 마감 조건에 대한 설명.


그러한 위치의 이중 열거가 전혀 효과가 있습니까? 덕분에!


주문을 닫고 삭제한 후 반환을 제거하고 함수 끝에 넣거나 대신 연속체를 넣습니다.

 

안녕하세요 여러분, 저는 mql로 첫 번째 프로그램을 작성하고 있으며 동시에 언어를 배우고 있습니다.

전문가 여러분, 질문이 있습니다. 말씀해 주십시오.


구매가 있고 판매 조건을 확인 하는 기능이 호출 되면 테스터가 중단되고 코드가 더 이상 실행되지 않습니다. 무슨 일이야? 4시간 동안 참고서에 올라갔지만 나 자신을 이해하지 못한다.


void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

 
Jahspear писал(а) >>

안녕하세요 여러분, 저는 mql로 첫 번째 프로그램을 작성하고 있으며 동시에 언어를 배우고 있습니다.

전문가 여러분, 질문이 있습니다. 말씀해 주십시오.

구매가 있고 판매 조건을 확인하는 함수가 호출되면 테스터가 중단되고 코드가 더 이상 실행되지 않습니다. 무슨 일이야? 4시간 동안 참고서에 올라갔지만 나 자신을 이해하지 못한다.

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

왜 싸이클을 만들었을까? 조건이 없으면 종료하고 신호가 언제 나타날지 누가 알 때까지 기다리지 마십시오.

 

안녕하세요.

표시기에는 함수가 있습니다. IndicatorShortName("iC_C_mod, ..... ");

그러나 이 비문 외에도 표시기 창에 동적으로 변하는 변수가 있는 주석을 삽입할 수 있어야 합니다.

f를 입력하고 Comment() ;

그러나 정확히는 지표 창에만 있고 차트 자체에는 전혀 없습니다.

제발. 말하다 ?

 
Jahspear >> :



void CheckSell()
{
  if ((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
   Sell();
}


아마도 이와 같을 것입니다. 그렇지 않으면 현대 하드웨어에서 무한 루프가 매우 오랜 시간이 걸립니다.