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

 

Diyorsun ki:

 double LastOpenPrice( int ordertype)    { 
double OpenPrice;                            
datetime lastOpen;    
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)       
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
    && OrderMagicNumber () == MagicNumberLong || MagicNumberShort // my magic number
    && OrderSymbol () == Symbol ()     // and my pair.
    && OrderType () == ordertype       
    && OrderOpenTime () > lastOpen )  {        
             if (OpenPrice = OrderOpenPrice ()&&OpenPrice!= 0 )          
               break ;          }
               return (OpenPrice);} //  
lütfen sulotion görmem lazım
 
Hand :

lütfen sulotion görmem lazım

HAYIR . . . öğrenmen lazım . . . bir değişiklik için kendiniz biraz çaba gösterin, kitabı okuyun ( https://book.mql4.com// ) Belgeleri okuyun ( https://docs.mql4.com// ) . . . uzun ve sıralamalı işlemler için farklı Magic numaralarına sahip olmak aptalcadır ve gerekli DEĞİLDİR . . .
 

belki bu şekilde işe yarar.

if ( ( (LastOpenPrice(OP_SELL)+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030 =0.0030<Teklif: DOĞRU // işe yarayacağını düşünüyorum
{ AL( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "eğer (

 
Hand :

belki bu şekilde işe yarar.

if ( ( (LastOpenPrice(OP_SELL)+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030 =0.0030<Teklif: DOĞRU // işe yarayacağını düşünüyorum
{ AL( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "eğer (

"Oyun planın nedir?" diye sorduğumda Gerçekten onu kastediyorum. Yeniden ifade etmek gerekirse, STRATEJİNİZ nedir?

Son açık fiyat yokken TİCARET YAPMAK İSTEMİYORSANIZ, böyle değerlendirebilir misiniz?

if(LastOpenPrice(OP_SELL) <=0) { dönüş? ne yap? -----satış davası

if(LastOpenPrice(OP_BUY) <=0) { dönüş?...veya ne yapacaksınız? ------ satın alma davası

sonra, kodun geri kalanı devam eder ....

bunun gibi bir hatayla, korkarım kodlarınızda burada ve orada "delikleri dolduramazsınız". Stratejin mahvolmuş görünüyor.

Bu tür bir hata, stratejiyi daha yüksek bir düzeyde revize etmeniz gerektiğini "bildirir" ---> NE ZAMAN ticaret yapacağınızı (ve ne zaman yapmayacağınızı). Buna cevaplarınız, fikirleriniz vb. var mı?

 
Hand :

Diyorsun ki:

lütfen sulotion görmem lazım

Bundan bahsetmeyi tamamen unuttum ama bu, ilgili şeylerin bütünlüğü ve sonsuzluğu için en önemlisi . BENİM=SENİN çözümünü görme düşüncesine BAŞARISIZ OLMAK tam bir çılgınlık, ki ben bunu anlamıyorum.

Dünya gezegeninin neresindesin? kim olduğumu düşünüyorsun? Koruyucu meleğin, şaman, kişisel cin vb.

Aklınıza ne koymak için geldiyseniz, gerçekten yardımcı olamam, sadece bilginiz için.

 

çocuklar,

Lütfen aşağıdaki işlevleri kontrol edin (doğruysa veya yanlışsa) bu koşulları yapmam gerekiyor

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

{ bir şey yap }

 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);
  }
 

İlkine ben yardımcı olabilirim, belki geri kalanı için başkaları gelebilir.

 <-------------------- can consider to use if(OrdersTotal()>0..then proceed  ---------------->
double lastOpenedOpenPriceBuy()  <----- what a name...confusing, maybe.
  {
   double ret = 0 ;
   datetime time= 0 ; <---- can consider setting Lowest Limit to -9999, at least -1, rather than 0.  
   for ( int i= 0 ; i< OrdersTotal (); i++) { <----- do consider counting down.
      OrderSelect (i, SELECT_BY_POS, MODE_TRADES); <------ This returns some BOOLEAN result.then what? -----(?)
      if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) { <------ This can return runtime OrderSelect ERR bec. of above line (?). ------ (!) 
         time = OrderOpenTime (); 
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret); <------ return double as UnNormalized price. you sure about this?
  }

 

Lütfen bunu not al:

bu şartı koyduğumda

 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) )  )" ) ;}

çalışmıyor, ama bir koşul daha eklediğimde

 if (  (lastOpenedOpenPriceBuy()> 0 )&&((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) )  )" ) ;}
iyi görünüyor (lastOpenedOpenPriceBuy()> 0 )
 
<-------------------- if(OrdersTotal()>0..sonra devam etmeyi düşünebilir -------------- -->
double lastOpenedOpenPriceBuy() <----- ne isim...kafa karıştırıcı, belki.
{ 
   çift ret = 0 ;
tarihsaat saat= 0 ; <---- En Düşük Limiti 0 yerine en az -1, -9999 olarak ayarlamayı düşünebilir. Hiçbir sipariş açma süresi <= 0 olamaz
   for ( int i= 0 ; i< OrdersTotal (); i++) { <----- geri sayımı düşünün. Hiçbir şey farklı değil.
      OrderSelect (i, SELECT_BY_POS, MODE_TRADES); <------ Bu, bazı BOOLEAN sonucu döndürür. o zaman ne? -----(?) Döngüde siparişin olması gerekiyorsa, sipariş varken OrderSelect hataya neden olmaz. Döngüde değilse, bu satır yürütülmez.
      if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) { <------ Bu, OrderSelect ERR bec çalışma zamanını döndürebilir. yukarıdaki satırda (?). ------ (!) Son satırla aynı nedenle.
zaman = OrderOpenTime (); ret = OrderOpenPrice
(); } } dönüş (ret); <------ çift dönüş Normalleştirilmemiş fiyat olarak. bundan emin misin? Zaten ilk satırda ret = 0 tanımlayın. }
 

Oğlan oh oğlum, sen tek kelimeyle harikasın. Bu esp'i işaret ettiğiniz için teşekkürler, bu:

 OrderSelect (i, SELECT_BY_POS, MODE_TRADES); <------ Döngüde siparişin olması gerekiyorsa, sipariş varken OrderSelect hataya neden olmaz. Döngüde değilse, bu satır yürütülmez.

Sanırım bu çizginizin, emir olmadığında döngüden çıkıp, olduğunda yeniden ortaya çıkan bazı Houdini güçleri var. 


Neden: