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

 
EVGENII SHELIPOV # :

모두에게 좋은 하루!!!

나는 주문 그리드의 평균 가격에서 그룹 주문의 후행 중지를 위한 Expert Advisor에 대한 코드를 작성 중입니다.

로그에는 오류가 없지만 트롤도 작동하지 않습니다. 다음은 오류가 있는 위치를 알려주는 코드입니다. 감사해요!!!

트롤이 없습니다!

다음과 같아야 합니다.

손익분기 가격+이익-트롤인 경우!= TakeProfit이 후행 시작

이것은 어디에서 데이터를 가져옵니까?

 //+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    price += OrderOpenPrice() * OrderLots();
    order_lots += OrderLots() ;
     for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
    {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))

주문오픈가격

선택한 주문의 시작 가격을 반환합니다.

더블주문오픈가격 ( );

메모:

OrderSelect() 함수를 사용하여 주문을 미리 선택해야 합니다.

 
MakarFX # :

감사해요.)

 
MakarFX # :

트롤이 없습니다!

다음과 같아야 합니다.

손익분기 가격+이익-트롤인 경우!= TakeProfit이 후행 시작

좋은 하루 마카르!!!!

내가 이해하는 한 그것은이 라인에 관한 것입니다. 이 경우 매수 주문:

 if (Bid - NormalizeDouble (price / order_lots, Digits ) > TrailingStopGroupOrder* Point || OrderStopLoss() == 0 )

Makar, 가능하면 더 자세히 설명

 
MakarFX # :

트롤이 없습니다!

다음과 같아야 합니다.

손익분기 가격+이익-트롤인 경우!= TakeProfit이 후행 시작

이것은 어디에서 데이터를 가져옵니까?

Makar 당신은 오늘 수수께끼로 말합니다

또 다른 질문은 우리가 확인하지 않고 손익분기점을 계산하는 이유입니다????

 
MakarFX # :

트롤이 없습니다!

다음과 같아야 합니다.

손익분기 가격+이익-트롤인 경우!= TakeProfit이 후행 시작

이것은 어디에서 데이터를 가져옵니까?

주문오픈가격

선택한 주문의 시작 가격을 반환합니다.

더블주문오픈가격 ( );

메모:

OrderSelect() 함수를 사용하여 주문을 미리 선택해야 합니다.

예, 생각했고 당신은 이미 썼습니다

 
EVGENII SHELIPOV # :

좋은 하루 마카르!!!!

내가 이해하는 한 그것은이 라인에 관한 것입니다. 이 경우 매수 주문:

Makar, 가능하면 더 자세히 설명

주문 그룹이 있고 손익분기점을 정의하고 선을 생성하지만 별도의 기능으로 수행하는 것이 좋습니다!

    avg_price = NormalizeDouble (price / order_lots, Digits );
     {
     ObjectDelete ( 0 , "AveragePriceLine" );
     ObjectCreate ( 0 , "AveragePriceLine" , OBJ_HLINE , 0 , 0 , avg_price);
     ObjectSet( "AveragePriceLine" , OBJPROP_COLOR , Magenta);
     }

다음으로 avg_price에/에서 더하고/빼고자 하는 포인트의 이익 값이 있습니다.

     if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder* Point , Digits );
     if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder* Point , Digits );

그런 다음 별도의 트롤 기능

구매의 경우: BID > avg_price = OrderModify()

판매용: ACK < avg_price = OrderModify()인 경우


불행히도 귀하의 코드에는 논리적인 조치가 없습니다(주관적으로).

 
EVGENII SHELIPOV # :

예, 생각했고 당신은 이미 썼습니다

기능을 분리하여 탐색하기 쉽도록 합니다.

다음은 OnTick()의 예입니다.

 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
     {
      CloseOrder();
     }
   sl  = MathMax (Stoploss, MarketInfo( _Symbol , MODE_STOPLEVEL)) * Point ();
   SL  = NormalizeDouble (sl* Point (), Digits );
   tp  = MathMax (Takeprofit, MarketInfo( _Symbol , MODE_STOPLEVEL)) * Point ();
   TP  = NormalizeDouble (tp* Point (), Digits );
   //---
   if (CountOrders()== 0 && ObjectGetInteger ( 0 , "lab_Button" , OBJPROP_STATE ))
     {
       if (TradeSignal()>= 0 )
        {
         SendOrder(TradeSignal());
        }
     }
   //---
   if (!IsTradeAllowed()) 
     {DrawLABEL( "lab_Торговля" , 0 , 0 , 0 , clrRed , "Торговля запрещена" ); return ;} 
   else
     {DrawLABEL( "lab_Торговля" , 0 , 0 , 0 , clrLime , "Торговля разрешена" );}
  }
//+------------------------------------------------------------------+

보시다시피 여기에는 함수 호출만 있습니다.

 
MakarFX # :

기능을 분리하여 탐색하기 쉽도록 합니다.

다음은 OnTick()의 예입니다.

보시다시피 여기에는 함수 호출만 있습니다.

Makar님 감사합니다 생각을 모아서 이 방향으로 생각하겠습니다

 
EVGENII SHELIPOV # :

Makar님 감사합니다 생각을 모아서 이 방향으로 생각하겠습니다

연락하다)
 
질문: 고문의 지도에서 명령을 철회하는 방법은 무엇입니까? 내가 모르는 MT4 자체의 일부 스크린샷이나 기능이 이미 있을 수 있습니다. 깨우쳐주세요. 사용자 수준에서 plz: mql 3, 4, 5 등을 공부하려면 욕망도 기회도 없습니다.