MMA_Breakout_strategy_volume I (MM veya MF olmadan) - WhooDoo22 tarafından kodlanmıştır - sayfa 2

 
Yine, siparişleri seçmenin birden çok yolu vardır, örneğin, bir siparişin açık mı yoksa kapalı mı olduğunu kontrol etmek için Boolean kullanabilirim. Örnek: Sipariş gönderilir, beş Boole değeri true olarak ayarlanır. Hareketli ortalamalar geçmeye başladığında, Boolean false olarak ayarlanacaktır. Belirli Boole değişkenleri doğruysa ve belirli hareketli ortalamalar kesişiyorsa, belirli Boole değişkenleri yanlış olarak bildirilir ve siparişin belirli bir kısmı kapatılır. Başka yollar da var, ama pek düşünmedim. Ben sadece size bir çözüm sunmak istiyorum. Umarım tatmin edici olmuştur. Bunu yapmanın daha basit bir yolunu bulacağıma inanıyorum, ama yine de fazla düşünmedim. Hala önemlidir, ancak bu stratejide MF veya MM kadar kodlamak zor değildir. Teşekkür ederim.
 
Daha önce alım satım yaptığım bir Canlı hesabım varsa ve şu anda üzerinde açık canlı emir yoksa. . . EA'nızı EURUSD M30 üzerinde çalıştırırsam ne olacak? takas olur mu
 

Bu arada, EA'nızı Strategy Tester'da çalıştırdım ve 11 GB'lık bir hata günlüğü dosyasıyla sonuçlandım. . . örneğin . . .

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: OrderModify hatası 1

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: kapat #6 1.36028 sl'den 0.01 EURUSD satın alın: 1.35960 fiyatından 1.31028

23:08:49 2007.05.06 22:01 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: OrderModify işlevi için bilinmeyen bilet 6

az önce kapatıldığı için bilet #6'yı değiştiremez. . . .
 
WhooDoo22 :
Sipariş seçmenin birden çok yolu olduğuna inanıyorum, Sipariş seçmenin tüm yöntemleri OrderSelect() işlevini kullanmalıdır. Bununla birlikte, bunun neden başarısız olacağını anlamıyorum çünkü EA, strateji test cihazında tüm siparişler için OrderClose() işlevini hatasız olarak gerçekleştiriyor.

Siparişiniz Kapat açıkça çalışmıyor. İade kodlarınızı kontrol etmiş olsaydınız, bunu bilirdiniz. orderSelect'iniz çalışmıyor, ancak kontrol etmiyorsunuz.

ben bir bilet numarası değilsem, orderSelect'iniz başarısız olur ve diğer her şey de öyle.

ben bir bilet numarasıysam, bir sonraki bilet numarası i+1 DEĞİLDİR (test cihazı hariç)

   OrderSelect (i,SELECT_BY_TICKET,MODE_TRADES);
   if (OrderType()==OP_BUY)                                                                     {
   if (OrderLots()== 0.04 )                                                                       {
   if ( OrdersTotal ()> 0 )                                                                         {
   if ( iMA ( NULL , 0 , 1 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )<( iMA ( NULL , 0 , 25 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )))      {  
     {
      OrderClose(i, 0.01 ,Bid, 30 , CLR_NONE ); 
      i++;
     }
     }}}}
     
   OrderSelect (i,SELECT_BY_TICKET,MODE_TRADES);
   if (OrderType()==OP_BUY)                                                                     {
   if (OrderLots()== 0.03 )                                                                       {
   if ( OrdersTotal ()> 0 )                                                                         {
   if ( iMA ( NULL , 0 , 1 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )<( iMA ( NULL , 0 , 50 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )))      {  
     {
      OrderClose(i, 0.01 ,Bid, 30 , CLR_NONE ); 
      i++;
     }
     }}}}
     
   OrderSelect (i,SELECT_BY_TICKET,MODE_TRADES);
   if (OrderType()==OP_BUY)                                                                     {
   if (OrderLots()== 0.02 )                                                                       {
   if ( OrdersTotal ()> 0 )                                                                         {
   if ( iMA ( NULL , 0 , 1 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )<( iMA ( NULL , 0 , 100 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )))     {  
     {
      OrderClose(i, 0.01 ,Bid, 30 , CLR_NONE ); 
      i++;
     }
 

Simon,

Canlı hesabım varsa...

RE: Hacim I'i canlı hesap bakiyesinde çalıştırmanızı kesinlikle önermiyorum! Elbette, seçim sizindir, ancak sizin adınıza, I. ciltten II. cilte evrimi tamamlanana kadar canlı hesapta çalıştırmanızı şiddetle tavsiye etmiyorum. Cilt I hala geliştirme aşamasındadır ve tamamen kodlanana kadar çalıştırılmamalıdır. Ne olacağından emin değilim çünkü kendim CANLI bir hesapta test etmedim. Eksikliğini anlıyorum ve CANLI hesap testini başlatmadan önce temel taleplerini karşılamayı seçtim.


Bu arada,..

RE: Bu hatada ne olduğunu hemen anladığımı düşünüyorum... Bu hata, "EMERGENCY SL" kod bloğundaki bir hatayı yansıtıyor. Kodlaması o kadar zor olmadığı için gücümü asla buna odaklamadım. Kısmen kodladım ve olgunluğunu tamamlamadım. "EMERGENCY SL" kod bloğunda önemli bir uyarlama yoktur. SATIŞ ve SATIN AL "EMERGENCY SL" kod bloklarını tamamen kaldırırsanız, 11 gig hata listesini almayacağınızdan eminim. Başlamak için 11 konser olmasının nedeni, test edilen tarih boyunca kendini tekrar tekrar tekrar etmenin aynı hata olduğuna inanmam.

Teşekkür ederim.


William,

Sizinle Simon kadar kod tartışan bir geçmişim olmadığını söyleyeceğim, ancak yazınıza devam etmek istiyorum (gönderiniz için teşekkürler! Karşılandı.).

Cilt I/II'de görmek istediğiniz şey nedir?

Ticaret değerini garanti altına almak için kesinlikle testler yapıyorum ve test için gerekli kodu ekliyorum. Ardından, CANLI/DEMO'da güvenli ticaret sağlamak için kod sorunlarından geriye kalanları ince ayar yapacağım.

Teşekkür ederim.

 
RaptorUK :
Daha önce alım satım yaptığım bir Canlı hesabım varsa ve şu anda üzerinde açık canlı emir yoksa. . . EA'nızı EURUSD M30 üzerinde çalıştırırsam ne olacak? takas olur mu

VayDoo22 :

Simon,

Canlı hesabım varsa...

RE: Hacim I'i gerçek hesap bakiyesinde çalıştırmanızı kesinlikle önermiyorum! Elbette, seçim sizindir, ancak sizin adınıza, I. ciltten II. cilte evrimi tamamlanana kadar canlı hesapta çalıştırmanızı şiddetle tavsiye etmiyorum. Cilt I hala geliştirme aşamasındadır ve tamamen kodlanana kadar çalıştırılmamalıdır. Ne olacağından emin değilim çünkü kendim CANLI bir hesapta test etmedim. Eksikliğini anlıyorum ve CANLI hesap testini başlatmadan önce temel taleplerini karşılamayı seçtim.


Dikkat etmeye çalıştığım ve sizi teşvik etmeye çalıştığım nokta, eğer herhangi bir hesap geçmişi varsa, kodunuzdaki bu satırlar herhangi bir işlem yapılmasını engelleyecektir. . .

   if (OrdersHistoryTotal()== 0 )                                                                 
      {
       if ( OrdersTotal ()<MaxOrders)  
   if (OrdersHistoryTotal()== 0 )                                                                 
      {
       if ( OrdersTotal ()<MaxOrders)  


OrderSend() kullanılarak bir siparişin verildiği diğer yerler, mevcut bir Order open'ın olduğu yerdir. . . . bu nedenle, Tarihte herhangi bir eski emir varsa, EA'nız hiçbir zaman herhangi bir işlem yapmayacaktır. . . Kodunuzu Demo veya Live'da test etmiş olsaydınız, muhtemelen bunu keşfederdiniz.

 

Simon,

Yapmaya çalıştığım nokta...

RE: Anlaşıldı. Benzersiz bir bilet değişkeni aramak için OrderSelect() işlevini kullanmanın mümkün olduğuna inanıyor musunuz, o zaman aşağıda "if (OrdersHistoryTotal()==0){" öğesini içeren kod bloğu yer alacaktır. Bu, OrderSelect() işlevi benzersiz bilet değişkeni "ticket"i seçtiğinden ve OrdersHistoryTotal() işlevi, yukarıdaki OrderSelect() işlevi nedeniyle yalnızca benzersiz bilet değişkeninin ticari geçmişini aradığından dolayı çalışmaz mıydı? "İf ifadesi", yalnızca benzersiz bilet değişkeni olan belirli bir değişken için geçmişteki siparişleri arar.

 //*************************
// BUY ORDER OPEN SECTION ;
//*************************

   OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES);
   if (OrdersHistoryTotal()== 0 )                                                                 {
   if ( OrdersTotal ()<MaxOrders)                                                                 {
   if ( iMA ( NULL , 0 , 1 , 0 , MODE_SMMA , PRICE_CLOSE , 2 )<( iMA ( NULL , 0 , 200 , 0 , MODE_SMMA , PRICE_CLOSE , 2 )))     { 
   if ( iMA ( NULL , 0 , 1 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )>( iMA ( NULL , 0 , 200 , 0 , MODE_SMMA , PRICE_CLOSE , 1 )))     { 
     {
      ticket= OrderSend ( Symbol (),OP_BUY, 0.05 ,Ask, 30 , 0 , 0 , "" , 0 , 0 ,Blue);    
      i++;
     }
     }}}}

Teşekkür ederim.

 
WhooDoo22 :

Simon,

Yapmaya çalıştığım nokta...

RE: Anlaşıldı. Benzersiz bir bilet değişkeni aramak için OrderSelect() işlevini kullanmanın mümkün olduğuna inanıyor musunuz, aşağıda "if OrdersHistoryTotal()==0{" öğesini içeren kod bloğu yer alacaktır. OrdersHistoryTotal() işlevi yalnızca benzersiz bilet değişkeninin önceki işlemlerini aradığından bu işe yaramaz mı? "İf ifadesi", yalnızca benzersiz bilet değişkeni olan belirli bir değişken için geçmişteki siparişleri arar.

Teşekkür ederim.

Sanırım biraz kafa karıştırıyorsun. . . " Bu, OrdersHistoryTotal() işlevi yalnızca benzersiz bilet değişkeninin önceki işlemlerini aradığından dolayı çalışmaz mı? " dediniz. Bu yanlış, Belgeleri kontrol edin, OrderHistoryTotal() bunu yapıyor. . .

"Terminale yüklenen hesap geçmişindeki kapatılan siparişlerin sayısını döndürür. Geçmiş listesi boyutu, terminalin "Hesap geçmişi" sekmesinin mevcut ayarlarına bağlıdır."


herhangi bir bilet numarasıyla veya bilet değişkeniyle veya Sihirli Numaralarla veya başka bir şeyle ilgisi yoktur. . . Geçmiş havuzundaki Toplam işlem sayısını döndürür. . . tek sınırlayıcı faktör, Hesap geçmişi sekmesinde göstermeyi seçtiğiniz şeydir. . . Tüm Geçmiş, Son 3 ay, Son ay veya Özel dönem.
 
Başka bir nokta . . . EA'nızı kullanıyorsam ve bir takas işlemi varsa. . . . sonra bilgisayarımı birkaç dakika kapatmam gerekiyor, MT4'ü yeniden başlattığımda ve EA'nız başladığında asla açık Order öğesini bulamayacak. . . tüm OrderSelect() çağrılarınız bilet tarafından seçilir. . . ya bilet değişkeninizi ya da i değişkeninizi kullanarak, bunların hiçbiri açık siparişimin bilet numarasını tutmanın herhangi bir yolu yoktur.
 

Simon,

Sanırım biraz kafa karıştırıyorsun. . .

RE: Cilt II, bir koşula göre sipariş gönderme sürecini başlatmalıdır. İlk emir gönderildikten sonra (duruma göre), OrderClose() fonksiyon blokları gelecekteki tüm işlemleri yürütür. Lütfen bunu bir döngü olarak düşünmeye çalışın. Koşullara göre topun yuvarlanmasını sağlayın, ardından ilk sipariş (bilye silindiri siparişi) kapatıldıktan sonra döngü başlatılır. Döngü, gelecekteki koşullar karşılanana kadar sayıları kırmaya ve aktif koşulları kontrol etmeye devam eder.

Teşekkür ederim