조언자를 작성해야 합니다. 나는 아이디어가. - 페이지 4

 
dimasik >> :
lascu.roman , ты можешь сделать чтобы ордера открывались не с рынка, а отложенниками??? Это важно, потому что брокер с рынка не принимает сразу установку SL и TP. Вот.

이것은 2단계로 수행됩니다.

1) 우리는 시장에서 TP = 0, SL = 0을 엽니다.

2) SL, TP 수정

아니면 내가 잘못 이해 했습니까?

 
meta-trader2007 >> :

일반적으로 이 TS는 H1 배 이상에서 수익성이 있습니다(항상 그런 것은 아니며 때로는 롤백이 없는 추세일 때도 있음).

주 TP는 사용하지 않아야 하며 트롤은 정지선보다 3배 이상 커야 합니다.

나는 아마도 잘못된 장소에서 테스트했을 것입니다 =)

 
GarF1eld >> :

이것은 2단계로 수행됩니다.

...

아니면 내가 잘못 이해 했습니까?

DC를 정상으로 변경하는 것이 좋습니다.

아마도 내가 잘못된 장소에서 테스트했을 수 있습니다 =)

저품질 이력에서 테스트해야 함)

제어점에 대한 방법은 다음과 같습니다.


 
보기에 얼어붙음)
 
meta-trader2007 >> :

DC를 정상으로 변경하는 것이 좋습니다.

저품질 이력에서 테스트해야 함)

제어점에 대한 방법은 다음과 같습니다.


보류 중인 주문에 대해 Expert Advisor에서 다음 주문 쌍이 열릴 때 이전 주문 삭제를 추가할 수 있습니까?

아주 좋을 것입니다 .. 예, 무역 흐름이 막히지 않을 것입니다 .. 그렇지 않으면 오류 418이 나옵니다

 
그리고 이미 열려 있는 것 중 하나가 작동하면 삭제)
[삭제]  
extern bool Limits = TRUE ; // TRUE - LIMIT orders; FALSE - STOP orders
extern double Distance = 10 ; // Probably less than zero
extern double TP = 144 ;
extern double SL = 55 ;
extern double TralSL = 34 ;
extern double Lots = 0.1 ;

double Spread ;

void init ( )
{
  Distance * = Point ;
  TP * = Point ;
  SL * = Point ;
  TralSL * = Point ;
  
  Spread = Point * MarketInfo ( Symbol ( ) , MODE_SPREAD ) ;
  
  return ;
}

void TrailingOrders ( )
{
  int i , Total = OrdersTotal ( ) ;
  double Difference , tp , sl ;
  
  for ( i = 0 ; i < Total ; i + + )
  {
    OrderSelect ( i , SELECT_BY_POS ) ;
   
    if ( OrderType ( ) = = OP_BUY )
    {
      sl = Bid - TralSL ;
      Difference = NormalizeDouble ( sl - OrderStopLoss ( ) , Digits ) ;
        
      if ( Difference > 0 )
      {
        sl = NormalizeDouble ( sl , Digits ) ;
        
        OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , sl , OrderTakeProfit ( ) , 0 ) ;
      }
    }
    else if ( OrderType ( ) = = OP_SELL )
    {
      sl = Ask + TralSL ;
      Difference = NormalizeDouble ( sl - OrderStopLoss ( ) , Digits ) ;
        
      if ( Difference < 0 )
      {
        sl = NormalizeDouble ( sl , Digits ) ;
       
        OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , sl , OrderTakeProfit ( ) , 0 ) ;
      }
    }
  }
  
  return ;
}

bool OrderScan ( int TypeOrder )
{
  int i , Total = OrdersTotal ( ) ;
  
  for ( i = 0 ; i < Total ; i + + )
  {
    OrderSelect ( i , SELECT_BY_POS ) ;
    
    if ( OrderType ( ) = = TypeOrder )
      return ( TRUE ) ;
  }
  
  return ( FALSE ) ;
} 

void MyOrderSend ( int TypeOrder , double open , double sl , double tp )
{
  if ( OrderScan ( TypeOrder ) )
    OrderModify ( OrderTicket ( ) , open , sl , tp , 0 ) ;
  else
    OrderSend ( Symbol ( ) , TypeOrder , Lots , open , 0 , sl , tp ) ;
      
  return ;
}

void OpenOrders ( double H , double L )
{
  double open , tp , sl ;
  
  if ( Limits )
  {
    if ( ! OrderScan ( OP_BUY ) )
    {
      open = NormalizeDouble ( L - Distance + Spread , Digits ) ;
      tp = NormalizeDouble ( open + TP , Digits ) ;
      sl = NormalizeDouble ( open - SL , Digits ) ;
  
      MyOrderSend ( OP_BUYLIMIT , open , sl , tp ) ;
    }
  
    if ( ! OrderScan ( OP_SELL ) )
    {
      open = NormalizeDouble ( H + Distance , Digits ) ;
      tp = NormalizeDouble ( open - TP , Digits ) ;
      sl = NormalizeDouble ( open + SL , Digits ) ;
  
      MyOrderSend ( OP_SELLLIMIT , open , sl , tp ) ;
    }
  }
  else
  {
    if ( ! OrderScan ( OP_BUY ) )
    {
      open = NormalizeDouble ( H + Distance + Spread , Digits ) ;
      tp = NormalizeDouble ( open + TP , Digits ) ;
      sl = NormalizeDouble ( open - SL , Digits ) ;
  
      MyOrderSend ( OP_BUYSTOP , open , sl , tp ) ;
    }

    if ( ! OrderScan ( OP_SELL ) )
    {
      open = NormalizeDouble ( L - Distance , Digits ) ;
      tp = NormalizeDouble ( open - TP , Digits ) ;
      sl = NormalizeDouble ( open + SL , Digits ) ;
  
      MyOrderSend ( OP_SELLSTOP , open , sl , tp ) ;
    }
  }
  
  return ;
}

void start ( )
{
  static int PrevTime = 0 ;

  TrailingOrders ( ) ;
  
  if ( PrevTime = = Time [ 0 ] )
    return ;
    
  PrevTime = Time [ 0 ] ;
  
  OpenOrders ( High [ 1 ] , Low [ 1 ] ) ;
  
  return ;
}


mpeugep , 여기에 테스트 결과에 대해 씁니다.

 

데모에서 이 Expert Advisors를 시작했는데 주문이 접수되지 않았습니다.... 이유는 무엇입니까?

[삭제]  
dimasik >> :

데모에서 이 Expert Advisors를 시작했는데 주문이 접수되지 않았습니다.... 이유는 무엇입니까?

Delayers는 해당하는 열린 위치가 없는 경우 새 막대 형성의 시작 부분에 배치됩니다.

상태가 첨부된 테스터의 긍정적인 결과에 대해 여기에 쓰십시오.

 

DAX(5시간)의 데모에서 실시간 exp_Higt-Low.mq4 Expert Advisor를 테스트했는데 처음에는 이익을 보인 다음 병합하기 시작했습니다.

한 가지만 말씀드리겠습니다. 우리는 이 방향으로 일할 수 있습니다. 유일한 문제는 Expert Advisor 가 보류 주문이 있는 거래 흐름을 로드하므로 예를 들어 포지션 중 하나가 트리거되거나 새로운 보류 주문 쌍이 열릴 때 작업이 보류 주문을 마감하는 것입니다. 이것은 완료되지 않고 잠시 후 오류 418이 나타납니다.

mql4com으로

위에서 설명한 대로 이전에 meta-trader2007에서 게시한 exp_Higt-Low.mq4 Expert Advisor를 추가할 수 있습니까?

내일 계속 테스트 하겠습니다.