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

 
Alexander Avksentyev # :

수정했습니다. 이제 작동합니다. 물론 정확하지는 않지만 작동합니다.

노출 멈춤이 잘못되었습니다. 극복 방법은?

OrderOpenPrice()* Point 
OrderStopLoss()* Point

1.12500*포인트=0.0000112500

 
Tretyakov Rostyslav # :

1.12500*포인트=0.0000112500

 Print ( /*((*/ NormalizeDouble ((Bid - OrderOpenPrice()* Point ), Digits ) 

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


하지만 따로 계산하면
 Print (/*(( NormalizeDouble ((Bid - */OrderOpenPrice()* Point /*), Digits )/*

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238e-05

 Print (/*(( NormalizeDouble ((*/Bid - OrderOpenPrice()* Point /*
2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

 
secret 는 거래 서버에 의한 주문 처리 결과를 즉시 반환했습니다.
그런 기능을 mql5에 직접 작성해야 합니까?

거래 중 거래

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Avksentyev # :

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


하지만 따로 계산하면

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238 e-05

2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

게시물 3-4개 읽기

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.12.14
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Vitaly Muzichenko # :

거래 중 거래

고맙습니다. 지옥) MT5의 알고리즘 거래자들에게 얼마나 미안한지.
 
secret # :
고맙습니다. 지옥) MT5의 알고리즘 거래자들에게 얼마나 미안한지.

그만한 가치가 있습니다. MT5에서는 주문이 몇 배 더 빠르게 처리됩니다. 예, 테스트가 더 그럴듯합니다. 테스터 성배는 거의 없습니다.

 
Vitaly Muzichenko # :

게시물 3-4개 읽기

그래, 내가 했어. 이제 알았습니다.

덕분에 버그인줄 알았는데 정상이더군요.
 
Tretyakov Rostyslav # :

1.12500*포인트=0.0000112500

모든 것을 수정했지만 결과는 변경되지 않았습니다.

논리의 문제가 아닐까요?

글쎄, 어떻게 든 그는 TSL을 열었지만 어떻게 중지

 
Alexander Avksentyev # :

모든 것을 수정했지만 결과는 변경되지 않았습니다.

논리의 문제가 아닐까요?

글쎄, 어떻게 든 그는 TSL을 열었지만 어떻게 중지

기능은 다음과 같습니다.

 NormalizeDouble ((Bid - OrderOpenPrice()* Point ), Digits )

NormalizeDouble ((1.12700 - 1.12500/100000 ),5)

"포인트" 가 하는 일을 이해해야 합니다.

인쇄

 Print ( DoubleToString ( NormalizeDouble ( Point , Digits ), Digits ));
 
Tretyakov Rostyslav # :

기능은 다음과 같습니다.

NormalizeDouble ((1.12700 - 1.12500/100000 ),5)

"포인트" 가 하는 일을 이해해야 합니다.

인쇄

~ 전에

 void TrailSL()
{
 if (iTrailStart <= 0.0 ) return ; 
 double tp,sl_lev;
 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 (iTrailTakeProfit > 0.0 )
                {
                tp=OrderTakeProfit() + NormalizeDouble (iTrailTakeProfit * Point (), _Digits );
                 if ( NormalizeDouble (((tp - OrderTakeProfit())) < 0.0 , Digits )) return ;
                tp = OrderTakeProfit();
                } else tp = 0.0 ;
                 if ( NormalizeDouble (Bid - OrderOpenPrice(), Digits ) <= iTrailStart * MarketInfo( Symbol (),MODE_POINT) ); //true
                   {
                     if (OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0 && NormalizeDouble (Bid - OrderStopLoss(), Digits ) <= iTrailDist * MarketInfo( Symbol (),MODE_POINT)); //true
                      {
                       if (iTrailStep > 0.0 && OrderStopLoss() != 0.0 && NormalizeDouble ((Bid - OrderStopLoss()) - iTrailDist * MarketInfo( Symbol (),MODE_POINT), Digits ) < iTrailStep * MarketInfo( Symbol (),MODE_POINT)); //true
                        {
                         sl_lev = Bid - iTrailDist * MarketInfo( Symbol (),MODE_POINT);
                         if ( NormalizeDouble (Bid - sl_lev, Digits ) < MarketInfo( Symbol (),MODE_STOPLEVEL)); //false
                           {
                             if (!OrderModify(Forder,OrderOpenPrice(),sl_lev,tp, 0 ,Red)) return ;
                             Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
                           }
                        }
                      }
                   }
                }
             }

~ 후에

 void TrailSL()
{
   if (iTrailStart <= 0.0 || iTrailStep <= 0.0 )
       return ; 
      
   double sl_lev;
         
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS,MODE_TRADES))
         continue ;
      
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != Magic)
         continue ;  
         
       if (OrderType() == OP_BUY) 
      {
         if ( NormalizeDouble (Bid - OrderOpenPrice(), Digits ) < iTrailStart * MarketInfo( Symbol (),MODE_POINT) )
             continue ;

         if (OrderStopLoss() >= OrderOpenPrice() || NormalizeDouble (Bid - OrderStopLoss(), Digits ()) < iTrailDist * MarketInfo( Symbol (),MODE_POINT))
             continue ;

         if (OrderStopLoss() == 0.0 || NormalizeDouble ((Bid - OrderStopLoss()) - iTrailDist * MarketInfo( Symbol (),MODE_POINT), Digits ) < iTrailStep * MarketInfo( Symbol (),MODE_POINT))
             continue ;

         sl_lev = Bid - iTrailDist * MarketInfo( Symbol (),MODE_POINT);
         if ( NormalizeDouble (Bid - sl_lev, Digits ) < MarketInfo( Symbol (),MODE_STOPLEVEL))
             continue ;
            
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0 , clrRed ))
             Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
      }}}

그러나 지금은 전혀 켜지고 싶지 않습니다.

컴파일러가 아니라 터미널에 오류가 없으며 켜지지 않습니다.

이 마법의 문제는 무엇입니까?

말해봐 응?

방해해서 죄송합니다.