Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1008

 
Stereosin :
Hepinize iyi günler. Sonuç olarak - her açık piyasa emri için (kar al ve zararı durdur vardır), zararı durdur tetiklendiğinde ters yönde bekleyen bir emir verilir (emir alım ise, o zaman bekleyen gönderme). Kar al ile mevcut emir kapandığında bekleyen emirleri silen bir script yazmak için sözdiziminin sırasını hiçbir şekilde çözemiyorum? Belki ücretsiz olanlar arasında zaten yazılı bir script vardır ama arama başarısız olur (. Bunu anlamak için kendim yazmak istiyorum ama sözdizimi dizisini anlayamıyorum. Başka bir örnekle açıklayacağım - buz istiyorum krem - söz dizimi - 1) - koltuktan ayrıl 2) Giyin 3) Mağazaya yürü 4) Dondurma al. Benim görevim için aynısını yazmak mümkün mü?

mevcut olan kapandığında alış başına emir sayısı azalacaktır veya hiç olmayacak (hangi algoritmaya bağlı olarak) bu kontrolü yapın ve bekleyen emirleri kaldırın

bunun gibi bir şey (burada, aksine, daha önce yerleştirilmiş satın alma bir kârla kapatılırsa suçlular kaldırılır):

 for ( int m= OrdersTotal ()- 1 ;m>= 0 ;m--)
   if ( OrderSelect (m,SELECT_BY_POS,MODE_TRADES)) 
     if ( Symbol ()==OrderSymbol() && OrderMagicNumber()==Magic) {  
    
       if (OrderType()==OP_BUY)  sBuy++; 
       if (OrderType()==OP_SELL) sSell++;
       
       if (OrderType()==OP_BUYLIMIT)
       if (sBuy== 0 || sSell> 0 ) OrderDelete(OrderTicket());
       if (OrderType()==OP_SELLLIMIT) 
       if (sSell== 0 || sBuy> 0 ) OrderDelete(OrderTicket());
  }
 
Ratmirf :

Yani bu böyle mi çalışıyor?

if (OrderOpenTime()+7200+15*60 <=TimeCurrent()) Cls_Buy=true;

if (OrderOpenTime()+7200+900 <=TimeCurrent()) Cls_Buy=true;

ve sonunda böyle mi?

if (OrderOpenTime()+8100 <=TimeCurrent()) Cls_Buy=true;

Pekala, bu lise matematiği... Kendinize biraz daha güvenin.
 
harbor :

mevcut olan kapandığında alış başına emir sayısı azalacaktır veya hiç olmayacak (hangi algoritmaya bağlı olarak) bu kontrolü yapın ve bekleyen emirleri kaldırın

bunun gibi bir şey (burada, aksine, daha önce yerleştirilmiş satın alma bir kârla kapatılırsa suçlular kaldırılır):

Çok teşekkürler. Bu gece inceleyeceğim.
 

Bak, anlamını gerçekten anlamadığım bir sorunla karşılaştım. kodun anlamı, durdurma kaybı durdurma seviyesinden daha az olabilecek belirli bir sinyalle bir emir açmaktır. bu olursa, stoploss'u istenen boyuta yükseltirim. Açarken tp kurmuyorum, programda sanal bırakıyorum ve sipariş açıyorum. sonuç olarak 15 - 20 adetten sadece biri açılıyor.Her siparişin açılması için ne yapılması gerekiyor? kod:

RefreshRates();


     double bid = MarketInfo(symbol,MODE_BID);
     double ask = MarketInfo(symbol,MODE_ASK);

    

     double stoplevel =  NormalizeDouble(stoplevelTemp * tickTemp,digitsTemp)+tickTemp;

     if(digitsTemp == 5 )
          stoplevel+=(700 * tickTemp);
     
     if(spreadOrdDangBr < stoplevel)                                                                           //если спред меньше стоплевела - перебиваем
         spreadOrdDangBr=stoplevel;
         
     double lotDB = calculationLot(spreadOrdDangBr,0.0025);                                                      //расчитываем лот - четверть процента свободных денег
     


         slODB=ask-spreadOrdDangBr;                                                                              
         tpODB= ask+ spreadOrdDangBr;

         orderTicketODB=OrderSend(symbol,OP_BUY,lotDB,ask,3,slODB,0,("dangBr" +spreadOrdDangBr));



