TP를 5핍 미만으로 설정하는 방법은 무엇입니까? - 페이지 5

 
이 방법을 의미합니까?
 extern double TPforBuys= 1 ;
extern double TPforSells= 1 ;
extern double TimeForEA= 120 ;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return ( 0 );
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return ( 0 );
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
for ( int a= OrdersTotal ()- 1 ;a>= 0 ;a--)

double TPbuy = TPforBuys / 10000 ;
if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
       OrderType ()==OP_BUY && OrderSymbol ()== Symbol () )
double TPB= OrderOpenPrice ()+ TPbuy;

// Close Buys
if (Bid>TPB)
{
   
       if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
       OrderType ()==OP_BUY && TimeCurrent ()- OrderOpenTime () <= (TimeForEA * 60 )  &&
       OrderSymbol ()== Symbol () )
         if ( ! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 1000 , White ) )
             Print ( "OrderClose failed, error: " , GetLastError ());
            }



double TPsell = TPforSells / 10000 ;
if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
       OrderType ()==OP_SELL && OrderSymbol ()== Symbol () )
double TPS= OrderOpenPrice ()- TPsell;



// Close Sells
if (Ask<TPS)
{
   
       if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
       OrderType ()==OP_SELL &&   TimeCurrent ()- OrderOpenTime () <= (TimeForEA * 60 ) &&
       OrderSymbol ()== Symbol () )
         if ( ! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 1000 , White ) )
             Print ( "OrderClose failed, error: " , GetLastError ());
            }


return ( 0 );
}
 
ats :
이 방법을 의미합니까?
모르겠어요 . . . 그게 당신이 원하는 것을합니까?
 
RaptorUK :
모르겠어요 . . . 그게 당신이 원하는 것을합니까?
그렇지 않습니다! 또 옳지 않다!
 
아마도 당신은 정확히 무엇을 하려고 하는지 설명할 수 있습니까? 내 이익을 위해, onewithzachy 이익을 위해 그리고 물론 차례로 귀하의 이익을 위해.
 

물론이야! 죄송합니다! 나는 그것에 대해 생각하지 않았다!

스캘핑용 EA를 만들었습니다! EA는 모든 스캘핑 주문을 1핍 이익으로 마감해야 합니다! 장기 주문을 마감하지 않기 위해 OrderOpenTime() 명령을 사용했습니다. 스캘핑 순서는 수동으로 설정됩니다! TP와 같은 역할을 하지만 1핍 이익만 발생합니다!

고맙습니다

 
아, 알겠습니다. EA가 비 스캘핑, 단기 주문을 마감하는 것을 원하지 않습니다. . .
 
RaptorUK :
아, 알겠습니다. EA가 비 스캘핑, 단기 주문을 마감하는 것을 원하지 않습니다. . .
정확히!
 

알겠습니다. 몇 가지 의견이 있습니다. . .

1. 루프는 사실상 아무 작업도 수행하지 않습니다. 루프 내에서 수행하려는 작업을 {} 중괄호로 묶어야 합니다. . .

2. 2개의 OrderSelect() 호출이 있습니다. 모든 것을 루프에 넣으면 하나만 필요합니다. . .

3. Close Buy 섹션은 Buy 주문에 대해서만 실행되어야 하며 Close Sell은 Sell 주문 에 대해서만 실행되어야 합니다.

4. 1핍 수익은 4자리 쌍으로 하드 코딩되어 있으므로 USDJPY와 같은 쌍에서는 작동하지 않습니다.

 

아마도 이런 것입니다. . . .

 extern double TPforBuys= 1 ;
extern double TPforSells= 1 ;
extern double TimeForEA= 120 ;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return ( 0 );
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return ( 0 );
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
for ( int a= OrdersTotal ()- 1 ;a>= 0 ;a--)
   {
   double TPbuy = TPforBuys / 10000 ;
   
   if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
   OrderType ()==OP_BUY && OrderSymbol ()== Symbol () )   // order type and Symbol checked here
      {
       double TPB= OrderOpenPrice ()+ TPbuy;
      
       // Close Buys
       if (Bid>TPB)
         {
         
         if ( TimeCurrent ()- OrderOpenTime () <= (TimeForEA * 60 ) )   // no need to check type and symbol here
             if ( ! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 1000 , White ) )
               {
               Print ( "OrderClose failed, error: " , GetLastError ());
               }
             else continue ;         // if order has been closed move to the next position, no need to check if it's a SELL
         } // end of if(Bid>TPB)
      } // end of if( OrderSelect(a 
      
   double TPsell = TPforSells / 10000 ;
   
   if ( OrderSelect (a,SELECT_BY_POS, MODE_TRADES) && 
   OrderType ()==OP_SELL && OrderSymbol ()== Symbol () )
      {
       double TPS= OrderOpenPrice ()- TPsell;

       // Close Sells
       if (Ask<TPS)
         {
   
         if ( TimeCurrent ()- OrderOpenTime () <= (TimeForEA * 60 ) )
             if ( ! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 1000 , White ) )
               Print ( "OrderClose failed, error: " , GetLastError ());
            
         } // end of if(Ask<TPS)
      } // end of if( OrderSelect(a
   } // end of for(int a=OrdersTotal()

return ( 0 );
}
 
RaptorUK :

아마도 이런 것입니다. . . .

그건 그렇고, 나는 그 코드를 컴파일하거나 테스트하지 않았습니다. . .