GMT Offset jak dodać opcje do indykatora?

O jezykach programowania w platformach i nie tylko.
qjp
Bywalec
Bywalec
Posty: 14
Rejestracja: 06 gru 2010, 08:17

GMT Offset jak dodać opcje do indykatora?

Nieprzeczytany post autor: qjp »

Witam, chciałbym tak jak w temacie dowiedziec sie jak dodac do DWMPivots.mq4 parametr GMT co by działał poprawnie u różnych brokerów a nie tylko u tych co maja czas serwera gmt0.
Mam nadzieje ze jest to jasne o co mi chodzi.
DWMPivots.mq4
-P.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

robs
Gaduła
Gaduła
Posty: 196
Rejestracja: 22 sty 2010, 03:05

Re: GMT Offset jak dodać opcje do indykatora?

Nieprzeczytany post autor: robs »

Chyba nie ma żadnej stałej odpowiedzialnej za offset. Ja przynajmniej nie znam. W takiej sytuacji bym zdefiniował dla każdego terminala Global Variable i koniecznie w kodzie sprawdził czy jest ono zdefiniowane przed ewentualnym użyciem.

Coś w tym stylu

Kod: Zaznacz cały

int GMT2Server(int in){
   static int serverTime = - 1;
   if(serverTime == -1){
      if(GlobalVariableCheck("GMToffset")){
         int theOffset = GlobalVariableGet("GMToffset");
         serverTime = MathMod(in + theOffset + 24, 24);
         return (serverTime);       
         }
      else{
         Alert("GMToffset not defined !!!");
         return (serverTime);      
      }
   }
   else
      return (serverTime);
}
Ewentualnie to:
http://www.forexfactory.com/showthread.php?t=217263
radical material simplification

bialy
Stały bywalec
Stały bywalec
Posty: 54
Rejestracja: 16 maja 2011, 20:41

Re: GMT Offset jak dodać opcje do indykatora?

Nieprzeczytany post autor: bialy »

funkcja ktora mam w zegarku. troche bledow logicznych rozpoznawania strefy czasowej, ale czas liczy dobrze.

Kod: Zaznacz cały

int GMT;
string zone;
int shift;
                //zmienne sa zadeklarowane na poczotku zegarka
void BrokerCorrection() {
   if(AccountCompany()=="Admiral Markets Ltd.")             GMT = 0;
   if(AccountCompany()=="X-Trade Brokers DM S.A. ")         GMT = -1;

   if(Symbol() == "USDJPY") {
      zone = "Tokyo";
      shift = (GMT+10)*60*60;
   }
   else if(StringFind(Symbol(),"JPY",3)!=-1) {
      zone = "Tokyo";
      shift = (GMT+10)*60*60;
   }
   if (Symbol() == "AUDUSD") {
      zone = "Sydney";
      shift = (GMT+11)*60*60;
   }
   else if(StringFind(Symbol(),"USD",3)!=-1) {
      zone = "New York";
      shift = (GMT-4)*60*60;
   }
   else if(StringFind(Symbol(),"AUD",0)!=-1) {
      zone = "Sydney";
      shift = (GMT+11)*60*60;
   }
   return(0);
}
funkcja wywolywana jest tylko raz:

Kod: Zaznacz cały

if(IsStarting) {
   BrokerCorrection();
   IsStarting = False;
}
w mgl czas jest liczony w sekundach, i jak cos kombinujesz z czasem to wszystko trzeba zamieniac na sekundy
http://docs.mql4.com/dateandtime/TimeCurrent
oszczedzajmy cykle procesora

ODPOWIEDZ