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

 

안녕하세요!!!

이해하도록 도와주세요. 나는 그리드 어드바이저에 트레일링 스톱을 고정합니다. 트롤이 작동을 멈췄습니다. 무슨 일인지 말해줘

단일 주문이 열리는 코드는 다음과 같습니다.

 double JAW = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORJAW, 0 );
     double TEETH = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORTEETH, 0 );
     double LIPS = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORLIPS, 0 );
     double DI_PLUSCurrent= iADX ( Symbol (),TimeframesIndicators, 14 , PRICE_CLOSE ,MODE_PLUSDI, 0 );
     double DI_MINUSCurrent= iADX ( Symbol (),TimeframesIndicators, 14 , PRICE_CLOSE ,MODE_MINUSDI, 0 );
     double MacdCurrent= iMACD ( Symbol (),TimeframesIndicators, 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 0 );
     double MacdPrevious= iMACD ( Symbol (),TimeframesIndicators, 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 2 ); 
     double ATR = iATR ( Symbol (), TimeframesVolatility, BarCount, 0 );
     if (CountTrade() == 0 )
     { 
         if ((UseHour== 1 &&Hour()>=StartTime&&Hour()<=StopTime)||UseHour== 0 )
         if (LIPS>TEETH&& TEETH>JAW&&DI_PLUSCurrent> 18 &&DI_PLUSCurrent>DI_MINUSCurrent&&MacdCurrent>MacdPrevious)                              
         {
           FirstLots = Lots();
           tp = NormalizeDouble (Ask + TakeProfitFirstOrder* Point , Digits );
           ticket = OrderSend ( Symbol (), OP_BUY, FirstLots, Ask, slip, 0 , tp, "1-ый ордер" , Magic, 0 , Blue); 
            {
             if (Bid - OrderOpenPrice() > TrailingStop* Point ) 
              Trailing();
            }
         }
         if ((UseHour== 1 &&Hour()>=StartTime&&Hour()<=StopTime)||UseHour== 0 )
         if (LIPS<TEETH&& TEETH<JAW&&DI_MINUSCurrent> 18 &&DI_MINUSCurrent>DI_PLUSCurrent&&MacdCurrent<MacdPrevious)                            
         {
           FirstLots = Lots();
           tp = NormalizeDouble (Bid - TakeProfitFirstOrder* Point , Digits );
           ticket = OrderSend ( Symbol (), OP_SELL, FirstLots, Bid, slip, 0 , tp, "1-ый ордер" , Magic, 0 , Red); 
           {
           if (OrderOpenPrice() - Ask > TrailingStop* Point )
              Trailing();
           }
         }
       }

다음은 단일 주문을 수정하는 기능입니다.

 //+----------------------------------------------------------------------------+
//| Трейлинг стоп одиночных ордеров                                            |
//+----------------------------------------------------------------------------+
void Trailing()
{
   for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
         {
           if (OrderType() == OP_BUY)
           {
             if (Bid - OrderOpenPrice() > TrailingStop* Point || OrderStopLoss() == 0 )
             {
                 if (OrderStopLoss() < Bid - (TrailingStep + TrailingStop)* Point || OrderStopLoss() == 0 )
                {
                   if (!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble (Bid - TrailingStop* Point , Digits ), tp, 0 ))
                     Print ( "Ошибка модификации ордера на покупку!" );
                }
             }
           }
           if (OrderType() == OP_SELL)
           {
             if (OrderOpenPrice() - Ask > TrailingStop* Point || OrderStopLoss() == 0 )
             {
                 if (OrderStopLoss() > Ask + (TrailingStep + TrailingStop)* Point || OrderStopLoss() == 0 )
               {
                   if (!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble (Ask + TrailingStop* Point , Digits ), tp, 0 ))
                     Print ( "Ошибка модификации ордера на продажу!" );
               }
             }
           }
         }
      }
   }
}

감사해요!!!!

 
EVGENII SHELIPOV # :

안녕하세요!!!

이해하도록 도와주세요. 나는 후행 정지를 그리드 어드바이저에 고정했습니다. 지금까지는 첫 번째 주문에만 고정되어 있습니다. 트롤이 작동을 멈췄습니다. 무슨 일인지 말해줘

단일 주문이 열리는 코드는 다음과 같습니다.

다음은 단일 주문을 수정하는 기능입니다.

감사해요!!!!

영장이 없을 때만 트롤에 접근할 수 있습니다...
 
MakarFX # :
맞습니다. 작동합니다 ... 부두에 오류가 있습니다.
1345 빌드에서 터키의 다중 통화 모드가 작동합니다.) 10개의 전공에 대해 확인하고 10개 쌍 모두에서 데이터를 수신하고 원하는 대로 그립니다)
그리고 테스터의 버튼을 누른다)
 
MakarFX # :
영장이 없을 때만 트롤에 접근할 수 있습니다...

변했어 변한게 없어

 void OnTick ()
{
     double JAW = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORJAW, 0 );
     double TEETH = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORTEETH, 0 );
     double LIPS = iAlligator ( Symbol (),TimeframesIndicators, 13 , 8 , 5 , 8 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN ,MODE_GATORLIPS, 0 );
     double DI_PLUSCurrent= iADX ( Symbol (),TimeframesIndicators, 14 , PRICE_CLOSE ,MODE_PLUSDI, 0 );
     double DI_MINUSCurrent= iADX ( Symbol (),TimeframesIndicators, 14 , PRICE_CLOSE ,MODE_MINUSDI, 0 );
     double MacdCurrent= iMACD ( Symbol (),TimeframesIndicators, 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 0 );
     double MacdPrevious= iMACD ( Symbol (),TimeframesIndicators, 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 2 ); 
     double ATR = iATR ( Symbol (), TimeframesVolatility, BarCount, 0 );
     if (CountTrade() == 0 )
     { 
         if ((UseHour== 1 &&Hour()>=StartTime&&Hour()<=StopTime)||UseHour== 0 )
         if (LIPS>TEETH&& TEETH>JAW&&DI_PLUSCurrent> 18 &&DI_PLUSCurrent>DI_MINUSCurrent&&MacdCurrent>MacdPrevious)                              
         {
           FirstLots = Lots();
           tp = NormalizeDouble (Ask + TakeProfitFirstOrder* Point , Digits );
           ticket = OrderSend ( Symbol (), OP_BUY, FirstLots, Ask, slip, 0 , 0 , "1-ый ордер" , Magic, 0 , Blue); 
         }
         if ((UseHour== 1 &&Hour()>=StartTime&&Hour()<=StopTime)||UseHour== 0 )
         if (LIPS<TEETH&& TEETH<JAW&&DI_MINUSCurrent> 18 &&DI_MINUSCurrent>DI_PLUSCurrent&&MacdCurrent<MacdPrevious)                            
         {
           FirstLots = Lots();
           tp = NormalizeDouble (Bid - TakeProfitFirstOrder* Point , Digits );
           ticket = OrderSend ( Symbol (), OP_SELL, FirstLots, Bid, slip, 0 , 0 , "1-ый ордер" , Magic, 0 , Red); 
         }
         if (CountTrade() == 1 ) Trailing();

       }
 
EVGENII SHELIPOV # :

변했어 변한게 없어

당신은 아무것도 변경하지 않았습니다

당신의 호소

 if (CountTrade() == 1 ) Trailing();

안에 있다

 if (CountTrade() == 0 )
 
안녕하세요! mt5 전문가인 이동 평균 에서 단방향 거래를 선택(구매 또는 판매)하는 기능을 어떻게든 추가할 수 있습니까?
 
amsgif80 이동 평균 에서 단방향 거래를 선택(구매 또는 판매)하는 기능을 어떻게든 추가할 수 있는지 알려주실 수 있습니까?

MQL5 EA 코드에 이것을 작성하면 이 옵션이 생깁니다.

 
Vladimir Karputov # :

MQL5 EA 코드에 이것을 작성하면 이 옵션이 생깁니다.

시도했지만 작동하지 않았습니다. 나는 이것에 완전히 멍청하다 :(
 
amsgif80 # :
시도했지만 작동하지 않았습니다. 나는 이것에 완전히 멍청하다 :(
노력을 보여주세요...
 
amsgif80 # :
시도했지만 작동하지 않았습니다. 나는 이것에 완전히 멍청하다 :(

이것은 내가 넣으려고 한 코드입니다.

이것을 코드 맨 위에 놓으십시오.
열거형 ENUM_DIRECTION{
DIRECTION_BUY = 0, // 구매만
DIRECTION_SELL = 1, // 판매만
DIRECTION_ANY = 2, // 매수 및 매도
};

ENUM_DIRECTION 입력 inp_direction = DIRECTION_ANY; // 허용된 거래 방향


그런 다음 코드에서 구매가 열리는 위치와 판매가 열리는 위치를 찾으십시오. start() 또는 OnTick() 함수 내부에서 찾아야 합니다.
조건에서 구매 추가:
if(inp_direction!=DIRECTION_SELL)
판매 위치에 조건을 추가하십시오.
if(inp_direction!=DIRECTION_BUY)