[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 466

 
Cmu4 :

Hayır .. Önerdiğiniz gibi yaptım - aynı kalır.

Ayrıca kodu, şartlara göre ayrı ayrı açma ve kapama bloklarına ayırarak değiştirdim. Hepsi bir. Ne yapacağımı bilmiyorum zaten.

İşte fragmandaki test uzmanı danışmanı olan test cihazından bir ekran görüntüsü:


Açık pozisyonların kontrolü ile böyle bir şey olabilir.
Dosyalar:
 
Vinin :

Açık pozisyonların kontrolü ile böyle bir şey olabilir.


Ben de bu yönde düşündüm. Ama hatanın kendisiyle ilgileniyorum. O nerede?

ps koda eklediğiniz için teşekkürler! Derlerken , Closeall işlevinde order_type belirsizliğine yemin eder.

 
Cmu4 :


Ben de bu yönde düşündüm. Ama hatanın kendisiyle ilgileniyorum. O nerede?

ps koda eklediğiniz için teşekkürler! Derlerken, Closeall işlevinde order_type belirsizliğine yemin eder.


 void Closeall( int OP=- 1 )
{
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) 
   { 
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
      { 
         if (OrderSymbol()== Symbol ())
         { 
             if (OrderType()==OP || OP=- 1 ) 
            {
               if (OrderType()==OP_BUY)
                  OrderClose(OrderTicket(),OrderLots(),Bid, 3 , Red );
               else if (OrderType()==OP_SELL)
                  OrderClose(OrderTicket(),OrderLots(),Ask, 3 , Green );
            }
         } 
      }
   }
}
 
Cmu4 :

Hayır .. Önerdiğiniz gibi yaptım - aynı kalır.

Ayrıca kodu, şartlara göre ayrı ayrı açma ve kapama bloklarına ayırarak değiştirdim. Hepsi bir. Ne yapacağımı bilmiyorum zaten.

İşte fragmandaki test uzmanı danışmanı olan test uzmanından bir ekran görüntüsü:

Bilmeniz gereken: pozisyonlar arka arkaya nasıl açılır? Al, Sat, Al, Sat, Sat vb. veya arka arkaya bir, örneğin, Bai.

Al-Sat'ı dönüşümlü olarak açtığınızı düşünüyorum.

Sebep: Karşılaştırılan MACD'ler çok yakın ve yerleri hızla değiştiriyor (büyük küçük). Bu nedenle, önce bir koşul yerine getirilir, sonra diğeri.

Karar:

 if (MA1-MA2 > 0.0001 && MA2-MA3 > 0.0001 && Napr== 1 ) //или другая константа
 
extralifes :

işe yaramazsa hayır.

Bu nedenle, (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 koşulu doğruyken, yalnızca iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0) şartıyla açık satış emirleri açmak gerekir. ,rsi_period ,PRICE_CLOSE,0<0.7)

Aynı şekilde tam tersi.

Bunu bir şekilde while veya bool kullanarak yapmak mümkün mü? Programlamada tam bir vinç. Mantıksal zinciri anlıyorum ama elleri koda çevirmek çarpık.


Yani sorun bunda değil ... her şey yoluna girecek, eğer ... Bu şekilde ortaya çıkıyor - (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 - (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 - koşulu da yerine getirildi) aynı zamanda RSI( NULL,0,rsi_period,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0,rsi_period,PRICE_CLOSE,0<0.7), o zaman sadece köyleri açıyoruz...

Burada ve bool - kimseye ihtiyaç yok - neden burada bayraklarla uğraşmanız gerekiyor, her şey açıkken, tüm bu koşullar karşılandığı sürece, o zaman ya al ya da sat emirleri açıyoruz.

total= OrdersTotal ();
if (total< 1 )

{

   if (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>= 2 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 2 )> 0.7 &&   iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 0 < 0.7 )
         OrderSend ( Symbol (), OP_SELL, lots, NormalizeDouble (Bid, Digits ), 3 , /*Ask+10*Point*/ 0 , /*Bid-10*Point*/ 0 , "ADX sell" , magic, 0 , CLR_NONE );
   

   if (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>= 2 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 2 )< 0.3 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 0 ) > 0.3 ) 
       OrderSend ( Symbol (), OP_BUY, lots, NormalizeDouble (Ask, Digits ), 3 , /*Bid-10*Point*/ 0 , /*Ask+10*Point*/ 0 , "ADX buy" , magic, 0 , CLR_NONE );

  }

Kendinize bir daha bakın.

Kodun başka bir yerinde bir hata arayın ... Yazıyorsunuz - "eğer işe yaramazsa" - daha ayrıntılı olarak deşifre edin - "log" da ne yazıyor?

 
ikatsko :

Merhaba! StopOut'a (ve bazen) ulaşmak istemiyorum. Partiyi, en kötü koşullarda StopOut'u "yakalamayacak" bir değerle sınırlamaya karar verdim. Uzun zamandır deneme yanılma ile uğraşıyorum. Belki birinin bir çözümü vardır?

İlk veri:

- döviz çifti - mutlaka EURUSD değil

- fiyat (alış/satış fiyatı)

- puan olarak belirtilen StopLoss (En kötü koşulların StopLoss seviyesine ulaşıldığında bile StopOut'u yakalamamak olduğu varsayılır)

- partinin set değeri

- MT4 fonksiyonlarını kullanarak diğer değerleri çıkarın: 1 lot büyüklüğü, kaldıraç, çapraz oran

Bir kod istiyorum.

Teorik olarak, gerekli olduğunu anlıyorum: StopLoss seviyesindeki bakiye eksi olası kaybı marj ile bölün. Ve bu değer StopOut'tan (yüzde olarak) büyük olmalıdır.

Aşağı yukarı böyle

 int level=AccountStopoutLevel(); ///// ТОЛЬКО ЕСЛИ ВЫРАЖЕН В ПРОЦЕНТАХ!!!
if (AccountStopoutMode==0)
  {
   double Marga = NormalizeDouble (MarketInfo( "EURUSD" , MODE_MARGINREQUIRED), 2 );
   double TickValue = NormalizeDouble (MarketInfo( "EURUSD" , MODE_TICKVALUE), 2 );
   int SL = 26 ; ////Пунктов
   double lotsShortNaVSE = NormalizeDouble (AccountBalance() / (level * Marga / 100.0 + SL * TickValue ), 2 );
  }

Lot sayısı lotları geçmemelidirKısaNaVSE

SL ---- açık pozisyonunuz için olası bir kayıptır.

Ayrıca, DC'nin de olası bir kayıp hakkında kendi görüşü vardır.

Bu nedenle, sizinkinden veya DC'den Maksimum sayıyı almanız gerekir. Örneğin, şu anda EURUSD çifti için DC'nin olası bir kaybı SL = 26'dır.

SL = MathMax (VashSLvPunktah, SLvPunktahUVashegoDillinga);
Belki başka seçenekler de vardır?
 
rlx :


Ayrıca, DC'nin de olası bir kayıp hakkında kendi görüşü vardır.

Bu nedenle, sizinkinden veya DC'den Maksimum sayıyı almanız gerekir. Örneğin, şu anda EURUSD çifti için DC'nin olası bir kaybı SL = 26'dır.

Belki başka seçenekler de vardır?


Bu, DC'nin bu görünümünü nasıl hesaplayacağınızdır.

Ama kısa dönem için oldukça kritik.

 

Onlar. örneğin, 5 puanlık bir stop kaybınız varsa. yani açılan lot sayısı çok hesaplanır.

Ancak böyle bir pozisyon açmak işe yaramaz çünkü. DC'nin kendi Risk Yönetim sistemi vardır.

 
rlx :


Bu, DC'nin bu görünümünü nasıl hesaplayacağınızdır.

Ama kısa dönem için oldukça kritik.


Güzel gün! Nazikçe yardım edin. Elle ticaret yaparken, belirtilen durdurma ve karı otomatik olarak ayarlayan bir komut dosyasına ihtiyacımız var. Bu mümkün mü ve mümkünse lütfen bir bağlantı sağlayın.
 
Cmu4 :

Hayır .. Önerdiğiniz gibi yaptım - aynı kalır.

Ayrıca kodu, şartlara göre ayrı ayrı açma ve kapama bloklarına bölerek değiştirdim. Hepsi bir. Ne yapacağımı bilmiyorum zaten.

İşte fragmandaki test uzmanı danışmanı olan test cihazından bir ekran görüntüsü:

MACDAC koşulu karşılandığı sürece, siparişler her onayda partiler halinde açılacaktır.

Koşullara ekle
Alış pozisyonları için: Piyasa emri YOKSA, Buy'u açın...
Satış pozisyonları için: Piyasada Satış emri YOKSA, açın...

Ve sorun çözülecek.

Neden: