Bir danışman yazmanız gerekiyor. Bir fikrim var. - sayfa 4

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

Bu 2 aşamada yapılır.

1) Piyasaya açıyoruz TP = 0, SL = 0

2) SL, TP'yi değiştirin

yoksa ben mi yanlış anladım

 
meta-trader2007 >> :

Genel olarak, bu TS H1 katları ve üzerinde karlıdır (ancak her zaman değil ve bazen geri dönüşü olmayan bir trend sırasında).

Ana TP kullanılmamalı ve trol, duraktan 3 veya daha fazla kat daha büyük olmalıdır.

belki yanlış yerde test ettim =)

 
GarF1eld >> :

Bu 2 aşamada yapılır.

...

yoksa ben mi yanlış anladım

DC'yi normale çevirmek daha iyidir.

belki yanlış yerde test ettim =)

Düşük kaliteli geçmiş üzerinde test etmeniz gerekir)

Ve işte kontrol noktalarında nasıl:


 
Görmek için donmuş)
 
meta-trader2007 >> :

DC'yi normale çevirmek daha iyidir.

Düşük kaliteli geçmiş üzerinde test etmeniz gerekir)

Ve işte kontrol noktalarında nasıl:


Bekleyen emirlerde Expert Advisor'da bir sonraki emir çifti açıldığında önceki emirlerin silinmesini ekleyebilir misiniz?

Çok iyi olurdu .. evet ve ticaret akışı tıkanmazdı .. aksi takdirde 418 hatası çıkıyor

 
Ve zaten açık olanlardan biri çalıştığında silin)
 
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 , test sonuçları hakkında buraya yazın.

 

Bu Uzman Danışmanları bir demoda başlattı, siparişler verilmiyor.... sebebi nedir?

 
dimasik >> :

Bu Uzman Danışmanları bir demoda başlattı, siparişler verilmiyor.... sebebi nedir?

Geciktiriciler, karşılık gelen açık pozisyon olmaması koşuluyla, yeni bir çubuğun oluşumunun başlangıcına yerleştirilir.

Test cihazının olumlu sonuçları hakkında durumu ekli olarak buraya yazın.

 

realtime exp_Higt-Low.mq4 Expert Advisor'ı DAX üzerinde bir demo (5 saat) üzerinde test ettim, önce kar gösterdi, sonra birleştirmeye başladım.

Bir şey söyleyeceğim, bu yönde çalışabiliriz. Tek sorun, Uzman Danışmanın işlem akışını bekleyen emirlerle yüklemesidir, bu nedenle görev, örneğin pozisyonlardan biri tetiklendiğinde veya yeni bir bekleyen emir çifti açıldığında bekleyen emirleri kapatmaktır.. bu yapılmaz, bir süre sonra 418 hatası görünür.

mql4com'a

Meta-trader2007 tarafından daha önce yayınlanan exp_Higt-Low.mq4 Expert Advisor'ı yukarıda anlattığım gibi ekleyebilir misiniz?

Yarın test etmeye devam edeceğim.