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

 
MaxZ :

Muhtemelen bir şeyi özlüyorum:



NewOrder'ı anladım teşekkürler şimdi adım işe yarıyor
 
SeALALex :

NewOrder'ı anladım teşekkürler şimdi adım işe yarıyor

Bu koda dikkat edin. Anında yazılmıştır ve test edilmemiştir! :)))

Ve az önce sorununuzu çözmek için seçeneklerden birini yazdım.


Bu arada, daha önce aşağıdaki kodu sağladınız:

Болк открытия на бай
if (Buy==true) 
  {Buy=false;

   ticket= OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ), 5 ,SL,TP,Order, 070177 , 0 , Orange );
   if (ticket> 0 )
    { 
     if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      { Print ( "BUY order opened : " , OrderOpenPrice ());
       Alert ( "Buy Order for " , Symbol ());
       SendMail ( "Buy Order " + Symbol ()+ " " +Ask,SL);     
       }
     }
     else Print ( "Error opening BUY order : " , GetLastError ()); 
     return ( 0 ); 
   }

Ve örneğin, bir alıntı olacaksa ?? O zaman SATIN AL emri açılmaz ve açma sinyali doğru olabilir. Ve birkaç saat içinde fiyatın nasıl yükseldiğini ve bir yeniden fiyat teklifi nedeniyle SATIN AL emrinin açılmadığını göreceksiniz...

 
MaxZ :

Bu koda dikkat edin. Anında yazılmıştır ve test edilmemiştir! :)))

Ve az önce sorununuzu çözmek için seçeneklerden birini yazdım.


Bu arada, daha önce aşağıdaki kodu sağladınız:

Ya örneğin, bir yeniden teklif varsa? O zaman SATIN AL emri açılmaz ve açma sinyali doğru olabilir. Ve birkaç saat içinde fiyatın nasıl yükseldiğini ve bir yeniden fiyat teklifi nedeniyle SATIN AL emrinin açılmadığını göreceksiniz...


Ama buna karşı nasıl sigortalanır?

 
SeALALex :


ve buna karşı nasıl sigortalanır?

En temel yol, kodu farklı şekilde yeniden yazın:

Болк открытия на бай
if (Buy==true) 
  {ticket= OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ), 5 ,SL,TP,Order, 070177 , 0 , Orange );
   if (ticket> 0 )
    { 
     if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {Buy=false;
       Print ( "BUY order opened : " , OrderOpenPrice ());
       Alert ( "Buy Order for " , Symbol ());
       SendMail ( "Buy Order " + Symbol ()+ " " +Ask,SL);     
       }
     }
     else Print ( "Error opening BUY order : " , GetLastError ()); 
     return ( 0 ); 
   }

Emir açılana kadar, uzun bir Alış pozisyonu açma sinyali True durumunda kalacaktır.

 
MaxZ :

En temel yol, kodu farklı şekilde yeniden yazın:

Emir açılana kadar, uzun bir Alış pozisyonu açma sinyali True durumunda kalacaktır.


Çok teşekkürler! Ve çok teşekkür ederim Roman!

Ve yine de lotta belirli bir adım artış sağlayamıyorum, bir serideki lotu artırmam gerekiyor, diyelim ki marjın katılımı olmadan açık alım emirleri (çünkü marj bazen etki ediyor ve lotu azaltıyor , ama buna ihtiyacım yok), bir dizi siparişte belirli bir boyutta katı bir artışa ihtiyacım var. Eh, yani bir kritere göre bir eğilim var, ikincisine göre bir satın alma sinyali var, ikinci bir satın alma sinyali beliriyor - bir sipariş açılır, ardından ilk kritere göre, satın alma sinyali hala korunur ve ikincisi, hafif bir düzeltmeden sonra, tekrar satın almak için görünür ve başka bir sipariş açılır, ancak zaten büyük bir boyuta sahiptir (boyut ilk parametrelerde ayarlanır, tüm satın alma siparişlerini kapattıktan sonra, bir ödeme sinyali görünür ve ardından her şey başlar tekrar ilk parti büyüklüğünden.

Plizz beyin arkasında hangi kod parçasını göstermek için neye ihtiyacınız var?

 
SeALALex :


Çok teşekkürler! Ve çok teşekkür ederim Roman!

Ve yine de lotta belirli bir adım artış sağlayamıyorum, bir serideki lotu artırmam gerekiyor, diyelim ki marjın katılımı olmadan açık alım emirleri (çünkü marj bazen etkileyerek lotu azaltır, ama buna ihtiyacım yok), bir dizi siparişte belirli bir boyutta katı bir artışa ihtiyacım var.

Parti hesaplamalarında marj kullanmaz, örneğin harici değişkenlerde sadece sabit parametre seti ile çalışırsanız, lotlar buna göre sadece sabit değerlerle artacaktır. Kodun yazılabileceği prensibi yukarıda verdim.

SeALALex :


Eh, yani. bir kritere göre bir eğilim var, ikincisine göre bir satın alma sinyali var, ikinci bir satın alma sinyali beliriyor - bir sipariş açılır, ardından ilk kritere göre, satın alma sinyali hala korunur ve ikincisi, hafif bir düzeltmeden sonra, tekrar satın almak için görünür ve başka bir sipariş açılır, ancak zaten büyük bir boyuta sahiptir (boyut ilk parametrelerde ayarlanır, tüm satın alma siparişlerini kapattıktan sonra, bir ödeme sinyali görünür ve ardından her şey başlar tekrar ilk parti büyüklüğünden .

Plizz beyin arkasında hangi kod parçasını göstermek için neye ihtiyacınız var?

Lot, LotsInitial ve LotsStep değişkenleriniz var. Eğilimi değiştirirken, Lotları sıfıra sıfırlayın ve ilk değeri LotsInitial öğesine atayın . Trend devam ediyorsa ve trende göre emirler zaten açıksa ve yeni bir emir açmanız gerektiğine dair bir sinyal geldiyse, LotsStep adımı ile Lot değişkenini arttırın ve emri açın .

Tüm mantığı anladığınız görülüyor ama nedense if ifadelerine çeviremiyorsunuz... Neden, bilmiyorum.

yardımcı olabilir:

 extern LotsInitial = 0.5 ;
extern LotsStep    = 0.1 ;
       Lots;

int start()
{
   ...

   if ((Тренд окончен) && (Все ордера закрыты) && (Пришёл сигнал о возможном начале нового тренда))
      Lots = LotsInitial;
 
   if ((Тренд подтверждён) && (Коррекция) && (Пришёл ещё сигнал открыться по тренду))
      Lots += LotsStep;
  
   ...
}
 
MaxZ :

Parti hesaplamalarında marj kullanmaz, örneğin harici değişkenlerde sadece sabit parametre seti ile çalışırsanız, lotlar buna göre sadece sabit değerlerle artacaktır. Kodun yazılabileceği prensibi yukarıda verdim.

Lots ve LotsStep değişkenleriniz var. Trendi değiştirirken, Lotları sıfırlayın ve başlangıç değerini atayın. Trend devam ediyorsa ve trend boyunca emirler zaten açıksa ve yeni bir emir açmanız gerektiğine dair bir sinyal geldiyse, LotsStep adımı ile Lot değişkenini arttırın ve emri açın.

Tüm mantığı anladığınız görülüyor ama nedense if ifadelerine çeviremiyorsunuz... Neden, bilmiyorum.


kodun bir kısmını dosya olarak açmaktan sorumlu bir dosya biçiminde koyabilir miyim ve bakıyorsunuz ... Ekledim, ancak gönderdiğim gibi kodda bir sorun var gibi görünüyor, bir adım açılıyor daha fazla ama her yüz.
Dosyalar:
 
SeALALex :

kodun bir kısmını dosya olarak açmaktan sorumlu bir dosya biçiminde koyabilir miyim ve bakıyorsunuz ... Ekledim, ancak gönderdiğim gibi kodda bir sorun var gibi görünüyor, bir adım açılıyor daha fazla ama her yüz.

Önce tüm hataları düzelteceksin. Onsuz çalışmazsa neden Expert Advisor'a bir şey ekleyesiniz? Bu kod, danışmanın tam işlevselliğine benzemese de. Görünüşe göre ondan kod parçalarını kesmişsin, ama hataları temizlemeli miyim? :)))

Örneğin init() işlevi kapalı değil... Ve anlaşılmaz bir değişken: LastOrder...

Hataları düzeltin lütfen.

 
MaxZ :

Önce tüm hataları düzelteceksin. Onsuz çalışmazsa neden Expert Advisor'a bir şey ekleyesiniz? Bu kod, danışmanın tam işlevselliğine benzemese de. Görünüşe göre ondan kod parçalarını kesmişsin, ama hataları temizlemeli miyim? :)))

Örneğin init() işlevi kapalı değil... Ve anlaşılmaz bir değişken: LastOrder...

Hataları düzeltin lütfen.


Evet, kurucu olarak bir araya getirdim, işe yarıyor gibi görünüyor, şimdi elbette az çok normale getirmeye çalışacağım ve yayınlayacağım
 
splxgf :


ND ile ilgili değil. nokta nokta boyutudur, sıfır beş ile çarpın, örneğin 0.00005 olacaktır, bu sayıyı OrderClosePrice()-OrderTakeProfit() ile karşılaştırmak için hiçbir neden göremiyorum. TP tam olarak aynı kapanış fiyatını garanti etmez. Ayrıca koylar ve köyler için farklı doğrulama koşulları olacak.

Bu tasarım biraz daha güvenilirdir.



Teşekkür ederim!!Okudum. Ayrıca, bais ve köyler için farklı doğrulama koşulları olacak - bu doğru !!