ve sonuç olarak terminalde


 
Herkese merhaba) seçilen çubuğun maksimum fiyatı nasıl belirlenir (örneğin, yüzüncü)
 

Bana yardım et lütfen! Açtıktan sonra, örneğin, fiyat yükseldiğinde, örneğin 100 ile Satın Al'ı istiyorum.
puan, stop loss , önceki stop loss'a göre sıfıra eşit oldu.

Doğru şeyi mi yapıyorum:


if(Bid-OrderOpenPrice()>Point* 100 )

{

OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TakeProfit,0,);

dönüş(0);

}

Teşekkür ederim!

 
Tema97 :
Herkese merhaba) seçilen çubuğun maksimum fiyatı nasıl belirlenir (örneğin, yüzüncü)
Yüksek[100] yardımcı olmaz
 

Bir fonksiyon buldum - 100 bar için maksimum ve minimum fiyatı belirler ve yatay çizgiler çizer (örneğin ilk 15 çubuğu atlamama yardım et ve ancak o zaman 100'ü kontrol et (böyle bir kayma nasıl yapılır? Ve başka bir sorun) çizgilerle - sadece 1 kez çizer - yani - yeni inişler ve çıkışlarla 100 puan daha geçersek - çizgiler çekilmez) kim bilir lütfen tekrar yazın - işte kodun kendisi

harici int Quant_Bars=100; // Çubuk sayısı

//------------------------------------------------ --------------------

int start() // Özel. başlatma işlevi

{

int i; // Çubuk numarası

double Minimum=Teklif, // Minimum fiyat

Maks=Teklif; // Maksimum fiyat

for(i=0;i<=Quant_Bars-1;i++) // Sıfırdan (!)'ye..

{ // ..Quant_Bars-1 (!)

if (Düşük[i]< Minimum) // < biliniyorsa

Minimum=Düşük[i]; // o zaman min olacak

if (Yüksek[i]> Maksimum) // Eğer > biliniyorsa

Maks=Yüksek[i]; // o zaman maksimum olacak

}

Alert("Sonuncusu için",Quant_Bars, // Görüntüle

" çubuklar Min= ",Minimum," Maks= ",Maksimum);

double line1=ObjectCreate("highLine", OBJ_HLINE ,0,0,Maksimum);

double line2= ObjectCreate("lowLine",OBJ_HLINE,0,0,Minimum);

dönüş(0); // başlangıçtan çık()

}

 
Tema saygısı sonunda belgeler. Orada çok ilginç şeyler bulabilirsiniz... Örneğin , iHighest , ilgili grafiğin bulunan en yüksek değerinin (geçerli çubuğa göre ofset) dizinini döndürür. Ve iHigh , ilgili grafiğin çubuğun (shift parametresi ile gösterilen) maksimum fiyatının değerini döndürür. Bu iki işlevi anladıktan sonra, başkasının her zaman iyi yazılmış işlevlerine başvurmadan sorununuzu kolayca çözebilirsiniz.
 
Beyler söyle bana, gösterge standart olmayan grafik nesneler çiziyorsa, bunlara erişmek mümkün mü? Sorun şu ki, nesneler listesinde görüntülenmiyorlar (Tümü düğmesine basıldığında) ve ObjectsTotal() işlevi onları görmüyor. Nesnelere adlarına göre erişmeye çalışırken GetLastError() 4202 hatasını döndürür ( ObjectFind() işlevi )
Neden: