Başka bir döviz çiftinden teklif/talep nasıl içe aktarılır? - sayfa 3

 
HosseinKOGO :

Sorun nedir?

Ask2 ve Bid2'niz 0 olduğundan, neden bu satırı bunlardan birinin arkasına eklemiyorsunuz?

 Print ( "MarketInfo Error = " , GetLastError ());

Bak bakalım işe yarar bir bilgi var mı?

 
HosseinKOGO : Açık grafiğim olarak GBPAUD'u ve ikinci çiftim olarak GBPUSD'yi deniyorum.

"İkinci çift", ikinci TF için download_history'yi aradın mı?

 
William Roeder :

"İkinci çift", ikinci TF için download_history'yi aradın mı?

İşte benim küresel alanım:
 extern string SecondPair;
double Ask2,Bid2;

#define HR2400 PERIOD_D1 * 60      // 86400 = 24 * 3600
int       TimeOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( int (when % HR2400 ));            }
datetime DateOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( when - TimeOfDay(when) );   }
#define SYMBOL string
#define THIS_SYMBOL ""
bool   download_history( ENUM_TIMEFRAMES period= PERIOD_CURRENT ){
   return download_history( _Symbol , period); 
}
bool   download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
       ENUM_TIMEFRAMES    period= PERIOD_CURRENT    /**< The standard timeframe.*/ ){
   if (symbol == THIS_SYMBOL)     symbol = _Symbol ;
   if (period == PERIOD_CURRENT )  period = _Period ;
   datetime today = DateOfDay();
   ResetLastError ();
   datetime other = iTime (symbol, period, 0 );
   if ( _LastError == 0 
   && today == DateOfDay(other)) return true ;   
   if ( _LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
     ) Print ( StringFormat ( "iTime(%s,%i) Failed: %i" , symbol, period, _LastError ));
   return false ;
}
.
.
.

Ve işte benim başlatma fonksiyonum:

   download_history(SecondPair, PERIOD_H4 );
   while (!download_history(SecondPair, PERIOD_H4 ) ){ Sleep ( 1000 ); RefreshRates(); }
   Ask2= SymbolInfoDouble (SecondPair, SYMBOL_ASK );
   Bid2= SymbolInfoDouble (SecondPair, SYMBOL_BID );
   Comment(Ask2,Bid2);
.
.
.

GBPUSD'yi SecondPair girişi olarak koyduğum ve bu geri testi GBPAUD grafiğinde yaptığım.

 
Seng Joo Thio :

Ask2 ve Bid2'niz 0 olduğundan, neden bu satırı bunlardan birinin arkasına eklemiyorsunuz?

Bak bakalım işe yarar bir bilgi var mı?

Bahsettiğiniz bu satırı, Ask2,Bid2 tanımladıktan hemen sonra, mumların başlaması ve grafiğin devam etmesi için aşağıdaki satırı devre dışı bıraktığımda start fonksiyonuma ekledim.
 while (!download_history(SecondPair, PERIOD_H4 ) ){ Sleep ( 1000 ); RefreshRates(); }

Hata, "Bilinmeyen sembol" anlamına gelen 4106 idi.

Sonra aşağıdaki satırı da devre dışı bıraktım:

download_history(SecondPair, PERIOD_H4 );
Ve ilk başta 4066 hatası aldı (Güncelleme durumunda talep edilen geçmiş verileri.) Sonra geriye dönük testin geri kalanı için 4106'ya döndü.
 
HosseinKOGO :
Bahsettiğiniz bu satırı, Ask2,Bid2 tanımladıktan hemen sonra, mumların başlaması ve grafiğin devam etmesi için aşağıdaki satırı devre dışı bıraktığımda start fonksiyonuma ekledim.

Hata, "Bilinmeyen sembol" anlamına gelen 4106 idi.

Sonra aşağıdaki satırı da devre dışı bıraktım:

Ve ilk başta 4066 hatası aldı (Güncelleme durumunda talep edilen geçmiş verileri.) Sonra geriye dönük testin geri kalanı için 4106'ya döndü.

Sembol adınızın sadece "GBPUSD" olmadığından şüpheleniyorum... bir yerlerde fazladan karakterler olabilir... şunu denediniz mi:

 Print (" Symbol Name = ", Symbol ());

önce sembol adının sadece altı büyük harf olduğunu doğrulamak için?

 
Seng Joo Thio :

Sembol adınızın sadece "GBPUSD" olmadığından şüpheleniyorum... bir yerlerde fazladan karakterler olabilir... şunu denediniz mi:

önce sembol adının sadece altı büyük harf olduğunu doğrulamak için?

Sembol () işlevim, GBPAUD grafiğine koyduğumdan beri "GBPAUD" gösteriyor.
Geriye dönük test için normal demo hesabı kullanmama rağmen, Tam olarak 6 büyük harf. Ancak önerdiğiniz bunu denedim ve beklenen sonucu aldım.

Aşağıda altını çizdiğim "örtük enum dönüştürme" kodunu derlerken de bir uyarı alıyorum. Bu tam olarak ne anlama geliyor?

 #define HR2400 PERIOD_D1 * 60      // 86400 = 24 * 3600
int       TimeOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( int (when % HR2400 ));            }
datetime DateOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( when - TimeOfDay(when) );   }
#define SYMBOL string
#define THIS_SYMBOL ""
bool   download_history( ENUM_TIMEFRAMES period= PERIOD_CURRENT ){
   return download_history( _Symbol , period); 
}
bool   download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
       ENUM_TIMEFRAMES    period= PERIOD_CURRENT    /**< The standard timeframe.*/ ){
   if (symbol == THIS_SYMBOL)     symbol = _Symbol ;
   if (period == PERIOD_CURRENT )  period = _Period ;
   datetime today = DateOfDay();
   ResetLastError ();
   datetime other = iTime (symbol, period, 0 );
   if ( _LastError == 0 
   && today == DateOfDay(other)) return true ;   
   if ( _LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
     ) Print ( StringFormat ( "iTime(%s,%i) Failed: %i" , symbol, period, _LastError ));
   return false ;
}
 

Sanırım sıfır almanın nedenini buldum... Bu satırları bir komut dosyasına koydum ve MT4'ümde çalıştırdım:

   for ( int i= SymbolsTotal ( false )- 1 ; i>= 0 ; i--)
   {
       string SName = SymbolName (i, false );
      Ask2= SymbolInfoDouble (SName, SYMBOL_ASK );
      Bid2= SymbolInfoDouble (SName, SYMBOL_BID );
       Print (SName, " Ask = " , Ask2, ", Bid = " , Bid2);
   }

Ve market saatimde olmayan semboller için Ask2 ve Bid2'nin sıfır olacağını fark ettim... ama onları market saatime dahil ettiğimde, tekliflerini alıp sorabiliyorum. Geçmiş verileriyle uğraşmaya gerek yok.

 
Seng Joo Thio :

Sanırım sıfır almanın nedenini buldum... Bu satırları bir komut dosyasına koydum ve MT4'ümde çalıştırdım:

Ve market saatimde olmayan semboller için Ask2 ve Bid2'nin sıfır olacağını fark ettim... ama onları market saatime dahil ettiğimde, onların teklifini alıp sorabiliyorum. Geçmiş verileriyle uğraşmaya gerek yok.

MT4'ümün sol üst köşesindeki market izleme penceremde bu semboller var.
Ama bunları koduma dahil etmeliyim diyorsan, onları kodla nasıl ekledin? (Yanlış anladıysam lütfen açıklığa kavuşturun çünkü o kadar profesyonel değilim :D)

 
HosseinKOGO :

MT4'ümün sol üst köşesinde , market izleme penceremde bu semboller var.
Ama bunları koduma dahil etmeliyim diyorsan, onları kodla nasıl ekledin? (Yanlış anladıysam lütfen açıklığa kavuşturun çünkü o kadar profesyonel değilim :D)

Kod değil.
Zaten pazar izleme pencerenizde oldukları için işler daha da garipleşiyor.
mt4'ünüzü hangi komisyoncudan indirdiniz? Test etmek için yüklemek istiyorum.
 
Tepkiniz için çok teşekkürler,

Aslında ben kodlayıcı değilim zaten birkaç EA kodlamaya başladım. Faaliyetim buluşçuluk ve sistemle bağlantılıdır, bu yüzden EA'ları yapmak için 600-700 düşünceyi kavramsallaştırdım ve şimdiye kadar inşa ettim. Basit EA'ları kodlayabilirim ve anormal durum kodlamanıza alışkın değilim ...

Bu kodları EA'ma koydum, ancak yalnızca şu hatayı döndürüyor: 2019.05.06 15:37:56.586 2018.01.02 00:00:07 MyEA! GBPAUD,H4: iTime(GBPUSD,240) Başarısız: 0

Açılan diyagramım olarak GBPAUD'yi ve ikinci çiftim olarak GBPUSD'yi deniyorum.

Sorun nedir?
Neden: