Zıt sırayı aç

 

Herkese selam,

Bu sorunla başa çıkmak için sizden yardım almak istiyorum;

Bir emir açıkken ve fiyat emir açık fiyatının altındaysa, karşıt bir emir açmak istiyorum.

Bu özel durumda, bu kodu kullanmaya çalışıyorum ama başarılı olamadım. Burada kimse yardım edebilir mi?

Şimdiden teşekkürler

Luis

 double OpenOppositeOrder() 
 {
   int Op;  
 // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++)
   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
  {
   OrderSelect (Counter,SELECT_BY_POS,MODE_TRADES);
   {
     if (OrderSymbol()== Symbol ()&& OrderMagicNumber()==MagicNumber)
    {
     Op=OrderType();
     if (Op==OP_BUY && NormalizeDouble (Bid, Digits )*UsePoint<OpenPrice)
     {      
     SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize, NormalizeDouble (Bid, Digits ),UseSlippage, 0 , 0 , "Sell Order" ,MagicNumber, 0 ,Red);
     if (SellTicket> 0 )AddLimitsSell();
      }
     if (Op==OP_SELL && NormalizeDouble (Ask, Digits )*UsePoint>OpenPrice)
     {      
     BuyTicket = OrderSend ( Symbol (),OP_BUY,LotSize, NormalizeDouble (Ask, Digits ),UseSlippage, 0 , 0 , "Buy Order" ,MagicNumber, 0 ,Green);
     if (BuyTicket> 0 )AddLimitsBuy();
      }
     }
    }
   }
  }
 
luisneves :

Herkese selam,

Bu sorunla başa çıkmak için sizden yardım almak istiyorum;

Bir emir açıkken ve fiyat emir açık fiyatının altındaysa, karşıt bir emir açmak istiyorum.

Bu özel durumda, bu kodu kullanmaya çalışıyorum ama başarılı olamadım. Burada kimse yardım edebilir mi?

Şimdiden teşekkürler

Luis

Bu soruyu cevaplarmısınız çok yardımcı olacak

1. OrderSelect()'in dönüş değeri nedir - OrderSelect belgelerini okuyun, buna cevap vermenize yardımcı olacaktır.

2. Siparişi gönderemediğinizde hangi hata olur?

 
luisneves :

Herkese selam,

Bu sorunla başa çıkmak için sizden yardım almak istiyorum;

Bir emir açıkken ve fiyat emir açık fiyatının altındaysa, karşıt bir emir açmak istiyorum.

Bu özel durumda, bu kodu kullanmaya çalışıyorum ama başarılı olamadım. Burada kimse yardım edebilir mi?

UsePoint adlı değişkenin amacı nedir? neden kullandığınızı açıklayabilirseniz, muhtemelen sorununuzun ne olduğunu anlayacaksınız. . . ayrıca . . . OpenPrice değeri nereden geliyor?


OrderSend()'inizin çalışıp çalışmadığını bilmek istemiyor musunuz? ve başarısız olursa nedenini bilmek istemiyor musun? Başarısız olduğunda ilgili değişkenlerin ne olduğunu bilmek istemiyor musunuz?

Bunu okuyun: İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım?

 

Merhaba RaptorUK;

Hemen yanıtladığın için teşekkür ederim;

UsePoint , 5 ondalık nokta için ayarlamak içindir, Point*10 da öyle

OpenPrice , OrderOpenPrice()'dir

Teşekkür ederim

Luis

 
luisneves :

Merhaba RaptorUK;

Hemen yanıtladığın için teşekkür ederim;

UsePoint , 5 ondalık nokta için ayarlamak içindir, Point*10 da öyle

Bu durumda neden kullandığınızı açıklayabilir misiniz?

 

Merhaba RaptorUK,

Haklısın. Bunu sadece TakeProfit ve Stoploss için kullanmam gerekiyor (sanırım...)

 
luisneves :

Merhaba RaptorUK,

Haklısın. Bunu sadece TakeProfit ve Stoploss için kullanmam gerekiyor (sanırım...)

Cevapladığınız ve üzerinde düşündüğünüz için teşekkür ederim :-)
 

Merhaba RaptorUK,

Verdiğiniz bağlantıya bir göz attım ve kodu koydum hata rutini ve az önce dönen hata 2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Emir Gönderilemedi, hata # 4051.

Sonra kodda OrderSelect'te bazı değişiklikler yaptım ve Ticket'ı kullandım, ancak işler hala çalışmıyor. Ayrıca anlamını araştırdım ve bulduğum şey ERR_INVALID_FUNCTION_PARAMVALUE (4051) ve maalesef bilmiyorum

