orderopenprice açıldıktan sonra en yüksek nasıl alabilirim. - sayfa 6

 

İlk sorunu düzelttim (hata yaptım Teşekkürler diostar )

// if(OrdersTotal()>0){ koymalıyım
if ( ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID)) )
{ SAT("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if ( ((lastOpenedOpenPriceBuy()-0.0030>MarketInfo(EURUSD,MODE_BID) ) )" ;}
}

ikincisi için:

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) )
{ CLOSEHORT("EURUSD") ;}

Ne yapmam gerektiğini bilmiyorum:
Bilginize, KAPAT işlevi :

int KAPATMA(dize sembol_c) {
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
dönüş(0);
}

teşekkürler

 

Şimdi kafam karıştı.

lastOpenedOpenPriceBuy() ilk işlevi hakkında mı yanıt veriyorsunuz?

Şimdilik bununla ancak başa çıkabilirim. Peki, tam olarak hangi düzeltmeleri yaptığınızı. Şimdi kod nasıl?

 
diostar :

Şimdi kafam karıştı.

Sen tek değilsin . . zamanını boşa harcamayı bırak.
 
RaptorUK :
Sen tek değilsin . . zamanını boşa harcamayı bırak.

Biliyorsunuz, bu konu muhtemelen en uzun olanıdır. Ve 6 sayfadan sonra kafam karıştı. Hayır, hala bunun bir "israf" olmadığını söylüyorum.

(Sadece yeni yön, yeni hayat, yeni başlangıç zamanı demektir. Herkes için.)

 
Ben de bu konuya zaman ayırdım, kod ekledim ve önerilerde bulundum. . . Atı suya sürüklediğinizde, samanla tatlandırın ve biraz elma ekleyin, ancak at hala içmek istemiyor, atın içmek istemediğini anlamanın zamanı geldi. . . su alımı için damardan damlatmak istiyor. . . bu noktada, endişelendiğim kadarıyla at kendi başına.
 
RaptorUK :
Ben de bu konuya zaman ayırdım, kod ekledim ve önerilerde bulundum. . . Atı suya sürüklediğinizde, samanla tatlandırın ve biraz elma ekleyin, ancak at hala içmek istemiyor, atın içmek istemediğini anlamanın zamanı geldi. . . su alımı için damardan damlatmak istiyor. . . bu noktada, endişelendiğim kadarıyla at kendi başına.

Anlıyorum. Nihai ödül, atın beslenmesi "kaderinde" olmayabilir, o zaman deneyenlerin ödülleri başka bir şey olmalı.

Bunun için ata teşekkür et.

 

Yardımın için teşekkürler diostar .

şimdi %85 hataları düzelttim. Hadi görelim:

1- 4 fonksiyon oluşturduk (lütfen bu sayfanın sonunda bakın)

*sonOpenedOpenPriceBuy()

* lastOpenedOpenPriceSell()

*sonKapalıKapalıFiyat()
*öncekiKapalıKapalıFiyat()

2- Kullandığımızda ilk sorunla karşılaştık:

 if (  ((lastOpenedOpenPriceBuy()- 0.0030 )> MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  SELL( "EURUSD" ,S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )" ) ;}
   if (  ((lastOpenedOpenPriceSell()+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  BUY( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )" ) ;}

Ekleyerek düzeltiyoruz:

 if ( OrdersTotal ()> 0 ){
   if (  ((lastOpenedOpenPriceBuy()- 0.0030 )> MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  SELL( "EURUSD" ,S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )" ) ;}
   if (  ((lastOpenedOpenPriceSell()+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  BUY( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )" ) ;}
   }

3- İkinci konu şudur:

 if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>= 0.0060 )&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/ 2 )< MarketInfo ( "EURUSD" ,MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT( "EURUSD" ) ;}

eğer &&(lastClosedClosePrice()< BeforelastClosedClosePrice()) öğesini kaldırırsam . o zaman her şey yolunda gidecek

ile sorun yok:

*((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>= 0.0060 )

*(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/ 2 )< MarketInfo ( "EURUSD" ,MODE_BID))

&&(lastClosedClosePrice()< BeforelastClosedClosePrice()) ile gelen tek sorun

bir Örnek alın:

5 numaralı emir açılıp satış için ise 6 numaralı emir açılıp kapandıysa o emir alış içindi, 7 numaralı emir de açıldı ve alış içindi.

Durum şöyle olacaktır (lastClosedClosePrice()< BeforelastClosedClosePrice())

( Sipariş Numarası 6 < Sipariş Numarası 4) // çünkü 5 numaralı sipariş hala kapanmadı.

Ne yapmalıyım ? Bilmiyorum. if ( OrdersHistoryTotal ()> 0 ){ kullanmaya çalıştım, sonra tüm koşulları ekledim ama hiçbir şekilde }

 double lastOpenedOpenPriceBuy()
  {
   double ret = 0 ;
   datetime time= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) {
         time = OrderOpenTime ();
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0 ;
   datetime time= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()==OP_SELL && OrderOpenTime ()>time) {
         time = OrderOpenTime ();
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0 ;
   datetime time = 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
       OrderSelect (i, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderType ()< 2 && OrderCloseTime ()>time) {
         time = OrderCloseTime ();
         ret = OrderClosePrice ();
      }
   }
   
   return (ret);
  }


double beforelastClosedClosePrice()
  {
   double ret = 0 ;
   double ret2 = 0 ;
   datetime time = 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
       OrderSelect (i, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderType ()< 2 && OrderCloseTime ()>time) {
         time = OrderCloseTime ();
         ret = ret2;
         ret2 = OrderClosePrice ();
      }
   }
   if (ret== 0 ) {
      ret = ret2;
   }
   
   return (ret);
  }
 
double lastOpenedOpenPriceBuy()
  {
   double ret = 0 ;
   datetime time= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) {
         time = OrderOpenTime ();
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret);
  }

Bu benim önerdiğim DEĞİLDİ ve bunu "biz" yaratmadık. Bu %100 senin.

Neden: