KimIV'ten faydalı özellikler - sayfa 120

 

Tünaydın.

GetProfitOpenPosInCurrency() işlevi, en kârsız konumları döndürmek için yeniden tasarlandı. bana üzgün olduğunu söyle bu pozisyonun açılış zamanını döndürmek için hangi fonksiyonlar uygundur (OrderOpenTime())?

 double GetMaxLoseOpenPosInCurrency( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double p= 0 ;
   int     i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) 
             if (p > OrderProfit() + OrderSwap() + OrderCommission()){
            p=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
   return (p);
}
 
abeiks :

Tünaydın.

GetProfitOpenPosInCurrency() işlevi, en kârsız konumları döndürmek için yeniden tasarlandı. bana üzgün olduğunu söyle bu pozisyonun açılış zamanını döndürmek için hangi fonksiyonlar uygundur (OrderOpenTime())?


Bilet numarasını döndürün ve standart işlevlerle geçin
 
Vinin :

Bilet numarasını döndürün ve standart işlevlerle geçin

Teşekkür ederim.
 

KimIV , merhaba.Arıyorum - Bir komut dosyası bulamıyorum --- bekleyen tüm siparişleri simgeye göre sil --- ve simgeye göre izle, belki -- düzenle ........ yapma küstahlık olarak algılamayın şimdiden teşekkürler.

 

Tünaydın.

KimIV'den isTradeTimeInt() işlevini kullanıyorum. Birçok zaman aralığı kullanacağım ve her aralığa farklı değişkenler atanacak. Bunu yapmak için böyle bir kod yaptım (şimdiye kadar 2 aralık). Soru şu ki, bu en doğru çözüm mü yoksa soruna yaklaşmanın başka bir yolu var mı?

 extern int OH1= 9 ; extern int OM1= 0 ; extern int CH1= 12 ; extern int CM1= 0 ;
extern int OH2= 13 ; extern int OM2= 0 ; extern int CH2= 15 ; extern int CM2= 0 ;

int HourOpenTime()
{
int trade = 0 ;
if (isTradeTimeInt(OH1,OM1,CH1,CM1))trade = 1 ;
if (isTradeTimeInt(OH2,OM2,CH2,CM2))trade = 2 ;
return (trade);
}
 
bestseich :

Sevgili Igor Kim, OrderCloseBy() türünde bir fonksiyon yazmama yardım et, ama bu farklı çiftler üzerinde ve OrderProfit() üzerinde çalıştı ve bir OrderProfit() gibi çok yönlü emirlerin olup olmaması önemli değil > başka, başka bir çift, kaç Nokta ve her ikisi , yani sadece bu ikisi aynı anda kapalı. Benim seçeneğim şu:

for (int i=OrdersTotal()-1;i>=0;i--)

{
if(Sipariş Seçimi(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()!=Symbol()||OrderSymbol()==Symbol())
{
if(OrderProfit()>=pr*Point)//pr parametrelerde ise, kar puanları
int ot=OrderTicket();double op=OrderProfit();
if(OrderProfit()<=pru*(-1)*Point)//pru parametrelerde, kayıp noktaları
int otu=OrderTicket();double opu=OrderProfit();
if(op>opu*v*(-1)&&(OrderType()==OP_BUY||OrderType()==OP_SEL))
//v kar zarar oranı gibidir, 1.5 gibi
OrderClose(otu,OrderLots(),Bid,uyku,Mavi);
OrderClose(ot,OrderLots(),Bid,uyku,Mavi);
OrderClose(otu,OrderLots(),Sor,uyku,Mavi);
OrderClose(ot,OrderLots(),Sor,uyku,Mavi);

}}}

işe yarayacak mı? Hurda değilse düzeltin veya çözümünüzü sunun.

 

Sevgili Igor!

Son sipariş kapatıldıktan sonra ve bir sonraki sipariş açılmadan önce hesap bakiyesine bağlı olarak lot hacmini hesaplama işleviniz olup olmadığını söyleyin.

Şimdiden teşekkürler.

 
vasabu2012 :

Sevgili Igor!

Son sipariş kapatıldıktan sonra ve bir sonraki sipariş açılmadan önce hesap bakiyesine bağlı olarak lot hacmini hesaplama işleviniz olup olmadığını söyleyin.

Şimdiden teşekkürler.

İşte Igor'un işlevi.

Dosyalar:
b-lots.mqh  3 kb
 

Güncellemede PriceOpenLastPos işlevi şartlar altında çalışmayı durdurdu, Moskova neredeyse kırdı, yorumlarda değerler veriyor ancak şartlar altında çalışmıyor, küçük bir düzenleme sorunu çözdü.

double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0, r2=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}

r2 = DoubleToStr(r, 4);

return(r2);
}


 
Lütfen MetaEditor'daki programlama değişikliklerini dikkate alarak e-CloseByEquity.rar Uzman Danışmanını yeniden derlememe yardım edin.