Expertadvisor 코드에 표시기 코드를 추가하는 방법 ?? - 페이지 4

 

1way만 열어서 쓰는 방법??

내 ea는 양방향 포지션을 오픈하기 때문에 매수 및 매도.

난 그냥 코드를 편집하고 else를 추가합니다; 거기에,

맞나요??

여기 코드가 있습니다.

       if ((diClose0<diMA1))&&(ZigZagLow){
         OpenBuy();
         return ( 0 );
      }
       else ;

       if ((diClose2>diMA3))&&(ZigZagHigh){
         OpenSell();
         return ( 0 );
      }
 
albert_lim83 :

마지막으로 변수 문제를 완료했습니다.

지금은 만

( - 예기치 않은 함수 정의

) - 불균형 오른쪽 괄호...

내 코드에 ( 및 ) 남겨 놓았습니까 ??

당신은 이것을 가지고 있습니다. . . .

 double zag, zig; b= 0 ; while (a< 2 ) {

. . . 닫는 곳은 어디 입니까 } ?

 
if (!ExistPositions()){

       if ((diClose0<diMA1))&&(ZigZagLow){
         OpenBuy();
         return ( 0 );
      }
       else ;

       if ((diClose2>diMA3))&&(ZigZagHigh){
         OpenSell();
         return ( 0 );
      }
   }
   
   return ( 0 );
}

bool ExistPositions() {
for ( int i= 100 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol ()== Symbol ()) {
return (True);
}
} 
} 
return (false);
}
void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend ( Symbol
(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenBuy); 
 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend ( Symbol
(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenSell); 

} 
string GetCommentForOrder() { return (Name_Expert); } 

double GetSizeLot() { return (Lots); } 
double GetTakeProfitBuy() { return (Ask+lTakeProfit* Point ); } 
double GetTakeProfitSell() { return (Bid-sTakeProfit* Point ); }
double GetStopLossBuy() { return (Bid-lStopLoss* Point ); }
double GetStopLossSell() { return (Ask+sStopLoss* Point ); }

오류는

ExistPositions - 전역 범위에 대한 표현식이 허용되지 않습니다.

및 } - 불균형 괄호.

 

오류가 항상 변경되는 이유가 궁금하세요?

이 문제를 해결한 후

그런 다음 거기에 오류가 있습니다.

거기에 고정한 후,

여기에 오류가 있습니다.

 
albert_lim83 :

오류는

ExistPositions - 전역 범위에 대한 표현식이 허용되지 않습니다.

및 } - 불균형 괄호.

자, 이 함수선언 했습니다. . . 읽기 쉽도록 들여쓰기를 조정했습니다. . .

 bool ExistPositions() 
   {
   for ( int i= 100 ; i< OrdersTotal (); i++) 
      {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
         {
         if ( OrderSymbol ()== Symbol ()) 
            {
             return (True);
            }
         } 
      } 
   return (false);
   }

이 코드 . . . 이 함수 선언 . . . 다른 함수 밖에 있어야 하므로 start, init, deinit 등 밖에 있어야 합니다.

 
albert_lim83 :

오류가 항상 변경되는 이유가 궁금하세요?

이 문제를 해결한 후

그런 다음 거기에 오류가 있습니다.

거기에 고정한 후,

여기에 오류가 있습니다.

하나의 오류가 다른 오류를 가리기 때문입니다. . . 하나를 수정하면 다른 하나가 컴파일러에 표시됩니다. . . 예를 들어, 올바른 수의 중괄호가 있을 수 있지만 잘못된 위치에 있을 수 있습니다. . . 또는 닫는 중괄호와 여는 중괄호를 놓쳤을 수 있습니다. . . 그래서 숫자는 일치하지만 잘못되었습니다.
 
RaptorUK :

자, 이 함수를 선언 했습니다. . . 읽기 쉽도록 들여쓰기를 조정했습니다. . .

이 코드 . . . 이 함수 선언 . . . 다른 함수 밖에 있어야 하므로 start, init, deinit 등 밖에 있어야 합니다.

여전히 같은 오류...


ExistPositions - 전역 범위에 대한 표현식이 허용되지 않습니다.

및 } - 불균형 괄호.

어디를 변경해야 합니까?

 
albert_lim83 :


어디를 변경해야 합니까?

모르겠어요 . . . 전체 코드를 보여줍니다.
 
RaptorUK :
모르겠어요 . . . 전체 코드를 보여줍니다.

동의하다 !. 전체 코드가 없으면 많은 도움을 드릴 수 없으므로 더 이상 기대하지 마십시오.

MetaEditor 5와 결합.

   if (!ExistPositions())
     {

       if ((diClose0<diMA1)) && (ZigZagLow)  // <<== ???
        {
         OpenBuy();
         return ( 0 );
        }
       else ;   // <<=== ???

       if ((diClose2>diMA3)) && (ZigZagHigh) // <<=== ???
        {
         OpenSell();
         return ( 0 );
        }
     }

   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistPositions() 
  {
   for ( int i= 100 ; i< OrdersTotal (); i++) // <<=== strange calculation 
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if ( OrderSymbol ()== Symbol ()) 
           {
             return (True);
           }
        }
     }
   return (false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenBuy() 
  {
   double ldLot,ldStop,ldTake;
   string lsComm;
   ldLot=GetSizeLot();
   ldStop = GetStopLossBuy();
   ldTake = GetTakeProfitBuy();
   lsComm = GetCommentForOrder();
   OrderSend ( Symbol
             (),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenBuy);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSell() 
  {
   double ldLot,ldStop,ldTake;
   string lsComm;
   ldLot=GetSizeLot();
   ldStop = GetStopLossSell();
   ldTake = GetTakeProfitSell();
   lsComm = GetCommentForOrder();
   OrderSend ( Symbol
             (),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenSell);

  }
string GetCommentForOrder() { return (Name_Expert); }

double GetSizeLot() { return (Lots); }
double GetTakeProfitBuy() { return (Ask+lTakeProfit* Point ); }
double GetTakeProfitSell() { return (Bid-sTakeProfit* Point ); }
double GetStopLossBuy() { return (Bid-lStopLoss* Point ); }
double GetStopLossSell() { return (Ask+sStopLoss* Point ); }
 

아마 이렇게 작성해야겠죠???

 if (!ExistPositions())
     {
       if (diClose0 < diMA1 && (ZigZagLow)) // <<== ???
        {
         OpenBuy();
         return ( 0 );
        }
         else // <<=== ???
        {
         if (diClose2 > diMA3 && (ZigZagHigh)) // <<=== ???
          {
          OpenSell();
           return ( 0 );
          }
        }
     }