[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 547

 
Vinin :
Piyasa ortamının her zaman init() içinde mevcut olmadığını unutmayın.
Açıkcası bu haber çok ilgimi çekti. Piyasanın hangi koşullarda müsait olmayabileceğini hayal etmeye çalıştım. ortam: Danışman açıldığında veya danışman Cumartesi veya Pazar günü başlatıldığında bağlantının kesilmesi gibi olabilir. Benimkinde bu tür bir sorun fark etmedim. Bir yandan init() içinde bir değer bulmayı döngüye alabileceğinizi söylüyorlar ama init()'in zamanla sınırlı olduğunu öğrendim. Yeni bir çubuk (en az M1) göründüğünde start() başlangıcında piyasalardan değerleri bulabilir. çevre, her keneden daha iyidir.
 
Pacman :


Kodumun analizi için size çok minnettarım. Bunun için zaman ayırdığınız için teşekkür ederiz.

...

Ve while ifadesi değeri doğru olduğunda çalışır, yani. yanlış değeri kabul etmediği ortaya çıkıyor.

while içinde min olarak bir koşul koymak gerekli olacaktır. iki değer alabilir, örn. bayrak (doğru veya yanlış). Bir sabit (doğru) varsa ve bir koşul değilse, o zaman while gerekli değildir. while (true) ve parantezleri kaldırın, sonuç aynı olacaktır.
 
Bilenler için soru. OrderSend() ile ilgili yardımda, kayma 3 ile değiştirilir. Bu 4 basamaklı tırnaklar için bir örnek mi? 5 basamaklı karakterler için 3 bırakabilir misiniz yoksa 30'a mı ihtiyacınız var?
 
paladin80 :
Bilenler için soru. OrderSend() ile ilgili yardımda, slippage 3 ile değiştirilir. Bu 4 basamaklı tırnaklar için bir örnek mi? 5 basamaklı karakterler için 3 bırakabilir misiniz yoksa 30'a mı ihtiyacınız var?

Beş basamak için 30'a ihtiyacınız var.

Her danışmanın init () içine böyle bir yapı ekliyorum, o zaman 4 veya 5 DC işareti önemli değil, tavsiye ederim:

   if ( Digits == 3 || Digits == 5 ){myPoint= Point * 10 ; slpg=slpg* 10 ;}
   else myPoint= Point ; 
 
Test hızını artırmanın mümkün olup olmadığını kim bilebilir?
 

Tünaydın. Söyle bana - her dakika dikey çizgiler çizmeye değer. Çizimi sadece dakikalara değil, bir dakika AÇILIŞ FİYATIna nasıl bağlarsınız. Zorluk, bir dakikanın açılış fiyatının standart olmayan bir zamanda, yani. bir dakika değil. Böyle bir kod yazdım ama türkiye standart olmayan bir zamana takılırsa oraya bir dakikanın açılış fiyatını nasıl gireceğimi anlamıyorum

new_Dakika=Dakika(Zaman[i]) !=Dakika(Zaman[i+1]); // yeni dakika

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=maks;

...ve sonra nesneler üzerinden standart çizim.

Birisi bana mümkünse ne yapılabileceğini söyleyebilir mi?

 
Lonely_man :

Tünaydın. Söyle bana - her dakika dikey çizgiler çizmeye değer. Çizimi sadece dakikalara değil, bir dakika AÇILIŞ FİYATIna nasıl bağlarsınız. Zorluk, bir dakikanın açılış fiyatının standart olmayan bir zamanda, yani. bir dakika değil. Böyle bir kod yazdım ama türkiye standart olmayan bir zamana takılırsa oraya bir dakikanın açılış fiyatını nasıl gireceğimi anlamıyorum

new_Dakika=Dakika(Zaman[i]) !=Dakika(Zaman[i+1]); // yeni dakika

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=maks;

...ve sonra nesneler üzerinden standart çizim.

Birisi bana mümkünse ne yapılabileceğini söyleyebilir mi?

Dikey çizginin koordinatı yoktur - fiyat.
 
paladin80 :
while içinde min olarak bir koşul koymak gerekli olacaktır. iki değer alabilir, örn. bayrak (doğru veya yanlış). Bir sabit (doğru) varsa ve bir koşul değilse, o zaman while gerekli değildir. while (true) ve parantezleri kaldırın, sonuç aynı olacaktır.


while ifadesini kaldırırsanız, devam ifadesi nasıl çalışır;

Sonuçta, bir hata durumunda, koşulların kontrolünü ve açılış emirlerini tekrarlamamız gerekiyor.

 if (Fun_Error( GetLastError ())== 1 )       // Обработка ошибок
  continue ;                               // Повторная попытка
 return ;                                 // Выход из start()

Devam ifadesi, kontrolü en yakın dış while veya for döngüsü ifadesinin başlangıcına aktararak bir sonraki yinelemenin başlamasına neden olur.

Belki bir şey anlamıyorum?

 

Tünaydın.

Ticaret stratejim, önceden oluşturulmuş sondan bir önceki çubukta [sayı 1] bekleyen emirleri açmak için tasarlanmıştır. Onlar. pozisyon açar (alış durdurma VE sat durdurma için bekleyen emirler) ve eğer fiyat 1. çubuğun fiyat aralığının en yüksek/düşük değerini 20 puan (Açık fiyat) aştığında tetiklenir.

Aynı zamanda, tetiklenmeyen bekleyen emirlerin aşağıdakilere dayalı olarak otomatik olarak silinmesini sağlar: Yeni bir 1 numaralı çubuk oluşmuşsa, buna bağlı olarak bekleyen emir/emirlerin açılış fiyatı, yeni mevcut çubuğun yüksek/düşük sayısı 1 +/- 20 puan (büyük olasılıkla, iki bitişik çubuğun yüksek/düşük değerleri nadiren çakıştığından).

Ancak bir nedenden dolayı, önce her iki pozisyonu da açar, ancak birkaç saniye sonra bunlardan birini kapatır (1 numarada yeni bir çubuk henüz oluşmamış olsa da).

Beyler, uzmanlar, ben acemiyim ve belki de bazı nüansları dikkate almıyorum. Lütfen bana hatanın nerede olduğunu söyleyin.

 RefreshRates ();
for ( int n= 1 ;n<= OrdersTotal ();n++)             //цикл перебора всех имеющихся ордеров
{
   if ( OrderSelect (n- 1 ,SELECT_BY_POS)==true)   //если найден ордер, то...
  {
     if (( OrderType ()== 4 )&& ( OrderOpenPrice ()!= High[ 1 ]+ 20 * Point ))                       // проверяем его тип (buystop/sellstop), если его тип buystop и цена покупки не совпадает с максимумом текущего 1-го бара, то..
      {
           OrderDelete ( OrderTicket ());                                                   // удаляем его
         
       }
     if (( OrderType ()== 5 ) && ( OrderOpenPrice ()!= Low[ 1 ]- 20 * Point ))                       // если его тип sellstop и цена продажи не совпадает с минимумом текущего 1-го бара, то ...
    {      
           
             OrderDelete ( OrderTicket ());                                                 //удаляем его
         
    }
  }
}
Dosyalar:
 

Kesirli sayıları karşılaştırırken, anlamlı bir rakama normalleştirilmeleri gerekir.

Emirleri silerken baştan değil sondan saymanız gerekir.