buradan nasıl gidilir...

 double OpenOppositeOrder() 
 {
   int Op;  
 // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++)
   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
  {
   //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);
   OrderSelect (Ticket,SELECT_BY_TICKET);
   {
     if (OrderSymbol()== Symbol ()&& OrderMagicNumber()==MagicNumber)
    {
     Op=OrderType();
     if (Op==OP_BUY && NormalizeDouble (Bid, Digits )<OpenPrice)
     {      
     Ticket = OrderSend ( Symbol (),OP_SELL,LotSize, NormalizeDouble (Bid, Digits ),UseSlippage, 0 , 0 , "Sell Order" ,MagicNumber, 0 ,Red);
     if (Ticket> 0 )AddLimitsSell();
      } 
       if ( Ticket > 0 )
   {
   Print ( "Order placed # " , Ticket);
   }
else
   {
   Print ( "Order Send failed, error # " , GetLastError () );
   }
     if (Op==OP_SELL && NormalizeDouble (Ask, Digits )>OpenPrice)
     {      
     Ticket = OrderSend ( Symbol (),OP_BUY,LotSize, NormalizeDouble (Ask, Digits ),UseSlippage, 0 , 0 , "Buy Order" ,MagicNumber, 0 ,Green);
     if (Ticket> 0 )AddLimitsBuy();
      }
       if ( Ticket > 0 )
   {
   Print ( "Order placed # " , Ticket);
   }
else
   {
   Print ( "Order Send failed, error # " , GetLastError () );
   }
      
      
     }
    }
   }
  }


 
luisneves :

Merhaba RaptorUK,

Verdiğiniz bağlantıya bir göz attım ve kodu koydum hata rutini ve az önce dönen hata, 2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Order Gönderilemedi, hata # 4051.

Sonra kodda OrderSelect'te bazı değişiklikler yaptım ve Ticket'ı kullandım, ancak işler hala çalışmıyor. Ayrıca anlamını araştırdım ve bulduğum şey ERR_INVALID_FUNCTION_PARAMVALUE (4051) ve maalesef bilmiyorum

buradan nasıl gidilir...

OrderSend() işlevine gönderdiğiniz değerleri kontrol etmeniz gerekir. . . doğru tipler mi? örneğin, UseSlippage bir int olmalı, kulağa bir bool gibi geliyor. . . LotSize bir çift midir? doğru aralıkta mı? Min Lot'tan büyük ve Maks Lot'tan küçük ve Lot Adımının katları ?
 
RaptorUK :
OrderSend() işlevine gönderdiğiniz değerleri kontrol etmeniz gerekir. . . doğru tipler mi? örneğin, UseSlippage bir int olmalı, kulağa bir bool gibi geliyor. . . LotSize bir çift midir? doğru aralıkta mı? Min Lot'tan büyük ve Maks Lot'tan küçük ve Lot Adımının katları ?


Merhaba RaptorUK,

Vaktinizi aldığım için üzgünüm, muhtemelen benden sıkılmaya başladınız. Yani Slippage bir int ve LotSize bir double .... ve işler hala kötü ....

Bunu anlamak için hala çok uğraşıyorum ama görünüşe göre cehaletim bundan faydalanıyor (...)

Bazen bu Test Cihazı ile ilgili bir sorun olabilir ve ardından Demo'da deniyorum. Ve burada eğer fiyat OrderOpenPrice'ın (Satın Alma için) altına gelirse karşıt bir emir açılışına sahip olamam.

Lütfen ekteki koda bir göz atabilir misiniz?

Benim için kod yazmanı istemiyorum ama sadece küçük bir yardım.

Sağlanan her türlü yardım ve sabrınız için şimdiden teşekkür ederiz.

Luis

Dosyalar:
 
luisneves :


Merhaba RaptorUK,

Vaktinizi aldığım için özür dilerim, muhtemelen benden sıkılmaya başladınız. Yani Slippage bir int ve LotSize bir double .... ve işler hala kötü ....

Bunu anlamak için hala çok uğraşıyorum ama görünüşe göre cehaletim avantaj sağlıyor (...)

Bazen bu Test Cihazı ile ilgili bir sorun olabilir ve ardından Demo'da deniyorum. Ve burada eğer fiyat OrderOpenPrice'ın (Satın Alma için) altına gelirse karşıt bir emir açılışına sahip olamam.

Lütfen ekteki koda bir göz atabilir misiniz?

Benim için kod yazmanı istemiyorum ama sadece küçük bir yardım.

Sağlanan her türlü yardım ve sabrınız için şimdiden teşekkür ederiz.

Neden doğru kodu yanlış kodla değiştirdiniz?

İşlem Havuzundaki tüm emirler arasında döngü yapıyordunuz (açık ve bekleyen emirler ). . . şimdi bu kod anlamsız, döngüdeki ilk geçişte bilet nereden geliyor?

 for ( int Counter= OrdersTotal ()- 1 ; Counter>= 0 ; Counter--)
  {
   //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);
   OrderSelect ( Ticket ,  SELECT_BY_TICKET);


Size başka bir soru. . . . hiçbir şey döndürmediğinde bu İşlev türü neden iki katına çıkıyor?

Neden: