[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 793

 
artmedia70 :
Ama Buy by Ask'ı açmıyor muyuz???????


Peki, şunu yazdım: " Sat fiyatından alış emirleri açılır".

Ancak grafikte Teklif fiyatını görüyorsunuz.

 
PapaYozh :


Eh, şunu yazdım: "Satın alma emirleri Satış fiyatından açılır".

Ancak grafikte Teklif fiyatını görüyorsunuz.

Her zaman grafikte her iki fiyat da var... Terminal ayarlarında, F8'i kullanarak, Sorular ekranını açtım... Ve bir önceki gönderiyi spread hakkında biraz düzelttim - bu olamaz.
 
artmedia70 :
Ama Buy by Ask'ı açmıyor muyuz??????? Evet ve 60 puanlık bir spread olamaz (boşluktan sonra alırsanız bu olur) ve daha önce ise ..., o zaman 325 puanlık euro'da bir spread zor ... :)

öğeler resminizde görünmüyor.
 
PapaYozh :

öğeler resminizde görünmüyor.
Evet, itiraf ediyorum ... bu yanıltıcı olabilir (gönderinizdeki parantezler gibi, onlar yüzünden sorulanlara verdiğiniz cevabın anlamını kaybettim ve uygunsuz cevap verdim ... :) )
 
artmedia70 :
Her zaman grafikte her iki fiyat da var... Terminal ayarlarında, F8'i kullanarak, Sorular ekranını açtım... Ve bir önceki gönderiyi spread hakkında biraz düzelttim - bu olamaz.


Ancak Ask fiyatı çubuklarda görünmez.

Yayılma hakkında. Bu bir beşgen mi? Eğer "evet" ise, haberde yayılma + kayma = burada 6 tam ağırlıklı (60 beş haneli) puanınız var

 
PapaYozh :


Ancak Ask fiyatı çubuklarda görünmez.

Yayılma hakkında. Bu bir pentagon mu? Eğer "evet" ise, haberde yayılma + kayma = burada 6 tam ağırlıklı (60 beş haneli) puanınız var

İşin aslı şu ki dört-... :(
 
PapaYozh :

Sorununuzu doğru anladıysam siparişin kapanış saatine odaklanmanıza gerek yok. Açma sinyalinin göründüğü ve pozisyonun açıldığı çubuğun başlangıç zamanını oluşturmanız gerekir. Şahsen, aşağıdakileri yapardım:

1) sipariş başarılı bir şekilde verilirse, Saat[0] değerini gireceği tarihsaat türünde bir değişken oluşturur;

2) init() işlevinde bu değişkeni "0" değeriyle başlatır, açık başlatmayı tercih ederim, çünkü koda bakıldığında daha görsel;

3) bir pozisyon açma koşulları göründüğünde, OrderSend(...) talebini göndermeden önce, aynı değişkenin değerini Time[0] değeriyle karşılaştırır ve eğer eşit değilse, talebi gönderir.

4) pozisyon açılmış olsaydı, aynı değişkende Time[0] değerini saklardı.


Açıklama için teşekkürler - ne düşünüyorsunuz, Time[0] değeriyle karşılaştırmak yerine OrderSend (...) isteğinden önce böyle bir görev vermeye çalışın: StopLoss-y tarafından mevcut çubuğun kapanıp kapanmadığını kontrol edin? O zaman benim tarafımdan bildirilen StopLoss değişkeni ile çalışacak duble StopLoss() fonksiyonunu tanıtmak gerekiyor mu? Yoksa temelde MÜMKÜN DEĞİLDİR? Geyiğin yakalandığı çubukta parametreleri açılışla eşleşse bile yeni bir pozisyon açılmaması benim için önemli.

 extern double Stoploss           =1000;
 //+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int     res;
    
//---- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//---- get Moving Average 
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//---- sell conditions
   if (Open[ 1 ]>ma && Close[ 1 ]<ma)  
     {
      res= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 30 ,Bid+Stoploss* Point ,Bid-Takeprofit* Point , "" ,MAGICMA, 0 , Red );
       return ;
     }
//---- buy conditions
   if (Open[ 1 ]<ma && Close[ 1 ]>ma)  
     {
      res= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 30 ,Ask-Stoploss* Point ,Ask+Takeprofit* Point , "" ,MAGICMA, 0 , Blue );
       return ;
     }
//----
  }

Gerçek şu ki, en son zaman faktörlerine dönmek istiyorum - çoğu zaman kayarlar - ya da daha doğrusu, siparişin yorumlanmasının bir nedenden dolayı heterojen (belirsiz) olduğu ortaya çıkıyor.

 
obla4ko, bir datetime x değişkeni oluşturun ve stop loss'un gerçekleştiği çubuğun açılış zamanı olsun. Ve açılış koşuluna şunu koyun (Zaman[0]!=x). Bu durumda, x, yeni bir tetiklenen durdurma kaybı ile güncellenmelidir. Bu ilk seçenek. Ve ikincisi, üçüncü kez yazarken stop tetiklendikten sonra 1 bar beklentisini açın tam olarak aynı olacak, mantıklı değil mi?
 
PapaYozh :


Ancak Ask fiyatı çubuklarda görünmez.

Yayılma hakkında. pentagon mu? Eğer "evet" ise, haberde yayılma + kayma = burada 6 tam ağırlıklı (60 beş haneli) puanınız var

ayrıca, bence, daha sonra temizlenmiş bir "firkete" mümkündür .. :)), ancak artık ulaşılamayan daha küçük zaman dilimlerinin "hafızaya kaydedilmiş" ...

ve geriye dönük test sorusu hakkında:

Bir Uzman Danışman (basit! :)) - ızgara değil) aynı geçmiş segmentinde, aynı parametrelerle tamamen farklı sonuçlar verebilir mi?

Tek şey, bu iki test arasında, alıntı arşivini güncelledim... ve bu, böyle bir sonuca yol açabilir!? - o zaman tüm hikayenin çöp olduğu ortaya çıkıyor!?

 

Birisi lütfen bana MathRound()'un neden garip davrandığını söyleyebilir mi? Büyük değerleri dikkate alır, küçük - hayır ...

Bazı değişkenlerin değerini yüzde 10 artırmak için basit bir kod var:

 if (IncreaseTP) 
   {
      LastTakeProfitS = MathRound (LastTakeProfitS+LastTakeProfitS/ 100 *PercentTakePr);   // PercentTakePr = 10; (десять процентов) эту строку считает
      TStartS = MathRound (TStartS+TStartS/ 10 *PercentTakePr);                           // а вот эту и все, которые ниже - нет
      TStop.Sell = MathRound (TStop.Sell+TStop.Sell/ 10 *PercentTakePr);                 // ... причём, если деление на 100 заменить на деление на 10,
      TStartLastPosS = MathRound (TStartLastPosS+TStartLastPosS/ 10 *PercentTakePr);     // ... то начинает считать и эти строки, но уже, естественно...
       if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread;               // ... рассчёт становится неверным...
   }

Hesaplanan değerler günlükte görüntülenir. İlki hariç tüm satırları 10'a bölerken dikkate alınan şey budur (içinde, 100'e bölme ve sorunsuz sayılır):

2010.08.11 19:16:20 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: Hesaplama fonksiyonu : SLs = 11 ve TPs = 66 , TStartS = 60, TStop.Sell = 20, TStartLastPosS = 60, TStop.SellLP = 25

Yeşil, kodun ilk satırında dikkate alınanları işaretler.

Ama bölmeyi 100'e koyarsanız (olması gerektiği gibi)

 if (IncreaseTP) 
   {
      LastTakeProfitS = MathRound (LastTakeProfitS+LastTakeProfitS/ 100 *PercentTakePr);   // PercentTakePr = 10; (десять процентов) эту строку считает
      TStartS = MathRound (TStartS+TStartS/ 100 *PercentTakePr);                           // а вот эту и все, которые ниже - нет
      TStop.Sell = MathRound (TStop.Sell+TStop.Sell/ 10 0*PercentTakePr);                 // ... причём, если деление на 100 заменить на деление на 10,
      TStartLastPosS = MathRound (TStartLastPosS+TStartLastPosS/ 100 *PercentTakePr);     // ... то начинает считать и эти строки, но уже, естественно...
       if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread;               // ... рассчёт становится неверным...
   }

... o zaman en üstteki hariç tüm satırlar hiç dikkate alınmaz - başlangıçta ayarlanan değerler eklenmemiş gibi bırakılır

onlara yüzde on:

2010.08.11 19:41:03 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: Hesaplama işlevi: SLs = 11 ve TPs = 66 , TStartS = 30, TStop.Sell = 10, TStartLastPosS = 30, TStop.SellLP = 15

Neyin ne olduğunu ve nerede olduğunu bulmama yardım et, kahretsin, köpek ortalığı karıştırdı... :)


Neden: