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

 
TG :
Evet, sonuncusu, ama soruların özü, bir önceki sıranın eksi ile kapatılmış olması, fonksiyonun bunu gösterecek zamanı olmaması, önce sıranın açılması, birkaç onay işareti geçmesi ve ancak o zaman fonksiyonun gösterilmesiydi. son kayıp ama sipariş zaten açıldı. nasıl üstesinden gelinir?
Doğrulama ile bir kod iskeleti yazdım
 
Yine yaptım, kontrol etmeye vakti yok diyorum, önce geyik yokmuş gibi geçiyor, bir anlaşma açılıyor ve sonra geyiğin geyiğin geldiğini anlıyor.
 
artmedia70 :

Bekleyen sipariş parametresi Süre Sonu'nu neden kullanmıyorsunuz?

Elbette bu parametrenin kullanılamaması ihtimali de vardır.

Bazı alım satım sunucuları bekleyen emir sona erme tarihlerinin kullanılmasını yasaklayabilir. Bu durumda, süre sonu parametresinde sıfır olmayan bir değer ayarlama girişimi, 147 hatası (ERR_TRADE_EXPIRATION_DENIED) üretecektir.

O zaman tabii ki sadece...

Tavsiye ettiğiniz gibi, hatta değişiklikler yaptım ve danışman çalışmayı durdurdu...

bilet=SiparişGönder(Symbol(),OP_BUYSTOP,Lots,Ask+FiyatMesafe*Puan,3,Ask+FiyatMesafe*Nokta-Dur Kaybı*Puan,Ask+FiyatUzaklık*Puan+Al Kar*Puan,"PD",1, TimeCurrent()+ 10*60 , Yeşil);

Ancak, kesinlikle yasak olmadığını biliyorum.

Yanlış ne olabilir, lütfen söyle.

 
TG :
Tekrar yaptım kontrole vakit yok diyorum, önce geyik yokmuş gibi geçiyor, bir anlaşma açılıyor ve sonra ona geyiğin geldiği geliyor.
Mucizeler gerçekleşmez. Siz telepatlara...
 
OlegArH :

Tavsiye ettiğiniz gibi, hatta değişiklikler yaptım ve danışman çalışmayı durdurdu...

bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+FiyatMesafe*Puan,3,Ask+FiyatMesafe*Nokta-DurKayıp*Puan,Ask+FiyatUzaklık*Puan+Al Kar*Puan,"PD",1,TimeCurrent()+ 10*60, Yeşil);

Ancak, kesinlikle yasak olmadığını biliyorum.

Yanlış ne olabilir, lütfen söyle.

Çalışmayı neredeyse hiç bırakmadı, ancak kriterleriniz büyük olasılıkla topal. Kod olmadan danışmanın çalışmaması için bir sebep düşünmek zor...
 
artmedia70 :
Çalışmayı neredeyse hiç bırakmadı, ancak kriterleriniz büyük olasılıkla topal. Kod olmadan danışmanın çalışmaması için bir sebep düşünmek zor...

İşte şimdiye kadar sahip olduğum her şey:

harici çift Kar Al = 50;
harici çift StopLoss=100;
harici çift FiyatMesafe = 50;
dış çift Lot = 1;
harici çift sondaki durdurma = 50;
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- ------ ----------------------+
int başlangıç()
{
int cnt, bilet, toplam;

toplam=SiparişToplam();
if(toplam<1)
{
bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+FiyatMesafe*Puan,3,Ask+FiyatMesafe*Nokta-DurKaybı*Puan,Ask+FiyatUzaklık*Puan+Kar Al*Puan,"PD",1,0,Yeşil) ;
uyku (10000);
bilet=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Puan,3,Bid-PriceDistance*Puan+StopLoss*Puan,Teklif-FiyatMesafe*Puan-AlKar*Puan,"PD",2,0,Kırmızı) ;
}

for(cnt=0;cnt<toplam;cnt++)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // açık pozisyonu kontrol edin
OrderSymbol()==Symbol()) // sembolü kontrol edin
{
if(OrderType()==OP_BUY) // uzun pozisyon açıldı
{
// kapatılmalı mı?
eğer(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Teklif Noktası*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
dönüş(0);
}
}
}
}
else // kısa pozisyona git
{
// kapatılmalı mı?
eğer(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Nokta*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
dönüş(0);
}
}
}
}
}
}
dönüş(0);
}

// son.

Bu formda saban sürer .... Ama buna göre, süresiz anlaşmalar açar, seni piç.

Şimdiden teşekkür ederim!

 
OlegArH :

İşte şimdiye kadar sahip olduğum her şey:

harici çift Kar Al = 50;
harici çift StopLoss=100;
harici çift FiyatMesafe = 50;
dış çift Lot = 1;
harici çift sondaki durdurma = 50;
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
int cnt, bilet, toplam;

toplam=SiparişToplam();
if(toplam<1)
{
bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+FiyatMesafe*Puan,3,Ask+FiyatMesafe*Nokta-DurKaybı*Puan,Ask+FiyatUzaklık*Puan+Kar Al*Puan,"PD",1,0,Yeşil) ;
uyku (10000);
bilet=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Puan,3,Bid-PriceDistance*Puan+StopLoss*Puan,Teklif-FiyatMesafe*Puan-AlKar*Puan,"PD",2,0,Kırmızı) ;
}

for(cnt=0;cnt<toplam;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // açık pozisyonu kontrol edin
OrderSymbol()==Symbol()) // sembolü kontrol edin
{
if(OrderType()==OP_BUY) // uzun pozisyon açıldı
{
// kapatılmalı mı?
eğer(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Teklif Noktası*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
dönüş(0);
}
}
}
}
else // kısa pozisyona git
{
// kapatılmalı mı?
eğer(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Nokta*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
dönüş(0);
}
}
}
}
}
}
dönüş(0);
}

// son.

Bu formda saban sürer .... Ama buna göre, süresiz anlaşmalar açar, seni piç.

Şimdiden teşekkür ederim!


kodu nasıl yapıştıracağınızı öğrenin - hepsini okuyun.
 
Roman. :

kodu nasıl yapıştıracağınızı öğrenin - hepsini okuyun.

Roman, cevap için teşekkürler!
Yapacak küçük bir işim var - robotu, otomatik olarak açıldıkları andan itibaren bir süreliğine ticaret açmaya zorlamak.

Örneğin, bir robot BEKLEMEDEKİ bir işlem açtığında, geçerlilik bitiş süresini otomatik olarak geçerli olandan +600 saniyeye ayarlar ve bu kadar....

Aynı zamanda, onları silme seçeneği çalışmayacaktır, çünkü "eğittiğim" DC'nin, fiyatın 10 puandan + açılış fiyatına yayılmasından daha fazla yaklaşması durumunda geciktiricilerin değiştirilmesi konusunda bir kısıtlaması vardır. Henüz açılmamış sipariş.

Ek olarak, sonuç şu ki, sipariş zaten açıksa, onu silmeniz gerekmez, "oynamasına" ve "ölüm" ile çökmesine izin vermeniz gerekir. Ve orderdelite'ı ayarlarsanız, işlev zaten tetiklenmiş olan siparişleri de kapatacaktır. (?)

Ders kitabına gelince, ben doğası gereği bir programcı değilim, parlak bir şekilde ifade edilen bir hümanist - çiziyorum, heykel yapıyorum, besteliyorum ve başka hiçbir şey için hapsedilmiyorum!)))

Dürüst olmak gerekirse içeri girmeye çalıştım. Bazıları geldi, ama bir şey uymadı ...

Bu yüzden buradayım....

 
OlegArH :

Roman, cevap için teşekkürler!
Yapacak küçük bir işim var - robotu, otomatik olarak açıldıkları andan itibaren bir süreliğine ticaret açmaya zorlamak.

Örneğin, bir robot BEKLEMEDEKİ bir işlem açtığında, geçerlilik bitiş süresini otomatik olarak geçerli olandan +600 saniyeye ayarlar ve bu kadar....

Aynı zamanda, onları silme seçeneği çalışmayacaktır, çünkü "eğittiğim" DC'nin, fiyatın 10 puandan + açılış fiyatına yayılmasından daha fazla yaklaşması durumunda geciktiricilerin değiştirilmesi konusunda bir kısıtlaması vardır. Henüz açılmamış sipariş.

Ek olarak, sonuç şu ki, sipariş zaten açıksa, onu silmeniz gerekmez, "oynamasına" ve "ölüm" ile çökmesine izin vermeniz gerekir. Ve orderdelite'ı ayarlarsanız, işlev zaten tetiklenmiş olan siparişleri de kapatacaktır. (?)

Ders kitabına gelince, ben doğası gereği bir programcı değilim, parlak bir şekilde ifade edilen bir hümanist - çiziyorum, heykel yapıyorum, besteliyorum ve başka hiçbir şey için hapsedilmiyorum!)))

Dürüst olmak gerekirse içeri girmeye çalıştım. Bazıları geldi, ama bir şey uymadı ...

Bu yüzden buradayım....

Burada yazdıklarınızı kelimelerle açıklamaya çalışın:

 extern double TakeProfit = 50 ;
extern double StopLoss= 100 ;
extern double PriceDistance = 50 ;
extern double Lots = 1 ;
extern double TrailingStop = 50 ;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
   int cnt, ticket, total;

   total= OrdersTotal ();
   if (total< 1 ) {
      ticket= OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask+PriceDistance* Point , 3 ,Ask+PriceDistance* Point -StopLoss* Point ,
                       Ask+PriceDistance* Point +TakeProfit* Point , "PD" , 1 , 0 , Green );
       Sleep ( 10000 );
      ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid-PriceDistance* Point , 3 ,Bid-PriceDistance* Point +StopLoss* Point ,
                       Bid-PriceDistance* Point -TakeProfit* Point , "PD" , 2 , 0 , Red );
      }

   for (cnt= 0 ;cnt<total;cnt++) {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()<=OP_SELL &&                         // check for opened position
         OrderSymbol ()== Symbol ()) {                       // check for symbol
         if ( OrderType ()==OP_BUY) {                       // long position is opened
             if ( 1 != 1 ) {
               OrderClose ( OrderTicket (), OrderLots (),Bid, 3 , Violet ); // close position
               return ( 0 );                                 // exit
               }
                                                         // check for trailing stop
             if (TrailingStop> 0 ) {
               if (Bid- OrderOpenPrice ()> Point *TrailingStop) {
                   if ( OrderStopLoss ()<Bid- Point *TrailingStop) {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),Bid- Point *TrailingStop, OrderTakeProfit (), 0 , Green );
                     return ( 0 );
                     }
                  }
               }
            }
         else {                                           // go to short position
                                                         // should it be closed?
             if ( 1 != 1 ) {
               OrderClose ( OrderTicket (), OrderLots (),Ask, 3 , Violet ); // close position
               return ( 0 );                                 // exit
               }
                                                         // check for trailing stop
             if (TrailingStop> 0 ) {
               if (( OrderOpenPrice ()-Ask)>( Point *TrailingStop)) {
                   if (( OrderStopLoss ()>(Ask+ Point *TrailingStop)) || ( OrderStopLoss ()== 0 )) {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *TrailingStop, OrderTakeProfit (), 0 , Red );
                     return ( 0 );
                     }
                  }
               }
            }
         }
      }
   return ( 0 );
}

Şahsen benim için, ilk bakışta fikriniz bir bulmaca gibi çıktı: Birim bire eşit değilse, siparişi kapatın...

Sonrasını izlemedim...

PS ve denemeyin, bir döngüde normal bir Expert Advisor yazmanın mümkün olduğunu düşünmeyin bile...

 
OlegArH :

...Ayrıca orderdelite'ı ayarlarsanız, işlev zaten tetiklenmiş olan siparişleri de kapatacaktır. (?)

...


Numara. Birbirinizi dikkatlice tanıyın . Tetiklenen ertelenmiş - pazar haline gelir - bu işlev onu hiçbir şekilde ilgilendirmez.

"Önceden verilmiş bekleyen bir siparişi siler. İşlev başarıyla tamamlandığında DOĞRU döndürür. YANLIŞ döndürür

işlev başarısız olduğunda. Hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir."

Neden: