ghipszjakab
Tag
Bejegyzések száma: 8

Most, hogy átnéztem a kód részletet amit szíveskedtél leírni és részletezni, kicsit több tudással, újból kérdezek. Előbb egy tévedésemet szeretném kijavítani ami a GMT időt illeti (elnézést a pontatlanságért). Pont hogy a szerver nem GMT, (amúgy a TimeLocal nyilván nem, ha magyar időzónában fut az expertes gép) de a megbízások mindenképpen GMT idő szerint kell kikerüljenek. Ezért gondolom, hogy csak a TimeGMT függvénnyel lehet boldogulni, így nem használható a sima Hour() valamint a TimeLocal és TimeCurrent függvény sem.

A szemaforos megoldás valóban nagyon jó, egy kicsit meghaladja a tudásomat, ezért nem is fordult meg a fejemben.

Én egy ilyen kivitelezést készítettem:

 
           // Ha ez a függvény lefutott, akkor törölt minden régi megbízást, 
           // és mehet a dolog a két új order irányába..ha nem járt le akkor meg majd a következő 
           // if miatt nem fog új ordereke elhelyezni 
              Lejart_az_Ido();                                         
                                                    
              int Ora  = TimeHour( TimeGMT() );
              int Szerver_Ido =  TimeHour( TimeCurrent( ) );
              int Local_Ido   = TimeHour( TimeLocal( ) );
           // Ha "ütött az óra", azaz a GMT idő óra komponense megegyezik a megadott óra       változóval,
           // és nincsen sem OP_BUYSTOP sem OP_SELLSTOP akkor...
              if( Ora == Entry_Hour && Buy_Stop_Darab == 0 && Sell_Stop_Darab == 0 )
                   {
                     Print( "TIME HOUR. GMT: ", Ora, " SERVER: ", Szerver_Ido, " LOCAL: ", Local_Ido );
                     Stop_Limitek_Elhelyezese();
                   }

Úgy találtam, hogy ezzel a megoldással leszűkül pont 1 órányira az az időperiódus, amíg kihelyezheti az ordereket. Egyébként ha mondjuk valamikor délután indítanám az expertet, akkor is nagyobb lenne az Óra komponens, így akkor is kihelyezné…