포인트의 총 이익으로 모든 주문을 마감하는 방법은 무엇입니까? - 페이지 7

 
khasan kayumov :
총 이익(포인트)으로 모든 주문을 마감하는 방법을 알려주실 수 있습니까?

글을 읽어보니 이해가 안가는 부분도 있었습니다. 아마도 이륙은 오지 않았습니다.

나 자신을 위해 이 질문을 다음과 같이 이해했습니다. 주어진 이익에 도달했을 때 다른 상품에 대한 미결 주문을 마감하는 방법.

매우 우아하지는 않지만 다음과 같이 질문을 구현했습니다.

 extern int     iPrftAc       = 35 ;   // Закрытие всех ордеров по текущему счету.
.......

if ( AccountProfit () > iPrftAc)
   {
     Print ( "//--> Закрытие ордеров: Условие достижения ПРИБЫЛИ ПО ТЕКУЩЕМУ СЧЕТУ!;" );
    vOrderClose( 9 , 0 , "" );          
   }
........
void vOrderClose( int f_iTypOrdDel,   //Тип операции выбранного ордера на удаление
                 int f_iOrderTicket, //Номер тикета ордера
                 string f_sNamSig)   //Наименование сигнала
{
.......
 if (f_iTypOrdDel== 9 ) // Удаление всех открытых и отложенных ордеров по всем финансовым инструментам.
     {
       int CloseOrdSymAll = 0 ;
       do {
          CloseOrdSymAll = 0 ;
           for ( int i= 0 ; i<= OrdersTotal (); i++)
            {
             if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true )
                {
                 switch ( OrderType ())
                    {
                     case OP_BUY      :f_sCmdType = "OP_BUY" ;
                                      f_bResult = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ) ,iSlippage, clrBlue );
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, "  successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                           }  
                                      CloseOrdSymAll++;
                                       break ;
                                         
                     case OP_BUYLIMIT :f_sCmdType = "OP_BUYLIMIT" ;
                                      f_bResult = OrderDelete ( OrderTicket (),CLR_NONE);
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, " successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                           }  
                                      CloseOrdSymAll++;
                                       break ;
                                         
                     case OP_BUYSTOP :f_sCmdType = "OP_BUYSTOP" ;
                                      f_bResult = OrderDelete ( OrderTicket (),CLR_NONE);
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, " successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                           }  
                                      CloseOrdSymAll++;
                                       break ;
                                         
                     case OP_SELL     :f_sCmdType = "OP_SELL" ;
                                      f_bResult = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ) ,iSlippage, clrRed );
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, " successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                           }  
                                      CloseOrdSymAll++;
                                       break ;
                                         
                     case OP_SELLLIMIT :f_sCmdType = "OP_SELLLIMIT" ;
                                       f_bResult = OrderDelete ( OrderTicket (),CLR_NONE);
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, " successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                            }  
                                       CloseOrdSymAll++;
                                       break ;
                                         
                     case OP_SELLSTOP :f_sCmdType = "OP_SELLSTOP" ;
                                       f_bResult = OrderDelete ( OrderTicket (),CLR_NONE);
                                       if (f_bResult == true ) Print ( "//---> vOrderClose: " ,f_iTypOrdDel, ") Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, " successfully" );
                                       else {
                                             Print ( "//--->vOrderClose: № " ,f_iTypOrdDel, ". Order(#" , OrderTicket (), ") Type(#" , OrderType (), ") " ,f_sCmdType, ", failed. Error:" , GetLastError ());
                                             Sleep ( 1000 );
                                            }  
                                       CloseOrdSymAll++;
                                       break ;
                    }
                }    
            }          
         }
     }
}
//+------------------------------------------------------------------+
//|Конец                                                             |
//+------------------------------------------------------------------+
 

그리고 이해가 안되는 부분이 있습니다.

당신은 돈이나 포인트를 적립?

원하는(MAIN!) 결과가 항상 눈앞에 있는데 왜 복잡한 결과를 찾는 것을 귀찮게 합니까? 모든 거래의 총 이익(IN MONEY!)이 당신에게 적합하다면, 우리는 모든 것을 지옥에 닫습니다!

 
Artemij :

그리고 이해가 안되는 부분이 있습니다.

당신은 돈이나 포인트를 적립?

원하는(MAIN!) 결과가 항상 눈앞에 있는데 왜 복잡한 결과를 찾는 것을 귀찮게 합니까? 모든 거래의 총 이익(IN MONEY!)이 당신에게 적합하다면, 우리는 모든 것을 지옥에 닫습니다!


이익이 돈에 있다면 로트 크기를 변경할 때 이익 가치를 비례적으로 변경해야 합니다. 그것은 편안하지 않습니다.

 
Vadym Kulish :

글을 읽어보니 이해가 안가는 부분도 있었습니다. 아마도 이륙은 오지 않았습니다.

나 자신을 위해 이 질문을 다음과 같이 이해했습니다. 주어진 이익에 도달했을 때 다른 상품에 대한 미결 주문을 마감하는 방법.

매우 우아하지는 않지만 다음과 같이 질문을 구현했습니다.

왜 이렇게 긴 일시 중지가 있습니까? 이제 모든 것이 잘 작동합니다 ...

나는 일반적으로 쉬지 않고 닫습니다.

 
Renat Akhtyamov :

왜 이렇게 긴 일시 중지가 있습니까? 이제 모든 것이 잘 작동합니다 ...

나는 일반적으로 쉬지 않고 닫습니다.


이것은 이전 버전의 코드의 유물입니다. 오류의 본질을 이해하지 못한 코드는 MarketInfo ( OrderSymbol (), MODE_ASK )의 의미이며, 지금은 만일을 대비하여 남겨둡니다. 전문가가 등록되어 있지 않습니다.