Uzmanlar için soru - sayfa 8

 

Tünaydın. 'Duygu! Kârlı bir atma stratejisi bulundu!'

Bu sabah Rid bir danışman gönderdi. İndirdim, biraz optimize ettim ve çalıştırdım.

Bir demo hesabında danışman (dax) sorunsuz çalışır (mt4 broco-trade).

Bahse girerim gerçek. Başlangıç lot=0.01 veya 0.1.

Çalışmıyor ! günlük hata döndürür

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend işlevi için geçersiz lot miktarı

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend()- OP_SELLSTOP hatası. operasyon 5087.5000000 sl 0.00000000 tp 0.000000000 4051

//------------------------------------------------ ------------------

Neden olduğunu anlayamıyorum.

Mevduatın boyutu, belirli bir marj ile belirli bir lot belirlemenizi sağlar. Danışman kodunda gerçek bir hesabın çalışmasıyla ilgili herhangi bir kısıtlama yoktur.

Anlaşma nedir? Söylemek!


 

İşte kaynak kodu.

...!!!!!!!!!!!!!!!!!!!! .........yyyy!!!!!!!!!!!!!!!!

İlginç. Kod kısıtlamaları ne zaman kaldırılacak? BÜTÜN danışman kodunu neden özel bir forumda açık bir pencerede yayınlayamıyorum?

Normal çalışmak yerine "ÇOK BÜYÜK METİN BOYUTU" cevabını alıyorum.

Görünüşe göre MQ şirketi, ziyaretçileri şımartmak ve onların burada doğru soruları sormalarını engellemek için her şeyi yapan kötü niyetli rakip "kazaklar" kullanıyor.



Dosyalar:
hlopmaster.mq4  11 kb
 

İşte kod parçaları, kedi. lotların hesaplanmasından sorumlu:

 //------------------------------------------------
double GetMaxLot ( ) // Функция возвращает максимальный обьем 
//открытой позиции.  
{ int i ; double maxlot ;
   for ( i = 1 ; i < = OrdersTotal ( ) ; i + + )         
   {
      if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) 
       {                                   
           if ( ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL )  & & OrderSymbol ( ) = = Symbol ( )
          & & maxlot < OrderLots ( ) ) { maxlot = OrderLots ( ) ; }
       }
    }   
return ( maxlot ) ;
}
//-----------------------------------------------
double GetMaxLotOrder ( )
//Функция возвращает максимальный обьем установленных
// стоп ордеров. 
{ int i ; double maxlot ;
   for ( i = 1 ; i < = OrdersTotal ( ) ; i + + )         
   {
      if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) 
       {                                   
           if ( ( OrderType ( ) = = OP_BUYSTOP | | OrderType ( ) = = OP_SELLSTOP )  & &
           OrderSymbol ( ) = = Symbol ( ) & & maxlot < OrderLots ( ) )
           { maxlot = OrderLots ( ) ; }
       }
    }   
return ( maxlot ) ;
}
//----------------------------------------------
int GetLastTypePos ( ) {
   int i ; datetime dt ; int type ;
      for ( i = 1 ; i < = OrdersTotal ( ) ; i + + )         
      {
         if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) 
          {                                   
              if ( ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL )  & & OrderSymbol ( ) = = Symbol ( ) 
              & & dt < OrderOpenTime ( ) )
              { dt = OrderOpenTime ( ) ; type = OrderType ( ) ; }
          }
       }   
   return ( type ) ;
}
//-----------------------------------------------
int DopOrder ( double Lots )
{
int type = GetLastTypePos ( ) ;
   if ( type = = 1 ) {
     op = Bid + pips * Point ; if ( SL > 0 ) { sl = Bid ; } else { sl = 0 ; } if ( TP > 0 ) { tp = op + TP * Point ; } else { tp = 0 ; }
     err = OrderSend ( Symbol ( ) , OP_BUYSTOP , Lots , NormalizeDouble ( op , Digits ) , 3 , NormalizeDouble ( sl , Digits ) ,
NormalizeDouble ( tp , Digits ) , "FORTRADER.RU" , 0 , 0 , Red ) ;
     if ( err < 0 ) { Print ( "OrderSend()-  Ошибка OP_BUYSTOP. 
                op " + op + " sl " + sl + " tp " + tp + " " + GetLastError ( ) ) ; return ( - 1 ) ; }
   }
   if ( type = = 0 ) {
      op = Ask - pips * Point ; if ( SL > 0 ) { sl = Ask ; } else { sl = 0 ; } if ( TP > 0 ) { tp = op - TP * Point ; } else { tp = 0 ; }
      err = OrderSend ( Symbol ( ) , OP_SELLSTOP , Lots , NormalizeDouble ( op , Digits ) , 3 , NormalizeDouble ( sl , Digits ) ,
NormalizeDouble ( tp , Digits ) , "FORTRADER.RU" , 0 , 0 , Red ) ;
      if ( err < 0 ) { Print ( "OrderSend()-  Ошибка OP_SELLSTOP. 
                   op " + op + " sl " + sl + " tp " + tp + " " + GetLastError ( ) ) ; return ( - 1 ) ; }
   }
return ( 0 ) ;
}
//-------------------------------------------------
int CloseAllPos ( int type )
{  int buy = 1 ; int sell = 1 ;
int i , b = 0 ; int ordertiket ;
 
 if ( type = = 1 )
   {
   while ( buy = = 1 )
     {
        buy = 0 ;
        for ( i = 0 ; i < OrdersTotal ( ) ; i + + )
         {
           if ( true = = OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) )
           {
           if ( OrderType ( ) = = OP_BUY & & OrderSymbol ( ) = = Symbol ( ) ) { buy = 1 ; 
                                  OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; }
           } else { buy = 0 ; }
         }  
         if ( buy = = 0 ) { return ( 0 ) ; }
      } 
   }
   
   if ( type = = 0 )
   {
      while ( sell = = 1 )
     {
        sell = 0 ;
        for ( i = 0 ; i < OrdersTotal ( ) ; i + + )
         {
           if ( true = = OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) )
           {
           if ( OrderType ( ) = = OP_SELL & & OrderSymbol ( ) = = Symbol ( ) ) { sell = 1 ;
                                 OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; }
           } else { sell = 0 ; }
         }  
         
        if ( sell = = 0 ) { return ( 0 ) ; }
      } 
     }
   return ( 0 ) ;
   }
//--------------------------------------------------------


 
Rita писал(а) >>

İşte kod parçaları, kedi. lotların hesaplanmasından sorumlu:

Expert Advisor, gerçek hayatta çalışmak üzere tasarlanmamıştır. Diğer enstrümanlar için en az bir açık pozisyon varsa, çalışma mantığı ihlal edilir. Tabii isterseniz düzeltebilirsiniz ama örneğin ben bunda pek bir nokta göremiyorum.

 
Teşekkür ederim. Ve neden böyle garip bir hata döndürülür?
 
Rita писал(а) >>
Teşekkür ederim. Ve neden böyle garip bir hata döndürülür?

Büyük olasılıkla hata oluşur

   if ( OrdersTotal ( ) < 1 ) { err = OpenNewOrders ( ) ; }
   if ( OrdersTotal ( ) > 0 ) { TrailStopOrders ( ) ; }

TrailStopOrders'ı çağırırken ( );

Diğer enstrümanlar için zaten siparişler olduğundan. Bu durumda danışman açılışa hiç gitmez.

Elbette mantıkla anlamak gerekli olsa da.

Görünüşe göre hata başka bir yerde oluşuyor. Ama kontrol edemiyorum. Açık pozisyonum yok.

Sadece kafanızda kontrol edebilirsiniz. Ve bunun için benim olacak bir danışmana ihtiyacın var.

 
Lütfen söyleyin, MT4'te şu anda bugünkü işlemlerde kazanılan veya kaybedilen puanları belirlemek için bir sistem var mı?
 

Tam olarak ne istediğiniz tam olarak belli değil. Şu tasarıma bakın.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=45

 
Teşekkürler Rita!
 

İyi akşamlar. Büyük bir sorun vardı. Konuyla pek ilgili değil. Ve oh. yanlış zamanda.

Dün gece, bir kedi olan ICQ'ya anlaşılmaz bir bağlantı geldi. Dikkatsizce bastım.

Bundan sonra komp. telefonu kapattı ve SMS göndermenin önerildiği bir pencere belirdi, ardından bilgisayarın kilidini açmak için bir şifre alacağımı iddia ettim.

Bilgisayarımı birkaç kez yeniden başlattım. ve 45-50 dakika sonra kilidi açıldı.

Ama şimdi WM cüzdanıma giremiyorum

bir tür anahtar erişim kodu gerekiyor. (Anahtar dosyasının kendisi orada)

Ne yapacağımı bilmiyorum. Kim - uç. benzer bir durumda mıydın?