Danışman yazmayı öğrenmek... - sayfa 6

 
ALex2008 >> :

Konuyu dikkatlice okuyunuz!

orada seçenek hakkında yazıyorum

girişi ihlal ediyor! ARACI yeniden alıntı yapsa bile...


'hata kodu 138 ve gerçek hesap'

 

Bu seçenekten bahsediyorsanız ve OrderModify'a atıfta bulunuyorsa

YuraZ писал(а) >>

izin verilen

alınan sinyal -

bir kene üzerinde, giriş hacmi kez 5

kırmadı! ortaya çıktı

sinyalden sonraki ikinci tikte, içeri girip daha fazla çekiçliyoruz!

..o zaman henüz kenelere dönüşmedim)) 1. tik, 2. tik nasıl dikkate alınır?

uyku(2000); // bir hatadan sonra 2 saniye beklemek

Yeni bir kene için ne kadar beklemek gerekir?

 
Talex >> :
Böyle deneyin.

Şimdi benim görevim, OpenSend'den hemen sonra OrderModify aracılığıyla bir durak belirlemek ve bu durağın varlığını kontrol etmek.

İşe yaramadıysa, artık izlemiyoruz, değilse, hata nedir ve yüklemeye devam etmeye çalışın ... kurun ... ve kurun ...)

 RefreshRates ( ) ;   
           double SLS = Ask + Stop * Point ;   //стоп на продажу
           Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , SLS , OrderTakeProfit ( ) , 0 , Red ) ;
              if ( Modify = = false )
                  {
                      Print ( "Ошибка при попытке установить стоп для SEL, код ошибки =" + GetLastError ( ) ) ;
                      for ( int j = 0 ; ; j + + ) //пытаемся пока ДЦ не умрет)
                             {
                                SLS = SLS + j * Point ;   //увеличиваем стоп на 1 пп 
                                RefreshRates ( ) ;
                                Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , SLS , OrderTakeProfit ( ) , 0 , Red ) ;
                                   if ( Modify = = true )
                                       break ;
                                   else   
                                       Print ( "Ошибка при попытке установить стоп для SEL, код ошибки =" + GetLastError ( ) ) ;        
                              }
                  }
 
Başarılı bir değişiklikten sonra artık değiştirmeye çalışmamak ve fazladan hata almamak için OrderModify'ın durumunu nasıl kontrol edeceğimi söyle?
 
bool ModifyS = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , SLS , OrderTakeProfit ( ) , 0 , Red ) ;
if ( ModifyS = = true ) continue ;

bununla değiştirin:

ModifyS = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , SLS , OrderTakeProfit ( ) , 0 , Red ) ;
if ( ModifyS = = true ) break ;

burada:

1. neden bir değişkenin tipini bir kez daha tanımlayın - bu hata derleme sırasında ortaya çıkmalı

2. devam etmek yerine - yeni bir yinelemeye geçiş (yani, yeni bir değişiklik girişimine), döngüden kesme - çıkışı kullanın (ayrıca, sonsuz, bu iyi değil)

 
Xupypr >> :

1. neden bir değişkenin tipini bir kez daha tanımlayın - bu hata derleme sırasında ortaya çıkmalı

Sabit)

2. devam etmek yerine - yeni bir yinelemeye geçiş (yani yeni bir değişiklik girişimine), döngüden ara - çıkış kullanın

Teşekkür ederim!

..ve sonsuz, ki bu iyi değil ..

Sonsuz olduğu için mutlaka stop ayarı yapılmalıdır..

Ve bir iki girişimde bulunursam ve bir nedenden dolayı ret olursa ve bu süre zarfında fiyat pozisyonun çok üzerine çıkarsa.. O zaman ne yapmalıyım?

 

Günlükteki hatalar:

açık #1 satış 0.01 EURUSD tamam
1'i değiştir 0,01 EURUSD sat tamam
SEL için durdurma ayarlamaya çalışırken hata, hata kodu =0
kaybı durdur #1
açık #2 0.01 EURUSD sat tamam
2'yi değiştir 0,01 EURUSD sat tamam
SEL için durdurma ayarlamaya çalışırken hata, hata kodu =0
kaybı durdur #2
açık #3 0.01 EURUSD sat tamam
#3'ü değiştir 0.01 EURUSD sat tamam
SEL için durdurma ayarlamaya çalışırken hata, hata kodu =0

SATMAK için giriş yap

 RefreshRates ( ) ;
      if ( ( OrdersTotal ( ) = = 0 ) & & ( Bid = = Enter ) )  //бъем до упора эту цену
         { 
            if ( IsTradeContextBusy ( ) = = false )
               {
                  OrderSend ( Symbol ( ) , OP_SELL , Lot , Enter , Slippage , 0 , ldTake , lsComm , MAGIC , 0 , clOpenSell ) ;
                  if ( OrdersTotal ( ) > 0 )
                     {
                        ModifySL ( ) ;                   //ставим стоп
                        SLBU = OrderOpenPrice ( ) - BU ;               //цена БУ
                     }   
                  else Print ( "Ошибка при попытке установить ордер на SELL, " , OrderOpenPrice ( ) , " код ошибки =" + GetLastError ( ) ) ;             
               }
         }




Değiştir SATIŞ





 void ModifySL ( ) 
   {
      if ( OrderSelect ( 0 , SELECT_BY_POS ) = = true ) // Если есть открытый ордер
         {       
            if ( OrderType ( ) = = OP_BUY )
               {
                  RefreshRates ( ) ;
                  OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Bid - StopL * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                  if ( OrderStopLoss ( ) = = 0 ) Print ( "Ошибка при попытке установить стоп для BUY, " , OrderStopLoss ( ) , " код ошибки =" + GetLastError ( ) ) ;

               }
                               
            else
                  RefreshRates ( ) ;   
                  OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Ask + StopL * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                  if ( OrderStopLoss ( ) = = 0 ) Print ( "Ошибка при попытке установить стоп для SEL, " , OrderStopLoss ( ) , " код ошибки =" + GetLastError ( ) ) ;
               }
         } 
   }
 
ALex2008 >> :

Bu seçenekten bahsediyorsanız ve OrderModify'a atıfta bulunuyorsa

..o zaman henüz kenelere dönüşmedim)) 1. tik, 2. tik nasıl dikkate alınır?

uyku(2000); // bir hatadan sonra 2 saniye beklemek

Yeni bir kene için ne kadar beklemek gerekir?


her tikte

isminde

BAŞLAT()

{

}

---

uzun bir süre BAŞLAT işlevindeyseniz,

bir veya daha fazla keneyi kaçırabilirsiniz

mesela BAŞLAT fonksiyonuna girdiniz ve 10 dakika oturdunuz, mantıklı keneler gelecek ama yakalayamayacaksınız.

geceleri tikler yeterince uzun süre gelmeyebilir

---

çünkü BAŞLANGIÇ'ta uzun süre kalmanın keneleri yakalama üzerinde kötü bir etkisi vardır (eğer sizin için önemliyse)

minimum döngü ve gecikmeyle yalın programlar yazın

---

 
YuraZ >> :

...uzun bir süre BAŞLAT işlevindeyseniz, unutmayın

bir veya daha fazla keneyi kaçırabilirsiniz

mesela BAŞLAT fonksiyonuna girdiniz ve 10 dakika oturdunuz, mantıklı keneler gelecek ama yakalayamayacaksınız.

geceleri tikler yeterince uzun süre gelmeyebilir

---

çünkü BAŞLANGIÇ'ta uzun süre kalmanın keneleri yakalama üzerinde kötü bir etkisi vardır (eğer sizin için önemliyse)

minimum döngü ve gecikmeyle yalın programlar yazın

---

Bir siparişi değiştirmeden veya yerleştirmeden önce RefreshRates() işlevini kullanırsanız, Start() dışındaki durum güncellenir, yani. keneler?

Doğru şekilde anladım?

 

İşte eleştiri için pozun açılış ve modifikasyonunun son hali.

Bu seçeneğin "+" ve "-"?

açılış satmak

 RefreshRates ( ) ;
      if ( ( OrdersTotal ( ) = = 0 ) & & ( Bid = = Enter ) )  //бъем до упора эту цену
         { 
            if ( IsTradeContextBusy ( ) = = false )
               {
                  OrderSend ( Symbol ( ) , OP_SELL , Lot , Enter , Slippage , 0 , ldTake , lsComm , MAGIC , 0 , clOpenSell ) ;
                  if ( OrdersTotal ( ) > 0 )
                     {
                        ModifySL ( ) ;                   //ставим стоп
                        SLBU = OrderOpenPrice ( ) - BU ;               //цена БУ
                     }   
                  else Print ( "Ошибка при попытке установить ордер на SELL, " , OrderOpenPrice ( ) , " код ошибки =" + GetLastError ( ) ) ;             
               }
         }




modifikasyonu durdur





 void ModifySL ( )
   {
      if ( OrderSelect ( 0 , SELECT_BY_POS ) = = true ) // Если есть открытый ордер
         {       
            if ( OrderType ( ) = = OP_BUY )
               {
                  RefreshRates ( ) ;
                  bool Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Bid - StopL * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                  if ( Modify = = false ) Print ( "Ошибка при попытке установить стоп для BUY, " , OrderStopLoss ( ) , " код ошибки =" + GetLastError ( ) ) ;

               }
            else
               {
                  RefreshRates ( ) ;   
                  Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Ask + StopL * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                  if ( Modify = = false ) Print ( "Ошибка при попытке установить стоп для SEL, " , OrderStopLoss ( ) , " код ошибки =" + GetLastError ( ) ) ;
               }
         }     
   }