EA, AL ve SATIŞ siparişlerini karıştırıyor - sayfa 2

 

Tüm cihazı ve onu nasıl kullandığınızı bilmeden, neyin yanlış olduğunu tahmin ediyor olacağız. Bu ifadeyi geçmek için doğru bir sıra seçtiğini varsayarsak.

 while (! OrderSelect (cnt, SELECT_BY_POS)) { Sleep ( 500 );}

geçmesine imkan yok:

 if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) {

eğer Op_Sell. Aynı Sembolün birden fazla tablosunda bu şeye sahip değilseniz.

Tartışmalı bir while döngüsü kullandığınızı görmek. Bu muhtemelen Rapid Order Maker'ın bir şeklidir.

Son tahminim. Sipariş türü kontrolünden sonra seçilen sipariş değişir :)

Başka bir şey olursa, Raptor gibi çok sayıda baskı ifadesini kullanmanızı öneririm.

 
  1. Seçilen sıra , orderSelect'ten sonra DEĞİŞTİRİLEMEZ.
  2.  for (cnt = total- 1 ; cnt >= 0 ; cnt--)  {
           while (! OrderSelect (cnt, SELECT_BY_POS)) { Sleep ( 500 );}
    orderSelect başarısız olursa, sürekli olarak başarısız olur ve sonsuz bir döngünüz olur. Sizinkini güncellerken başka bir grafikte birden fazla sipariş kapanırsa, bir sonraki yinelemenin seçimi başarısız olur. Çok tehlikeli.
 

Bilet numarasını yazdırdım ve OrderType() ile eşleşmiyor.


Seçilen emir OP_BUY tipinde ise, doğru if işlenecektir, ancak daha sonra OrderModify(...) çağrımda ilk parametre olarak OrderTicket()'i geçiyorum, ancak bu başka bir emrin bileti.


Herhangi bir fikir?

 
dvarrin :

Herhangi bir fikir?

Belki de zaten kapalı olan bir siparişi değiştirmeye çalışıyorsunuz? İşlemlerinizi seçtiğiniz bir havuz belirtmiyorsunuz. .

OrderSelect( int index, int select , int pool=MODE_TRADES) 
MODE_TRADES (varsayılan)- işlem havuzundan seçilen emir (açılan ve bekleyen emirler),

MODE_HISTORY - geçmiş havuzundan seçilen sipariş (kapalı ve iptal edilen sipariş).


	          
 
RaptorUK :

Belki de zaten kapalı olan bir siparişi değiştirmeye çalışıyorsunuz? İşlemlerinizi seçtiğiniz bir havuz belirtmiyorsunuz. .

MODE_TRADES (varsayılan)- işlem havuzundan seçilen emir (açılan ve bekleyen emirler),

MODE_HISTORY - geçmiş havuzundan seçilen sipariş (kapalı ve iptal edilen sipariş).


Onu da denedim ama değişen bir şey olmadı. Kullanmak istediğim seçili siparişin tüm verilerini saklamam gerekiyor gibi görünüyor:


int bilet=0;

çift SL = 0.0;

OrderSelect(cnt, ...);

bilet = OrderTicket();

SL = SiparişStoploss();

if (OrderType() == OP_BUY) {


}


...


Neden böyle? Kodumda neyin yanlış olduğunu anlamıyorum, bu nedenle OrderTicket(), OrderType()'ın atıfta bulunduğu aynı sıraya uymuyor.

 
dvarrin :

Bilet numarasını yazdırdım ve OrderType() ile eşleşmiyor.


Seçilen emir OP_BUY tipinde ise, doğru if işlenecektir, ancak daha sonra OrderModify(...) çağrımda ilk parametre olarak OrderTicket()'i geçiyorum, ancak bu başka bir emrin bileti.

Sıradaki sıra mı, sıradaki önceki sıra mı?
 

orderType = OrderType()

değişmek

int orderType = OrderType(); ve orijinal beyanı silin.

 
forexCoder :

orderType = OrderType()

değişmek

int orderType = OrderType(); ve orijinal beyanı silin.


Sipariş Türü tamam. Doğru siparişin bileti olmayan OrderTicket()'dir.
 

Etrafında kodlama yapmak yerine probleminize neyin sebep olduğunu bulmanızı tavsiye ederim. . .

Yazılım mühendisliği tamamen problem çözme ile ilgilidir, bu şekilde öğrenip daha iyi hale geliriz. Cumartesi gününden beri Fibs ile ilgili belirli bir problemi kodlamak için 3. girişimdeyim, neredeyse oradayım. . . Print() işlevinin dikkatli kullanımı çok yardımcı olur. . .

 
dvarrin :

Sipariş Türü tamam. Doğru siparişin bileti olmayan OrderTicket()'dir.

int OrderType = OrderType() doğru değil, biri diğerini saklıyor olabilir (yerel bildirimler globalleri hatasız olarak gizler.) Deneyin

int orderType = OrderType()