지정된 기간 및/또는 SL 후 자동으로 주문 마감

 

함께 안녕,

기간 및/또는 SL에 도달한 후 자동으로 주문을 마감할 수 있는지 알고 싶습니다...

예를 들어:

오후 1시에 거래를 열었습니다. 견적이 StoppLoss에 도달했거나 2시간이 경과했을 때 이 주문이 종료되도록 하고 싶습니다.

실제 코드는 다음과 같습니다.

// 구매 기준
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour()) ||(TradeHour18==Hour())||(TradeHour20==Hour())) //시그널 매수
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"타임 트레이더 구매 주문",BuyMagicNumber,0,Blue);
if(openbuy<1){int buyfail=1;}
}

}// 정지1

if((halt2!=1)&&(AllowSell==true)){// halt2
새로 고침 비율();
// 판매 기준
if ((TradeHour12==Hour())||(TradeHour23==Hour())) //매도 신호
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"타임 트레이더 매도 주문 ",SellMagicNumber,0,Green);
if(opensell<1){int 판매실패=1;}
}

}// 정지2

미리 감사합니다

마크

 

이것을 사용하여 코드를 게시하십시오. . . 읽기 쉽게 만듭니다.

 
OrderOpenTime 을 사용하여 열린 주문 확인을 반복한 다음( 먼저 OrderSelect 를 사용하는 것을 잊지 마십시오) 해당 시간과 TimeCurrent 를 비교하여 2시간이 경과했는지 확인합니다. . 그들이 주문을 닫은 경우 .
 
nirvanamac :

함께 안녕,

기간 및/또는 SL에 도달한 후 자동으로 주문을 마감할 수 있는지 알고 싶습니다...

예를 들어:

오후 1시에 거래를 열었습니다. 견적이 StoppLoss에 도달했거나 2시간이 경과했을 때 이 주문이 종료되도록 하고 싶습니다.

실제 코드는 다음과 같습니다.

// 구매 기준
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour()) ||(TradeHour18==Hour())||(TradeHour20==Hour())) //시그널 매수
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"타임 트레이더 구매 주문",BuyMagicNumber,0,Blue);
if(openbuy<1){int buyfail=1;}
}

}// 정지1

if((halt2!=1)&&(AllowSell==true)){// halt2
새로 고침 비율();
// 판매 기준
if ((TradeHour12==Hour())||(TradeHour23==Hour())) //매도 신호
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"타임 트레이더 매도 주문",SellMagicNumber,0,Green);
if(opensell<1){int 판매실패=1;}
}

}// 정지2

미리 감사합니다

마크


 // Buy criteria
if ((TradeHour3== Hour ())||(TradeHour4== Hour ())||(TradeHour7== Hour ())||(TradeHour10== Hour ())||(TradeHour17== Hour ())||(TradeHour18== Hour ())||(TradeHour20== Hour ())) //Signal Buy
{
int openbuy= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order " ,BuyMagicNumber, 0 , Blue );
if (openbuy< 1 ){ int buyfail= 1 ;}
}

} // halt1

if ((halt2!= 1 )&&(AllowSell==true)){ // halt2
RefreshRates ();
// Sell criteria
if ((TradeHour12== Hour ())||(TradeHour23== Hour ())) //Signal Sell
{
int opensell= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,sls,tps, "time trader sell order " ,SellMagicNumber, 0 , Green );
if (opensell< 1 ){ int sellfail= 1 ;}
}

} // halt2
 
nirvanamac :
기간 및/또는 SL에 도달한 후 자동으로 주문을 마감할 수 있는지 알고 싶습니다...
  1. SL에 도달하면 자체적으로 닫힙니다.
  2. 그렇지 않으면 코딩만 하면 됩니다. OrderClose() 및 시간 테스트는 어디에 있습니까?
 
WHRoeder :
  1. SL에 도달하면 자체적으로 닫힙니다.
  2. 그렇지 않으면 코딩만 하면 됩니다. OrderClose() 및 시간 테스트는 어디에 있습니까?


안녕하세요 Whroeder님,

내 생각에 당신이 구멍 코드를 의미하거나?

//---- input parameters
extern double     Lots= 0.01 ;
extern int        TakeProfit= 200 ;
extern int        StopLoss= 200 ;
extern int        Slip= 50 ;
extern int BuyMagicNumber = 1 ;
extern int SellMagicNumber = 2 ;
extern bool AllowBuy=true;
extern bool AllowSell=true;
extern int   TradeHour3= 3 ;
extern int   TradeHour4= 4 ;
extern int   TradeHour7= 7 ;
extern int   TradeHour10= 10 ;
extern int   TradeHour17= 17 ;
extern int   TradeHour18= 18 ;
extern int   TradeHour20= 20 ;
extern int   TradeHour12= 12 ;
extern int   TradeHour23= 23 ;
 
//+------------------------------------------------------------------+
//| expert starts                                  |
//+------------------------------------------------------------------+
int start()
  {
//----
int StopMultd,Sleeper= 1 ;
 
 
 
int digits= MarketInfo ( "EURUSD" ,MODE_DIGITS);
if (digits== 5 ){StopMultd= 10 ;} else {StopMultd= 1 ;}
double TP= NormalizeDouble (TakeProfit*StopMultd, Digits );
double SL= NormalizeDouble (StopLoss*StopMultd, Digits );
double Slippage= NormalizeDouble (Slip*StopMultd, Digits );
 
// Calculate stop loss
double slb= NormalizeDouble (Ask-SL* Point , Digits );
double sls= NormalizeDouble (Bid+SL* Point , Digits );
 
// Calculate take profit
double tpb= NormalizeDouble (Ask+TP* Point , Digits );
double tps= NormalizeDouble (Bid-TP* Point , Digits );
 
//-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+
if ( OrdersTotal ()> 0 ){
   for ( int i= 1 ; i<= OrdersTotal (); i++)           // Cycle searching in orders
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // If the next is available
        {
           if ( OrderMagicNumber ()==BuyMagicNumber) { int halt1= 1 ;}
           if ( OrderMagicNumber ()==SellMagicNumber) { int halt2= 1 ;}
        }
     }
}
//-------------------------------------------------------------------+
 
 
if ((halt1!= 1 )&&(AllowBuy==true)){ // halt1
 
// Buy criteria
if ((TradeHour3== Hour ())||(TradeHour4== Hour ())||(TradeHour7== Hour ())||(TradeHour10== Hour ())||(TradeHour17== Hour ())||(TradeHour18== Hour ())||(TradeHour20== Hour ())) //Signal Buy
 {
   int openbuy= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order " ,BuyMagicNumber, 0 , Blue );
   if (openbuy< 1 ){ int buyfail= 1 ;}
 }
 
} // halt1
 
if ((halt2!= 1 )&&(AllowSell==true)){ // halt2
RefreshRates ();
 // Sell criteria
 if ((TradeHour12== Hour ())||(TradeHour23== Hour ())) //Signal Sell
 {
   int opensell= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,sls,tps, "time trader sell order " ,SellMagicNumber, 0 , Green );
   if (opensell< 1 ){ int sellfail= 1 ;}
 }
 
} // halt2
 
 
//-------------------------------------------------------------------+
// Error processing
//-------------------------------------------------------------------+
if (buyfail== 1 ||sellfail== 1 ){
int Error= GetLastError ();
   if (Error== 130 ){ Alert ( "Wrong stops. Retrying." ); RefreshRates ();}
   if (Error== 133 ){ Alert ( "Trading prohibited." );}
   if (Error== 2 ){ Alert ( "Common error." );}
   if (Error== 146 ){ Alert ( "Trading subsystem is busy. Retrying." ); Sleep ( 500 ); RefreshRates ();}
 
}
 
// if(openbuy==true||opensell==true)Sleep(1*60*1000*Sleeper);
//-------------------------------------------------------------------
   return ( 0 );
  }
//+-----------------------------------
 

실제로 스톱플로스가 있습니다. 나는 새로운 바가 열린 2시간 후 또는 1:59:59의 마지막 1초 후에만 주문을 닫고 싶습니다...내 문제는 내 현재 코드에 코드를 채우는 것입니다...

 
RaptorUK :
OrderOpenTime 을 사용하여 열린 주문 확인을 반복한 다음( 먼저 OrderSelect 를 사용하는 것을 잊지 마십시오) 해당 시간과 TimeCurrent 를 비교하여 2시간이 경과했는지 확인합니다. . 그들이 주문을 닫은 경우 .
그냥 코딩하십시오. . . 정말 어렵지 않습니다.
 
RaptorUK :
그냥 코딩하십시오. . . 정말 어렵지 않습니다.

내가 실패하면 힌트를 줄 수 있기를 바랍니다 ;-)
 
AFAIK 여기있는 모든 사람들은 돕고 싶어하지만 누구의 노예가되지 않습니다.
 
qjol :
AFAIK 여기있는 모든 사람들은 돕고 싶어하지만 누구의 노예가되지 않습니다.


예, 물론 이해합니다...내 EA를 위한 노예를 갖고 싶지 않습니다....내가 알아야 할 유일한 것은 프로그램이 작동하는 방식을 이해하는 방법입니다...

SMA Cross와 같은 간단한 EA가 있다면...이것은 큰 문제가 되지 않습니다...하지만 더 많은 것을 달성하고 싶어할수록 더 어려워집니다...(적어도 저에게는)