Piyasada yayınlanan Expert Advisor'larda minimum stop kontrol ediliyor. - sayfa 11

 
Vladimir Gribachev :

Peki, MetaQuotes-Demo sunucusunda (moderatörün test ettiği yer) min. durma seviyesi normal olarak döner. Kendiniz kontrol edin, 0 - olmayacak.

Moderatörün hangi sunucuda test ettiğini bilmiyorum, ancak başlatıcının konusunun durma düzeyi kontrolü vardı ve ürün 130 hatası nedeniyle revizyon için kendisine iade edildi. Konuyu baştan okuyun.
 
Vitalii Ananev :
Moderatörün hangi sunucuda test ettiğini bilmiyorum, ancak başlatıcının konusunun durma düzeyi kontrolü vardı ve ürün 130 hatası nedeniyle revizyon için kendisine iade edildi. Konuyu baştan okuyun.

Onun durumunda, 130. sadece baykuş piyasaya çok yakın bir stop-loss yerleştirmeye çalıştığında gerçekleşebilir.

sl-tp'yi gönderirken veya değiştirirken doğrudan kontrol etmek daha iyidir.

 
Vladimir Gribachev :

Soru şu ki, neden gerçek hayatta 1 puanlık bir stop loss koydunuz?

Şimdi hatırladım... Bir keresinde böyle bir algoritmayı min. stop-loss, çek temelde aynıdır ve kârın yanı sıra hata da yoktur.

Yerel bir serbest meslekte 80 görev yazan pazarın 60 ürününün satıcısının, yazma danışmanları için reklam içeren bir web sitesi var - ve tüm bunlar ilk yıldan çok uzak - bu bir topik başlatıcı.

Ve aniden topik başlatıcı sıfır stoplevel ile ne yapacağını sorar ve piyasa moderatörlerinin bir şekilde garip bir şekilde piyasa danışmanlarını kontrol ettiğini söyler.

Onun yorumlarının aksine, geliştirme tecrübesi olan, ürünleri piyasaya sürme tecrübesi olan forum üyeleri onun yorumlarını okuyup kafaları karışmış durumda.

Bana gelince - topikstarter açıkçası yetersiz ve aptalca sorunu parmağından çıkardı.

 
Andrey F. Zelinsky :

Yerel bir serbest meslekte 80 görev yazan pazarın 60 ürününün satıcısının, yazma danışmanları için reklam içeren bir web sitesi var - ve tüm bunlar ilk yıldan çok uzak - bu bir topik başlatıcı.

Ve aniden topik başlatıcı sıfır stoplevel ile ne yapacağını sorar ve piyasa moderatörlerinin bir şekilde garip bir şekilde piyasa danışmanlarını kontrol ettiğini söyler.

Onun yorumlarının aksine, geliştirme tecrübesi olan, ürünleri piyasaya sürme tecrübesi olan forum üyeleri onun yorumlarını okuyup kafaları karışmış durumda.

Bana gelince - topikstarter açıkçası yetersiz ve aptalca sorunu parmağından çıkardı.

Belki sadece sohbet etmek istiyorsun? ) programlama botları çok yalnız bir aktivitedir
 
lilita bogachkova :

burada yayınlanan kod:

 double point= SymbolInfoDouble (symToWorkmodify, SYMBOL_POINT );
int spread=(ask-bid)/point;

Böylece, SymbolInfoDouble fonksiyonunun değeri olan noktaya bölemezsiniz (symToWorkmodify, SYMBOL_POINT )   sıfır olabilir.
Bu aynı zamanda diğer piyasa işlevleri için de geçerlidir.

Örneğin, 2010 şampiyonasındaki hesaplamalarda AccountInfoInteger(ACCOUNT_LEVERAGE) kullanılması nedeniyle, bu fonksiyon OnInit'te 0 döndürdüğünde Expert Advisor'lardan bazıları Sıfır bölme hatasıyla çöktü .

 
Vladimir Gribachev :

Soru şu ki, neden gerçek hayatta 1 puanlık bir stop loss koydunuz?

Şimdi hatırladım... Bir keresinde böyle bir algoritmayı min. stop-loss, çek temelde aynıdır ve kârın yanı sıra hata da yoktur.

Köküne bak. Neden 1 puanlık bir stop loss koyduğumuzla ilgili değil. Buradaki nokta, zararı durdurmanın, komisyoncu tarafından gizlenen ve yayılma genişliği tarafından hesaplanan durdurma seviyesinden daha az olabileceğidir.

Sorunun özünü netleştirmek için, algoritmanıza göre durdurma kontrollerinin yapıldığı bir Expert Advisor:

 #property strict
//--- input parameters
input int       i_slSize          = 10 ;
input int       i_tpSize          = 10 ;
input int       i_magicNumber     = 32847623 ;

int OnInit ()
{
   Print ( "Величина стоплевел: " , MarketInfo ( _Symbol , MODE_STOPLEVEL ));
   return ( INIT_SUCCEEDED );
}

int GetExpertOrderTicket()
{
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS ))          
         continue ;
         
       if ( OrderSymbol () != Symbol ())
         continue ;   
         
       if ( OrderMagicNumber () != i_magicNumber)
         continue ;
         
       if ( OrderType () == OP_BUY )
         return OrderTicket ();
   }
   
   return - 1 ;
}

void OnTick ()
{
   int ticket = GetExpertOrderTicket();
   if (ticket < 0 )
   {
      ticket = OrderSend ( Symbol (), OP_BUY , 0.01 , Ask , 30 , 0.0 , 0.0 , NULL , i_magicNumber);
       return ;
   }
      
   if (! OrderSelect (ticket, SELECT_BY_TICKET ) || OrderCloseTime () != 0 || OrderStopLoss () > 0.0 || OrderTakeProfit () > 0.0 )
       return ;
      
   double SL= NormalizeDouble ( OrderOpenPrice ()- MathMax (i_slSize,( int ) MarketInfo ( _Symbol , MODE_STOPLEVEL ))* _Point , _Digits );
   double TP= NormalizeDouble ( OrderOpenPrice ()+ MathMax (i_tpSize,( int ) MarketInfo ( _Symbol , MODE_STOPLEVEL ))* _Point , _Digits );
   
   bool result = OrderModify (ticket, 0.0 , SL, TP, 0 );
}

Böyle bir Uzman Danışmanı test etmenin sonucu :

0       14:52:30.354    Expert CheckStopLevel EURUSD,H1: removed
0       14:52:30.372    Expert CheckStopLevel EURUSD,H1: loaded successfully
0       14:52:30.390    Tester: template 'D:\ForexDC\Alpari\templates\tester.tpl' applied
0       14:52:30.395    TestGenerator: current spread 10 used
2       14:52:32        2015.01.12 00:00  CheckStopLevel inputs: i_slSize=10; i_tpSize=10; i_magicNumber=32847623; 
0       14:52:32        2015.01.12 00:00  CheckStopLevel EURUSD,H1: Величина стоплевел: 0.0
2       14:52:32        2015.01.12 00:00  CheckStopLevel EURUSD,H1: open #1 buy 0.01 EURUSD at 1.18674 ok
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:35        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130
3       14:52:36        2015.01.12 00:00  CheckStopLevel EURUSD,H1: OrderModify error 130

Gördüğünüz gibi, yöntem temel doğrulamayı geçmiyor.

 
Ihor Herasko :

Köküne bak. Neden 1 puanlık bir stop loss koyduğumuzla ilgili değil. Neyle ilgili...

Köküne bakarsanız, şunları ayırt etmeniz gerekir: a) "geliştiricinin alıcısının aptallığından koruma" ve b) alıcının bir aptal olduğu hesaplaması. Bunlar farklı savunmalardır.

Aklı başında hiçbir alıcı bir alım ve olumsuz bir duruş yapmayacaktır. Bu nedenle, "danışmanın olumsuz bir dur ve al durumuna nasıl tepki vereceğini" kontrol etmek, alıcının aptal olduğuna dair bir hesaplamadır.

Kullanıcı tarafından belirlenen alma ve durdurmanın, anlaşılmaz bir "2 spread" değeriyle sürekli olarak artmaya zorlandığı bir Uzman Danışmanın oluşturulması - bu "aptal koruması", yalnızca ürünü "geliştiricinin aptalından" satın almayarak koruma.

Özellikle geliştirici, piyasa denetimini geçmek için böyle bir koruma koyarsa.

 
Andrey F. Zelinsky :

Köküne bakarsanız, şunları ayırt etmeniz gerekir: a) "geliştiricinin alıcısının aptallığından koruma" ve b) alıcının bir aptal olduğu hesaplaması. Bunlar farklı savunmalar.

Aklı başında hiçbir alıcı bir alım ve olumsuz bir duruş yapmayacaktır. Bu nedenle, "danışmanın olumsuz bir dur ve al durumuna nasıl tepki vereceğini" kontrol etmek, alıcının aptal olduğuna dair bir hesaplamadır.

Kullanıcı tarafından belirlenen alma ve durdurmanın, anlaşılmaz bir "2 spread" değeriyle sürekli olarak artmaya zorlandığı bir Uzman Danışmanın oluşturulması - bu "aptal koruması", yalnızca ürünü "geliştiricinin aptalından" satın almayarak koruma.

Burada aklı başında çok insan olduğunu düşünüyor musun? :) Özellikle alıcılar arasında
 
Ihor Herasko :

Köküne bak. Neden 1 puanlık bir stop loss koyduğumuzla ilgili değil. Buradaki nokta, zararı durdurmanın, komisyoncu tarafından gizlenen ve yayılma genişliği tarafından hesaplanan durdurma seviyesinden daha az olabileceğidir.

Sorunun özünü netleştirmek için, algoritmanıza göre durdurma kontrollerinin yapıldığı bir Expert Advisor:

Böyle bir Uzman Danışmanı test etmenin sonucu :

Gördüğünüz gibi, yöntem temel doğrulamayı geçmiyor.

O kadar kötüyse, o zaman

 #property strict
//--- input parameters
input int       i_slSize          = 10 ;
input int       i_tpSize          = 10 ;
input int       i_magicNumber     = 32847623 ;

int OnInit ()
{
   Print ( "Величина стоплевел: " , MarketInfo ( _Symbol , MODE_STOPLEVEL ));
   return ( INIT_SUCCEEDED );
}

int GetExpertOrderTicket()
{
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS ))          
         continue ;
         
       if ( OrderSymbol () != Symbol ())
         continue ;   
         
       if ( OrderMagicNumber () != i_magicNumber)
         continue ;
         
       if ( OrderType () == OP_BUY )
         return OrderTicket ();
   }
   
   return - 1 ;
}

void OnTick ()
{
   int ticket = GetExpertOrderTicket();
   if (ticket < 0 )
   {
      ticket = OrderSend ( Symbol (), OP_BUY , 0.01 , Ask , 30 , 0.0 , 0.0 , NULL , i_magicNumber);
       return ;
   }
      
   if (! OrderSelect (ticket, SELECT_BY_TICKET ) || OrderCloseTime () != 0 || OrderStopLoss () > 0.0 || OrderTakeProfit () > 0.0 )
       return ;
      
   double SL= NormalizeDouble ( Bid - MathMax (i_slSize,( int ) MarketInfo ( _Symbol , MODE_STOPLEVEL ))* _Point , _Digits );
   double TP= NormalizeDouble ( Bid + MathMax (i_tpSize,( int ) MarketInfo ( _Symbol , MODE_STOPLEVEL ))* _Point , _Digits );
   
   bool result = OrderModify (ticket, 0.0 , SL, TP, 0 );
}

dergi

 2016.03 . 16 15 : 09 : 35.611 GBPUSD,H1: 94 tick events ( 1095 bars, 286082 bar states) processed in 0 : 00 : 06.037 (total time 0 : 00 : 10.109 )
2016.03 . 16 15 : 09 : 35.611 2016.03 . 01 00 : 12   Tester: order # 14 is closed
2016.03 . 16 15 : 09 : 35.588 2016.03 . 01 00 : 12   Tester: stop button pressed
2016.03 . 16 15 : 09 : 35.547 2016.03 . 01 00 : 12   abcd GBPUSD,H1: modify # 14 buy 0.01 GBPUSD at 1.39165 sl: 1.39130 tp: 1.39154 ok
2016.03 . 16 15 : 09 : 35.483 2016.03 . 01 00 : 12   abcd GBPUSD,H1: open # 14 buy 0.01 GBPUSD at 1.39165 ok
2016.03 . 16 15 : 09 : 35.483 2016.03 . 01 00 : 12   Tester: take profit # 13 at 1.39144 ( 1.39144 / 1.39165 )
2016.03 . 16 15 : 09 : 35.099 2016.03 . 01 00 : 12   abcd GBPUSD,H1: modify # 13 buy 0.01 GBPUSD at 1.39156 sl: 1.39120 tp: 1.39144 ok
2016.03 . 16 15 : 09 : 35.035 2016.03 . 01 00 : 11   abcd GBPUSD,H1: open # 13 buy 0.01 GBPUSD at 1.39156 ok
2016.03 . 16 15 : 09 : 35.035 2016.03 . 01 00 : 11   Tester: stop loss # 12 at 1.39148 ( 1.39135 / 1.39156 )
2016.03 . 16 15 : 09 : 34.971 2016.03 . 01 00 : 11   abcd GBPUSD,H1: modify # 12 buy 0.01 GBPUSD at 1.39171 sl: 1.39148 tp: 1.39172 ok
2016.03 . 16 15 : 09 : 34.907 2016.03 . 01 00 : 11   abcd GBPUSD,H1: open # 12 buy 0.01 GBPUSD at 1.39171 ok
2016.03 . 16 15 : 09 : 34.907 2016.03 . 01 00 : 11   Tester: take profit # 11 at 1.39143 ( 1.39150 / 1.39171 )
2016.03 . 16 15 : 09 : 34.267 2016.03 . 01 00 : 10   abcd GBPUSD,H1: modify # 11 buy 0.01 GBPUSD at 1.39147 sl: 1.39119 tp: 1.39143 ok
2016.03 . 16 15 : 09 : 34.203 2016.03 . 01 00 : 10   abcd GBPUSD,H1: open # 11 buy 0.01 GBPUSD at 1.39147 ok
2016.03 . 16 15 : 09 : 34.203 2016.03 . 01 00 : 10   Tester: stop loss # 10 at 1.39132 ( 1.39126 / 1.39147 )
2016.03 . 16 15 : 09 : 33.947 2016.03 . 01 00 : 10   abcd GBPUSD,H1: modify # 10 buy 0.01 GBPUSD at 1.39174 sl: 1.39132 tp: 1.39156 ok
2016.03 . 16 15 : 09 : 33.883 2016.03 . 01 00 : 10   abcd GBPUSD,H1: open # 10 buy 0.01 GBPUSD at 1.39174 ok
2016.03 . 16 15 : 09 : 33.883 2016.03 . 01 00 : 10   Tester: stop loss # 9 at 1.39157 ( 1.39153 / 1.39174 )
2016.03 . 16 15 : 09 : 33.435 2016.03 . 01 00 : 09   abcd GBPUSD,H1: modify # 9 buy 0.01 GBPUSD at 1.39186 sl: 1.39157 tp: 1.39181 ok
2016.03 . 16 15 : 09 : 33.371 2016.03 . 01 00 : 09   abcd GBPUSD,H1: open # 9 buy 0.01 GBPUSD at 1.39186 ok
2016.03 . 16 15 : 09 : 33.371 2016.03 . 01 00 : 09   Tester: take profit # 8 at 1.39163 ( 1.39165 / 1.39186 )
2016.03 . 16 15 : 09 : 32.603 2016.03 . 01 00 : 06   abcd GBPUSD,H1: modify # 8 buy 0.01 GBPUSD at 1.39173 sl: 1.39139 tp: 1.39163 ok
2016.03 . 16 15 : 09 : 32.539 2016.03 . 01 00 : 06   abcd GBPUSD,H1: open # 8 buy 0.01 GBPUSD at 1.39173 ok
2016.03 . 16 15 : 09 : 32.539 2016.03 . 01 00 : 06   Tester: take profit # 7 at 1.39152 ( 1.39152 / 1.39173 )
2016.03 . 16 15 : 09 : 32.346 2016.03 . 01 00 : 06   abcd GBPUSD,H1: modify # 7 buy 0.01 GBPUSD at 1.39173 sl: 1.39128 tp: 1.39152 ok
2016.03 . 16 15 : 09 : 32.282 2016.03 . 01 00 : 06   abcd GBPUSD,H1: open # 7 buy 0.01 GBPUSD at 1.39173 ok
2016.03 . 16 15 : 09 : 32.282 2016.03 . 01 00 : 06   Tester: take profit # 6 at 1.39148 ( 1.39152 / 1.39173 )
2016.03 . 16 15 : 09 : 32.025 2016.03 . 01 00 : 05   abcd GBPUSD,H1: modify # 6 buy 0.01 GBPUSD at 1.39155 sl: 1.39124 tp: 1.39148 ok
2016.03 . 16 15 : 09 : 31.961 2016.03 . 01 00 : 05   abcd GBPUSD,H1: open # 6 buy 0.01 GBPUSD at 1.39155 ok
2016.03 . 16 15 : 09 : 31.961 2016.03 . 01 00 : 05   Tester: stop loss # 5 at 1.39140 ( 1.39134 / 1.39155 )
2016.03 . 16 15 : 09 : 31.249 2016.03 . 01 00 : 04   abcd GBPUSD,H1: modify # 5 buy 0.01 GBPUSD at 1.39170 sl: 1.39140 tp: 1.39164 ok
2016.03 . 16 15 : 09 : 31.185 2016.03 . 01 00 : 04   abcd GBPUSD,H1: open # 5 buy 0.01 GBPUSD at 1.39170 ok
2016.03 . 16 15 : 09 : 31.185 2016.03 . 01 00 : 04   Tester: take profit # 4 at 1.39147 ( 1.39149 / 1.39170 )
2016.03 . 16 15 : 09 : 30.801 2016.03 . 01 00 : 02   abcd GBPUSD,H1: modify # 4 buy 0.01 GBPUSD at 1.39159 sl: 1.39123 tp: 1.39147 ok
2016.03 . 16 15 : 09 : 30.737 2016.03 . 01 00 : 01   abcd GBPUSD,H1: open # 4 buy 0.01 GBPUSD at 1.39159 ok
2016.03 . 16 15 : 09 : 30.737 2016.03 . 01 00 : 01   Tester: take profit # 3 at 1.39136 ( 1.39138 / 1.39159 )
2016.03 . 16 15 : 09 : 30.481 2016.03 . 01 00 : 01   abcd GBPUSD,H1: modify # 3 buy 0.01 GBPUSD at 1.39143 sl: 1.39112 tp: 1.39136 ok
2016.03 . 16 15 : 09 : 30.417 2016.03 . 01 00 : 01   abcd GBPUSD,H1: open # 3 buy 0.01 GBPUSD at 1.39143 ok
2016.03 . 16 15 : 09 : 30.417 2016.03 . 01 00 : 01   Tester: stop loss # 2 at 1.39126 ( 1.39122 / 1.39143 )
2016.03 . 16 15 : 09 : 30.225 2016.03 . 01 00 : 00   abcd GBPUSD,H1: modify # 2 buy 0.01 GBPUSD at 1.39156 sl: 1.39126 tp: 1.39150 ok
2016.03 . 16 15 : 09 : 30.161 2016.03 . 01 00 : 00   abcd GBPUSD,H1: open # 2 buy 0.01 GBPUSD at 1.39156 ok
2016.03 . 16 15 : 09 : 30.161 2016.03 . 01 00 : 00   Tester: take profit # 1 at 1.39135 ( 1.39135 / 1.39156 )
2016.03 . 16 15 : 09 : 29.647 2016.03 . 01 00 : 00   abcd GBPUSD,H1: modify # 1 buy 0.01 GBPUSD at 1.39148 sl: 1.39111 tp: 1.39135 ok
2016.03 . 16 15 : 09 : 29.583 2016.03 . 01 00 : 00   abcd GBPUSD,H1: open # 1 buy 0.01 GBPUSD at 1.39148 ok
2016.03 . 16 15 : 09 : 29.583 2016.03 . 01 00 : 00   abcd GBPUSD,H1: Величина стоплевел: 12.0
2016.03 . 16 15 : 09 : 29.574 2016.03 . 01 00 : 00   abcd inputs: i_slSize= 10 ; i_tpSize= 10 ; i_magicNumber= 32847623 ; 
2016.03 . 16 15 : 09 : 27.513 TestGenerator: current spread 21 used

ve sorun yok.

Andrey F. Zelinsky'nin doğru bir şekilde belirttiği gibi, her şey kötüyse,

Sadece piyasayı yumuşatmak için bir danışmanın işlevselliğini bozmak kesinlikle yetersizdir.

sonra 130. hata için bir kontrol atayabilir ve duraklara +1 ekleyebilirsiniz. Ancak bu genellikle saçmalıktır.
 
Maxim Dmitrievsky :
Burada aklı başında çok insan olduğunu düşünüyor musun? :) Özellikle alıcılar arasında

Bence bir araştırma yaparsanız, aklı başında geliştiricilerden çok daha akıllı alıcılar olduğu ortaya çıkıyor.

Alıcı yanılıyor olabilir. Alıcı açıklayabilir. Alıcı ikna edilebilir.

Ancak geliştiricinin sağduyu ile sorunları varsa, bu düzeltilmez.

Sadece piyasayı yumuşatmak için bir danışmanın işlevselliğini bozmak kesinlikle yetersizdir.