yeni başlayan birinin maceraları - sayfa 3

 
niko :

Teşekkürler bulut kırıcı! Bu biraz daha eğlenceli hale gelmeye başladı, bir dönüş içinde bir fonksiyon çağırabileceğinizi bilmiyordum (muhtemelen mql kitabında olmasına rağmen, teorik olan her şey gibi). Güzel görünümlü helikopter EC 155! Neden 'neyse ki', kendi helikopterinizi istemiyorsunuz?

Soru Aero HC2:


Şu ana kadar stratejim için 3 senaryom var. 2 tek yönlüdür, 1 çift yönlüdür (burada üzerinde çalıştığımız budur).

MT4 deneyiminize göre, ekranda 5 veya daha fazla çifte farklı komut dosyaları eklersem ciddi sorunlar beklemeli miyim (çift başına 1 komut dosyası). Benim için 1 büyük betiği programlamaktan veya değiştirmekten ve bunu istediğim çifti seçmesini sağlamaktan daha kolay olacak (çünkü bu, kodun günlük olarak değiştirilmesini gerektirir)?

 
niko :

Soru Aero HC2:


Şu ana kadar stratejim için 3 senaryom var. 2 tek yönlüdür, 1 çift yönlüdür (burada üzerinde çalıştığımız budur).

MT4 deneyiminize göre, ekranda 5 veya daha fazla çifte farklı komut dosyaları eklersem ciddi sorunlar beklemeli miyim (çift başına 1 komut dosyası). Benim için 1 büyük betiği programlamaktan veya değiştirmekten ve bunu istediğim çifti seçmesini sağlamaktan daha kolay olacak (çünkü bu, kodun günlük olarak değiştirilmesini gerektirir)?

Burada döviz çiftleri arasında tek bir ticaret stratejisinden bahsettiğimizi varsayarsak: -

EA'larımı çift agnostik yapmayı tercih ederim - yani. aynı EX4 herhangi bir çifte takılabilir.

-Bu şekilde, korumamız gereken tek bir kod tabanımız olur.

-Mantık mümkün olduğunca basit kalır.

 
cloudbreaker :

Burada döviz çiftleri arasında tek bir ticaret stratejisinden bahsettiğimizi varsayarsak: -

EA'larımı çift agnostik yapmayı tercih ederim - yani. aynı EX4 herhangi bir çifte takılabilir.

-Bu şekilde, korumamız gereken tek bir kod tabanımız olur.

-Mantık mümkün olduğunca basit kalır.

Evet, bu ideal olurdu, ancak her para birimi için gösterge bazlı değil, her gün manuel bir filtre ayarlıyorum, ayrıca fikir aynı olmasına rağmen 3 strateji olduğu ortaya çıkıyor. Bu, kodu benim anlayışımda gerçekten büyük hale getirecek ve her şeyi bir araya getirecek olsaydık, günlük olarak ayarlamayı hantal hale getirecekti. Yakın gelecekte filtreyi çalışma zamanımı kesecek şekilde programlayacağım, ancak her zaman programlayamayacağınız şeyler vardır (%90 programlanacak, gerisi bence beyin içindir. kutsal kâse' her şeyi programlamaya çalışmadan ve mükemmel modeli bulmaya çalışmadan önce haha, yanlış yöne bakarak).


Bu Pazartesi günü 2 stratejiyi, bunların üzerindeki kod yapılırken canlı olarak başlatıyorum. Kayınpederim ve kendim tarafından manuel olarak yürütüldüler, kodlama daha yüksek sonuçlar getirmeli. Kombine strateji için, sanırım aynı grafikte 2 EA başlatabilirim (biri uzun diğeri kısaca), ama yine de öğrenmek istiyorum, bu yüzden kodlama sürecine devam edeceğim. Bu yüzden çok yakında çok sayıda soru gelmesini bekleyin!


hangi ülkede yaşıyorsun Londra, İngiltere'deyim.

 

Hey cloudbreaker ve diğer mt4 guruları burada!


Soru: 2 betiğim var (biri satın almak için, diğeri kısa devre yapmak için). Her ikisini de bugün 3 çiftte kullanmak istedim. Şimdi, bir çizelgeye yalnızca 1 EA eklenebildiğinden, 6 çizelge açtım (çift başına 2) ve komut dosyalarını onlara ekledim. Ancak, yalnızca 1 komut dosyası yürütüldü. Neden olduğuna dair hiçbir fikrim yok. Herhangi bir yardım lütfen?


Özetlemek gerekirse: 2 EA, biri sadece diğerini satın alıyor, sadece kısa devre yapıyor, çok temel kurallar (emas'ta altın haç ve bu kadar), kâr 20 pip alıyor, zararı durdurmak yok. Neden sadece 1 yürütülür? Expert Advisors'ın etkinleştirildiğini kontrol ettim ve tüm senaryoların grafiklerde yanlarında gülen yüzler vardı.

 
niko :

Hey cloudbreaker ve diğer mt4 guruları burada!


Soru: 2 betiğim var (biri satın almak için, diğeri kısa devre yapmak için). Her ikisini de bugün 3 çiftte kullanmak istedim. Şimdi, bir çizelgeye yalnızca 1 EA eklenebildiğinden, 6 çizelge açtım (çift başına 2) ve komut dosyalarını onlara ekledim. Ancak, yalnızca 1 komut dosyası yürütüldü. Neden olduğuna dair hiçbir fikrim yok. Herhangi bir yardım lütfen?


Özetlemek gerekirse: 2 EA, biri sadece diğerini satın alır, sadece kısa devre yapar, çok temel kurallar (emas'ta altın haç ve bu kadar), kâr 20 pip alır, zararı durdurmak yok. Neden sadece 1 yürütülür? Expert Advisors'ın etkinleştirildiğini kontrol ettim ve tüm senaryoların grafiklerde yanlarında gülen yüzler vardı.



Günlük dosyaları ne diyor? yani. günlükler dizinindeki ve uzmanlar dizinindeki?

Herhangi bir "Ticaret İçeriği Meşgul" mesajı alıyor musunuz? Öyleyse, IsTradeAllowed() işlevini kullanarak biraz mantık eklemenizi tavsiye ederim.

Değilse, EA'larınızı Print() ifadeleriyle çöpe atmanızı tavsiye ederim.

 
cloudbreaker wrote >>

Günlük dosyaları ne diyor? yani. günlükler dizinindeki ve uzmanlar dizinindeki?

Herhangi bir "Ticaret İçeriği Meşgul" mesajı alıyor musunuz? Öyleyse, IsTradeAllowed() işlevini kullanarak biraz mantık eklemenizi tavsiye ederim.

Değilse, EA'larınızı Print() ifadeleriyle karıştırmanızı tavsiye ederim.

ey bulut kırıcı! kurtarmaya geldiğin için teşekkürler!

1. Günlük dizini ne demek? Bu ikisine nasıl ulaşabilirim? (C>ProgramFiles>MT4>Experts>Logs ile açmaya çalıştım ama klasör boş görünüyor).

 
niko wrote >>

ey bulut kırıcı! kurtarmaya geldiğin için teşekkürler!

1. Günlük dizini ne demek? Bu ikisine nasıl ulaşabilirim? (C>ProgramFiles>MT4>Experts>Logs ile açmaya çalıştım ama klasör boş görünüyor).

Hey bulut kırıcı!

Kodlama konusundaki yorumlarınızı birçok kez okudum (hepsini duvarıma gönderdim), hepsini bir araya getirmeye ve düzeltmeye çalıştım, ancak yine de tamamen kayboldum. Bildiğim kadarıyla MyOrderCount işlevini başka bir EA'dan kopyalamaktı, ancak bunu koda nasıl entegre edeceğime dair hala bir fikrim yok. Tamamen derinliğimi aştım ama bu ilerleyemeyeceğimiz anlamına gelmez. Kodu parça parça oluşturmama yardım edebilirseniz (ve belki kendimi de oluşturabileceğim daha spesifik şeylere yönlendirirseniz), o zaman kodu yapacağız ve çok daha hızlı öğreneceğim.

Kodu aldığım kadarıyla ekledim ve ayrıca Program Tasarım Haritası'nı da benim gördüğüm şekilde ekledim. Koddaki parantezler gibi küçük şeyler için endişelenmeyin, ilerledikçe bunları notepad++ ile iki kez kontrol edeceğim.

Temel öncelik, MyOrderCount kodunu adım adım geri kalanına entegre etmeme yardım edebilirseniz ve lütfen ilerledikçe her şeyi parça parça açıklayın. Veya uygun olduğunu düşünüyorsanız beni kitabın belirli bölümlerine veya bunun gibi bir şeye de gönderebilirsiniz. Bu şekilde çok daha hızlı ilerleyeceğiz.

Teşekkür ederim!

ps: program haritası eklenmediyse bana bildirin

//+------------------------------------------------------------------+
//|                                     N&P 1DailyUpTrendExec.mq4 |
//| Copyright Nick Lou & Pete Arh 2009                               |
//|                                     20090523                     |
//|                                                                  |
//+------------------------------------------------------------------+

extern double    Lots=0.01;
extern double    TakeProfit=20;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
  return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
  return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(Bars<75)
     {
     Print("Bars less than 100");
     return(0);
     }
  //-------------------Declaring All Variables and Conditions

double ema1,ema2,ema3,closeup, e1over2, e2over3,e1under2,e2under3;

ema1= iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0);
ema2= iMA(NULL,0,14,0,MODE_EMA,PRICE_CLOSE,0);
ema3= iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
e1under2=ema1<ema2;
e2under3=ema2<ema3;
e1over2=ema1>ema2;
e2over3=ema2>ema3;
//--------------------declaration end

//-------------order counting code
int CalculateNumberOfOrders(string Symbol)
{
int long=0,short=0;
for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)break;
      if(OrderType()==OP_BUY)long++;
      if(OrderType()==OP_SELL)sell++;
     {
  //---return orders Volume
  if(long>0)return(long);
  if(short>0)return(short);
{
//------------ (fingers crossed this is right). I still don't get it
why we need to count orders.


//------------------EURUSD Block-------------------------
//check order type, if it doesn't equal to buy already then buy
if(OrderType()
     {
    static int ticket;
      // deleted if(OrdersTotal()==0)
     if(e1under2 && e2under3)     // short function
       {
        ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,Bid-TakeProfit*Point,"Short
Order ",0,0,Red);
        if(ticket>0)
              {
              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SHORT order opened : ",OrderOpenPrice());
              }
              //return(0);
       }

      //  -------------------------------------------------------------------------------------------

      {
      static int ticket1;
            // deleted if(OrdersTotal()==0)
        if(e1over2 && e2over3) //buy function
        {
         ticket1=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,Ask+TakeProfit*Point,"",0,0,Green);
//What's 12345 for? I ADDED ASk-30*Point for stop loss
         if(ticket1>0)
           {
           if(OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
           }
           //return(0);   //the problem is with this return not being
in the right place i think
        }
      }
return(0);
}
}

ps: lütfen koddaki rastgele // yorumları görmezden gelin, bu eski notlardan

 
niko wrote >>

Hey bulut kırıcı!

Kodlama konusundaki yorumlarınızı birçok kez okudum (hepsini duvarıma gönderdim), hepsini bir araya getirmeye ve düzeltmeye çalıştım, ancak yine de tamamen kayboldum. Bildiğim kadarıyla MyOrderCount işlevini başka bir EA'dan kopyalamaktı, ancak bunu koda nasıl entegre edeceğime dair hala bir fikrim yok. Tamamen derinliğimi aştım ama bu ilerleyemeyeceğimiz anlamına gelmez. Kodu parça parça oluşturmama yardım edebilirseniz (ve belki kendimi de oluşturabileceğim daha spesifik şeylere yönlendirirseniz), o zaman kodu yapacağız ve çok daha hızlı öğreneceğim.

Kodu aldığım kadarıyla ekledim ve ayrıca Program Tasarım Haritası'nı da benim gördüğüm şekilde ekledim. Koddaki parantezler gibi küçük şeyler için endişelenmeyin, ilerledikçe bunları notepad++ ile iki kez kontrol edeceğim.

Temel öncelik, MyOrderCount kodunu adım adım geri kalanına entegre etmeme yardım edebilirseniz ve lütfen ilerledikçe her şeyi parça parça açıklayın. Veya uygun olduğunu düşünüyorsanız beni kitabın belirli bölümlerine veya bunun gibi bir şeye de gönderebilirsiniz. Bu şekilde çok daha hızlı ilerleyeceğiz.

Teşekkür ederim!

ps: program haritası eklenmediyse bana bildirin

ps: lütfen koddaki rastgele // yorumları görmezden gelin, bu eski notlardan

Merhaba Niko

Bu tartışmaya iki peni değerimi ekleyebilir miyim,

Eski, neredeyse antika :), biraz öğretim ve eğitim tecrübesi olan bir programcı olarak, zamanımda oldukça fazla kötü kodla karşılaştım. Kötü yazılmış kodlara yol açan yaygın bir hata, planlama eksikliğidir. Bariz olanı belirtiyor olabilir, ancak kodlamayı denemeye başlamadan önce gerçekten ne yapmak istediğinizi belirtmeniz gerekiyor. Bu fazladan bir iş gibi görünebilir, ancak uzun vadede size çok zaman kazandıracak ve daha güvenilir, daha anlaşılır ve daha kolay bakımı daha kolay kod üretecektir.

Bilgisayar kodunu belirtmek için çok kullanışlı bir teknik, Sözde Kodlama olarak bilinir. Temel olarak, düz İngilizce ile yazılmış talimatlar gibi sadece mantıklı bir bilgisayar setidir. Gerekli belirli bir format yoktur, ancak hemen hemen her bilgisayar programlama dilinde şu veya bu şekilde bulunan tipik bilgisayar programı jargonunu kullanabilirsiniz.

İşte peynir ve makarna pişirmek için bazı Sözde Kodlara bir örnek. IBFX sitesindeki "Patrick Nouvion tarafından Programlamaya Giriş" makalesinden aldım. Makalenin tamamı muhtemelen okumaya değer. http://www.ibfx.com/ibfxu/catalog/programming/pro1010.aspx

BAŞLAT
Süt ve Tereyağı ve Kraft kutusunu bulun
Bulunursa devam et
yoksa çocuğu mağazaya gönder

Fincan tahtasında Pot bul

Bulunursa devam edin, eşinden onu bulmasına yardım etmesini isteyin

Soba Bul
Bulunursa devam et
başka pizza sipariş et

Mevcut bir brülör olup olmadığını kontrol edin
Varsa devam et
başka fayda sağlamak

Ocağı yüksek konuma getirin
Su Bul
Bulunursa devam et
başka pizza sipariş et

Tencereye Su koyun
Ocağın sıcak olduğundan emin olun
sıcaksa devam et
yoksa prize takılı olup olmadığını kontrol edin
yoksa tamirciyi ara ve pizza sipariş et

Tencereyi brülöre yerleştirin
tuzunuz varsa bir tutam tuz ekleyin
devam etmezse
biberiniz varsa bir tutam biber ekleyin
devam etmezse
su kaynamıyorken bekleyin
Kraft kutusunu aç
makarnayı kutudan tencereye ekleyin
8 dakika bekle
beklerken, tencere aşırı kaynarsa ısıyı kısın ve üzerine üfleyin.
kevgir bul
Makarnayı kevgir içinde süzün
tencereye geri dön
peynir paketinin içeriğini ekleyin
tereyağı ekle
1 yemek kaşığı süt ekleyin
birleştirmek için karıştırın
çok kalınsa 1 yemek kaşığı süt ekleyin; değilse, yemek
SON

Bu sözde kodu kendim yazıyor olsaydım, onu işlevsel bloklara bölerek ve "Güzel Görün" yapmak için biraz girinti kullanarak biraz daha hassaslaştırırdım. Örneğin

BAŞLANGIÇ BLOĞU - Kaynar Suyu Hazırlayın

Tencereye Su koyun

Tencereyi brülöre yerleştirin
tuzunuz varsa bir tutam tuz ekleyin
devam etmezse
biberiniz varsa bir tutam biber ekleyin
devam etmezse
su kaynamıyorken bekleyin

SON BLOK - Boling Suyu Hazırlayın

ve benzeri....

Niko, kendi kodunu yazmayı öğrenmek istediğin için seni takdir ediyorum. Tecrübelerime göre, öğrenmenin en hızlı ve en kolay yolu, yaptığınız şeyi yapmak ve sadece devam etmektir. Yine de önereceğim şey, geriye doğru kısa bir adım atmanız ve elde etmek istediğiniz şeyi sözde kodda yazmanızdır. Bu, tam olarak neyi başarmaya çalıştığınız konusunda düşüncelerinizi netleştirmenize yardımcı olacaktır.

Bunu yaptıktan sonra, benim veya başka birinin bakması için buraya geri göndermek isteyebilirsiniz. Sözde koda sahip olduğunuzda, onu MT4 koduna dönüştürmeye başlayabilirsiniz. Hepsini tek seferde yapmaya çalışmak çok büyük bir sıçramadır, özellikle de yeni başlıyorsanız.

Bu arada, sözde kodum asla boşa gitmez. Çoğu, bitmiş kodumda yorum olarak bitiyor.

İyi şanslar!

Tim Wilson

 
niko :

Hey bulut kırıcı!

Kodlama konusundaki yorumlarınızı birçok kez okudum (hepsini duvarıma gönderdim), hepsini bir araya getirmeye ve düzeltmeye çalıştım, ancak yine de tamamen kayboldum. Bildiğim kadarıyla MyOrderCount işlevini başka bir EA'dan kopyalamaktı, ancak bunu koda nasıl entegre edeceğime dair hala bir fikrim yok. Tamamen derinliğimi aştım ama bu ilerleyemeyeceğimiz anlamına gelmez. Kodu parça parça oluşturmama yardım edebilirseniz (ve belki kendimi de oluşturabileceğim daha spesifik şeylere yönlendirirseniz), o zaman kodu yapacağız ve çok daha hızlı öğreneceğim.

Kodu aldığım kadarıyla ekledim ve ayrıca Program Tasarım Haritası'nı da benim gördüğüm şekilde ekledim. Koddaki parantezler gibi küçük şeyler için endişelenmeyin, ilerledikçe bunları notepad++ ile iki kez kontrol edeceğim.

Temel öncelik, MyOrderCount kodunu adım adım geri kalanına entegre etmeme yardım edebilirseniz ve lütfen ilerledikçe her şeyi parça parça açıklayın. Veya uygun olduğunu düşünüyorsanız beni kitabın belirli bölümlerine veya bunun gibi bir şeye de gönderebilirsiniz. Bu şekilde çok daha hızlı ilerleyeceğiz.

Teşekkür ederim!

ps: program haritası eklenmediyse bana bildirin

ps: lütfen koddaki rastgele // yorumları görmezden gelin, bu eski notlardan

Hızlı bir bakış, temel bir hata yaptığınızı söylüyor.

Start() işlevinin kod bloğu içinde MyOrderCount() işlevini bildirmeye çalışıyor gibisiniz.

Kodunuzu bir dizi fonksiyon init(), start(), yourfunction1(), yourfunction2() ... yourfunctionN() olarak düşünün.

init() ve start() işlevleri özel işlevlerdir. EA'yı ilk başlattığınızda init() işlevi bir kez çalıştırılır. start() işlevi, her gelen bir onay işareti geldiğinde çalıştırılır.

Böylece start() işlevi, EA çalışır duruma geldiğinde tüm mantığınızın çağrılacağı kökü oluşturur.

Örnek olarak, bir onay işareti her geldiğinde start() işleviniz çalışır ve şunu yapar:

- bazı koşulları kontrol edin

- koşullar karşılanırsa, bir sipariş gerçekleştirin

İhtiyacınız olan koşullardan biri, bir satın alma siparişi vermeden önce (satın al) türünde bir siparişinizin olmadığından emin olmaktır.

Bu nedenle start() işlevinden, satın alma siparişi sayma işlevinize (kod bloğu start() işlevinin DIŞINDA yer alan) bir ÇAĞRI ile hangi satın alma siparişlerinin mevcut olduğunu bulmanız gerekir.

Emir sayma fonksiyonunuz alış emirlerinin sayısını döndürecek ve alış emri sayma fonksiyonunu çağırdıktan sonra satırda start() fonksiyonunun yürütülmesine devam edeceksiniz.

Ardından, satın alma siparişinizi gerçekleştirip gerçekleştirmeyeceğinizi belirlemek için satın alma siparişi sayma işlevinden döndürülen değeri kullanacaksınız.

Satın alma emrinin fiili uygulaması, kendiniz için oluşturduğunuz BAŞKA bir işleve yapılan bir çağrı olabilir (yine, start() işlevinin dışında bildirilir).

Umarım bu mantıklıdır. Tamamen farklı bir şekilde yapılandırabilirsiniz, ancak ben sadece işlevler ve çağrı kavramına kafanızı sokmaya çalışıyorum.


CB

 

Hey TSWilson ve CB!

Siz harikasınız! Çok teşekkür ederim.

Sahte kodla ilgili olarak tamamen dikkat edin. Bunu pro**gerçek zamanlı dilde çok temel programlama yaptığımda yaptım, ancak orada çok basitti, bildirim yok, blok yok, vb (tüm kod sadece 'if...then' haha idi). Sözde kodu bu sabah başlattım (sadece bunu yapmak için bir saat erken çalışmam gerekti) ve nasıl ve hangi bloklara sahip olacağına dair görsel bir diyagram yazdım. Bunu bugün daha sonra bitirip buraya göndereceğim.

Bu yapıldıktan sonra, geri kalan blokları ve kodun özelliklerini yardımlarınızla çözebilirim. Şimdilik çizim tahtasına dönelim!

Önümüzdeki hafta tatile çıkacağım ve gitmeden önce her şeyin hazır olmasını istediğim için bugün ve yarın kodu bir an önce bitirmek için gece boyunca çalışmaktan mutluyum.

Bu yüzden bugün bu konuyu izlemeye devam edin, sözde kodu ve diyagramı göndereceğim!

Ve her zaman olduğu gibi, sizin gibi insanlar için Evren'e teşekkür ederim!

Neden: