Válasz erre: OrderSelect 2015-11-06T06:26:06+00:00
Radulovic Attila
Tag
Bejegyzések száma: 643

Szia Hornet!

A következő hibákat javítsd:

  • soha ne használj fix ciklust; használd a ciklusban az OrdersTotal() / OrdersHistoryTotal() -t; szerintem ez a bajaid fő forrása
  • a tömbökkel való munkában a lényeg a dinamikusság; írj ciklust arra, hogy keress egy kétdimenziós tömbben, mert ha 100 pozíciót akarsz kezelni akkor nem írhatod végig a 100 indexet a feltételekben
  • a continue használata a legtöbbször nem indokolt; építsd fel úgy az if feltételeket, hogy eleve továbbmenjen a ciklus
  • a kommentelés jó dolog, de használj konstansokat is, hogy olvasható legyen a kódod (1-es helyett OP_SELL használata); ha 1 hónap múlva megnézed majd, akkor is tudni kellene, hogy mit akartál egy-egy kódrészlettel
  • ha már ismered a ticket számokat, akkor OrderSelect-nél is használhatod azokat
  • az egymásba ágyazott ciklusok előnytelenül vannak elkészítve, ezért sokkal többször használod az erőforrásokat, mint az indokolt lenne; elég egyszer végigmenni minden pozíción, és körönként menteni a fontos adatokat a tömbbe
  • szükségtelen két külön OrderSelect(); a pozíciót ticket szám alapján válaszd ki, ekkor a program automatikusan ki fogja választani (nem neked kell döntened, hogy melyik pool-ban kell kotorásszon). A kiválasztás után az OrderCloseTime() alapján eldönthető, hogy lezárt vagy élő pozícióról van szó
  • a Számlatörténet fülön történő dátumkorlátozásra is figyelj, mert amennyiben a felhasználó lekorlátozza a számlatörténet megjelenített időszakát, az expertek sem férnek hozzá azokhoz a pozícióadatokhoz, amelyek nem látszanak
  • boolean vizsgálatnál szükségtelen a == true; elég pl. az if (OrderSelect(h, SELECT_BY_POS)) { }
  • az eredeti kérdés kapcsán pedig: írasd ki Print() segítségével hogy mely pozíciónál kapsz false -t vissza, így kiderül, hogy mi a hibás ticket szám amit ki akarsz választani – ennek alapján lehet majd tovább menni a nyomozásban. Lehet, hogy rossz / nem létező indexet akarsz kiválasztani, vagy nullát.