Döngü Operatörü 'için' soruları - sayfa 13

 

Simon,

"Süre döngünüz herhangi bir bilet bulamadı . . . . "

Bilet indeksini Tarih havuzunda "muhtemelen" bulamadı, buldu ya da aşağıdaki işlevler yürütülmezdi. :)


"bir havuz indeksi !=bir bilet numarası daha önce bunu yaşamadık mı?"

Şimdi açıklığa kavuşturalım,

Sipariş bilet numarası, talep gönderildikten sonra bir siparişe atanan benzersiz bilet numarasıdır .

Bir sipariş pozisyon numarası, bir diziye benzer bir emir havuzu indeksindeki ( anlaşılması önemli olan ) bir emrin pozisyonudur.


"Neden kapalı USDJPY Emrinin tamamen farklı bir havuz olan Geçmiş havuzunda aynı pozisyonda bitmesini bekliyorsunuz?"

Ayrı bir havuz olduğu için yapmamalıyım.

sunduğum kodda-

   if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))
   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true )
      
       Print (OrderCloseTime());
     }

bu görünüşe göre tarih havuzundan sırayı seçiyor değil mi? En azından Dokümantasyon'dan topladığım şey bu. Ayrıca yakın zamanda ayrı döviz çiftlerinde yaklaşık beş emir açmayı denedim, birini kapattım, sonra EA'yı açtım ve hala Print(OrderCloseTime()); dahil tüm işlevleri yerine getirdi.


Teşekkür ederim.

 
WhooDoo22 :

Simon,

"Süre döngünüz herhangi bir bilet bulamadı . . . . "

Bilet indeksini Tarih havuzunda "muhtemelen" bulamadı, buldu ya da aşağıdaki işlevler yürütülmezdi. :)

Bilet numarası kullanan hangi işlevleri kullanıyorsunuz? OrderSelect'lerinizin tümü SELECT_BY_POS'tur. . . POS, POZİSYON anlamına gelir, bu yüzden tekrar ediyorum, while döngünüz bir bilet bulamaz, Sipariş havuzunda bir dizin bulur.


Geçmiş havuzundan seçtiğiniz emir, endeks pozisyonu i'dir. Az önce kapattığınız emrin i pozisyonunda olduğunu NEREDEN BİLİYORSUNUZ ? cevap, BİLMİYORSUNUZ . . . i değeri, USDJPY Siparişinin Sipariş havuzunda olduğu yerdir. . . . havuzlar tamamen ayrıdır ve herhangi bir şekilde veya biçimde bağlantılı değildir.
 

Simon,

"while döngünüz bir bilet bulamazsa, Sipariş havuzunda bir dizin bulur."

Evet, bunu anladığıma inanıyorum. Bu bir sorun olmamalı.


"havuzlar tamamen ayrıdır ve herhangi bir şekilde veya biçimde bağlantılı değildir."

Bu anlaşıldı, ancak OrderClose() fonksiyon kodu bloğu amaçlandığı gibi çalışıyor gibi görünüyor. Adreslemek istediğiniz şeye devam etmek için sipariş bileti numarası değerini kaydetmek için kod bloğunu ayarlayacağım. Kabul?

ÖNCE, şu soruyu soracağım: Neden bir emrin geçmiş havuz pozisyon numarası şimdiki havuz pozisyon numarası ile aynı olmasın? Bu sayının aynı olduğuna inanıyorum.


Teşekkür ederim.

 
WhooDoo22 :

Simon,

"while döngünüz bir bilet bulamazsa, Sipariş havuzunda bir dizin bulur."

Evet, bunu anladığıma inanıyorum. Bu bir sorun olmamalı.


"havuzlar tamamen ayrıdır ve herhangi bir şekilde veya biçimde bağlantılı değildir."

Bu anlaşıldı, ancak OrderClose() fonksiyon kodu bloğu amaçlandığı gibi çalışıyor gibi görünüyor.

OrderClose() çağrısında herhangi bir değişiklik olmadığı için hala çalışması gerekiyor.


Ancak bu, amaçlandığı gibi çalışmaz, çünkü kavram ölümcül şekilde kusurludur. . . devam etmenin neden anlamsız olduğunu anlayana kadar. . .

 if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))


   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true )
      
       Print (OrderCloseTime());
     }
 
WhooDoo22 :


ÖNCE, şu soruyu soracağım: Neden bir emrin geçmiş havuz pozisyon numarası şimdiki havuz pozisyon numarası ile aynı olmasın? Sayının aynı olduğuna inanıyorum.


Test etmekte olduğunuz Demo hesabınıza gidin. . . kaç tane açık siparişiniz var? Hesap Geçmişi sekmesindeki Geçmişinizde kaç Siparişiniz var?
 

Simon,

'Hesap Geçmişi' elli altı içerir.

'Ticaret' (açık emirler) üç içerir.


"Sanırım işe yarıyor WhooDoo. :)" yazmanı bekliyorum.

Hooold, döndürülen Print() işlevi bilet numarasını kontrol ettim ve USDJPY siparişinden farklı bir bilet numarası döndürdü.

Çalışmıyor. Onaylanmış. Yine de denediğime sevindim, bu ders tartışmaya değerdi.

Teşekkür ederim.

 
WhooDoo22 :

Simon,

'Hesap Geçmişi' elli altı içerir.

'Ticaret' (açık emirler) üç içerir.

Yeni bir USDJPY Emri oluşturursanız ve kodunuzu çalıştırırsanız ve bu yeni emri bulursa 3 değerim olacak, kapattığınızda USDJPY emriniz Geçmiş Havuzunda hangi pozisyonu alacak? zaten 56 tane var, yani 3. konum zaten alınmış, 4., 5., 6., 7. konum da öyle. . . 55
 

Simon,

57.

   if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))
   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
       int usdjpy_ticket_number=OrderTicket();
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (usdjpy_ticket_number,SELECT_BY_TICKET,MODE_TRADES)== true )
      
       Print ( "Ticket number for USDJPY = " ,usdjpy_ticket_number);
       Print ( "Order close time = " ,OrderCloseTime());
     }

Teşekkür ederim.

 
WhooDoo22 :

Simon,

57.

Teşekkür ederim.

ben 3 yaşındayım, öyleyse Geçmiş Havuzunda 3. pozisyonda sipariş seçmek, 57. pozisyonda Siparişi almayı nasıl başaracak? ?
 

Simon,

Olmayacak. Geçenlerde bunu yeniden keşfettim.

Teşekkür ederim.

Neden: