English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Emir Stratejileri. Çok Amaçlı Uzman Danışman (EA)

Emir Stratejileri. Çok Amaçlı Uzman Danışman (EA)

MetaTrader 5Ticaret | 9 Aralık 2021, 13:04
115 0
Dmitry Fedoseev
Dmitry Fedoseev

 

Giriş

Herhangi bir alım satım stratejisinin ilk temel öğesi, fiyat analizi ve bir pozisyon açmanın temelini oluşturan teknik göstergelerin analizidir. Buna piyasa analizi diyeceğiz, yani piyasada olan ve kontrolümüz dışında olan her şey.

Ayrıca, stratejiler başka bir analiz türü gerektirebilir. Biz buna mevcut alım satım durumunun analizi diyeceğiz. Alım satım pozisyonu durumunun analizini ve mevcut/eksik bekleyen emirlerin (herhangi biri bir stratejide kullanılırsa) analizini içerir. Bu tür analizlerin sonuçları, pozisyon veya emirler içeren belirli eylemlerin gerçekleştirilmesi gerekip gerekmediğine, örneğin Zararı Durdur seçeneğini kapatmaya, taşımaya, bekleyen emirleri yerleştirmeye veya silmeye vb. dair kararlara getirir. Başka bir deyişle, bu tür analizler piyasa faaliyetimizin incelenmesini, bizim (veya bir Uzman Danışmanın (EA)) oluşturduğumuz duruma göre eylemleri ve kullanımdaki stratejinin kurallarını içerir.

Yaygın olarak bilinen bir Takip Eden Durdurma, belirli ölçüde bir alım satım stratejisindeki ikinci öğe türü olarak kabul edilebilir. Aşağıdaki analizi göz önünde bulundurun: Zararı Durdur ayarlanmadığında veya ayarlarda belirtildiği gibi geçerli fiyattan mesafe daha uzakken, ayarlanan değerden daha yüksek kara sahip açık bir pozisyon varsa, Zararı Durdur taşınır.

Takip Eden Durdurma, özellikle ilgi çekici olmak için oldukça basit bir fonksiyondur. Ayrıca, bir pozisyon yönetimi fonksiyonu olarak, alım satım stratejisi öğelerinin tamamen farklı bir kategorisi olarak sınıflandırılabilir. Bu nedenle, bir alım satım stratejisi üç öğe kategorisinden oluşabilir:

  1. Piyasa analizi ve buna dayalı eylemler.

  2. Alım satım durumunun ve buna dayalı eylemlerin analizi.

  3. Pozisyon yönetimi.

Bu makale, bekleyen emirleri aktif olarak kullanan stratejileri (kısaca emir stratejileri olarak adlandıracağız), bu tür stratejileri açıklamak için oluşturulabilecek bir üstdili ve bu açıklamalara dayanan çok amaçlı bir aracın (Uzman Danışman (EA)) geliştirilmesini ve kullanılmasını merkeze almaktadır.

 

Emir Stratejileri Örnekleri

Alım satım normalde ilk pozisyonu açmakla başlar. Bu birkaç şekilde yapılabilir:

  1. Bir piyasa pozisyonu açmak:

    • Göstergeler tarafından önerilen yönde.

    • Uzman Danışman (EA) özellikleri penceresinde kullanıcı tarafından seçilen yönde.

    • Son pozisyonu kapatmanın sonuçlarına göre. İlk pozisyon olmak yerine, bu tür bir pozisyon bir ara işlem aşaması olabilir.

  2. İki karşıt Durdur emri. Emirlerden biri tetiklendiğinde, ikinci emir silinir.

  3. İki karşıt Limit emri. Emirlerden biri tetiklendiğinde, ikinci emir silinir.

  4. Aynı yönde verilen Limit emri ve Durdur emri. Bu durumda, 1'de olduğu gibi emirlerin yönüne karar vermek gerekir.

İlk pozisyon açıldıktan sonra farklı emir stratejileri kullanabilirsiniz.

Limit Emirlerini Kullanırken Ölçeklendirme (Şekil 1.)

Bir başlangıç pozisyonu açarsınız ve artan lot boyutuyla aynı yönde bir veya daha fazla Limit emri ayarlarsınız. Limit emirleri tetiklendiğinde pozisyon Kar Al'da kapatılana kadar yeni Limit emirleri ayarlanır. Pozisyon Kar Al'da kapatıldığında, kalan bekleyen emirler silinir.

Şekil 1. Limit Emirlerini Kullanırken Ölçeklendirme
Şekil 1. Limit Emirlerini Kullanırken Ölçeklendirme

Durdur ve Ters Çevir (Şekil 2.)

Bir başlangıç pozisyonu açarsınız ve ilk pozisyonun Zararı Durdur seviyesinde artan lot boyutuyla karşıt Durdur emrini ayarlarsınız. Pozisyon Zararı Durdur’da kapatıldığında, bekleyen emir etki etmeye başlar, yeni bir karşıt Durdur emri yeniden Stop Loss seviyesinde ayarlanır ve pozisyon Kar Al'da kapatılana kadar devam eder. Pozisyon Kar Al'da kapatıldığında, kalan bekleyen emir silinir.

Şekil 2. Durdur ve Ters Çevir
Şekil 2. Durdur ve Ters Çevir

Piramitleme (Şekil 3.)

İlk pozisyonu açarsınız ve kazanıyor gibi görünürse, hacmini artırırsınız (ölçeklersiniz) ve Zararı Durdur'u Kırılmaya taşırsınız. Pozisyon Kar Al’da kapatılırsa, o zamana kadar oldukça büyük bir hacme ulaşması ve dolayısıyla kar etmesi beklenir. Ancak, Zararı Durdur aracı aşamasında tetiklenirse, kar olmayacaktır.

Şekil 3. Piramitleme
Şekil 3. Piramitleme

Yeniden Açma (Şekil 4.)

Bir piyasa pozisyonu açarsınız. Zararı Durdur'da kapanışı, lot boyutu artan yeni bir açılış takip eder ve pozisyon Kar Al’da kapatılana kadar devam eder. Bu strateji, Limit emirlerini kullanarak ölçeklendirmeye benzer.

Şekil 4. Yeniden Açma
Şekil 4. Yeniden Açma

Yukarıdaki stratejilerin tümünü birleştirmek oldukça mümkündür. Bir pozisyon kazanıyor gibi görünüyorsa, piramitleme kullanışlı olur; aksi takdirde, zararlar devam ediyorsa, Limit emirlerini kullanarak ölçeklendirmek uygun olabilir. Bununla birlikte, Limit emirlerini kullanarak ölçeklendirmenin sürekli olması gerekmez. Örneğin, önce üç kez ölçeklendirebilir, sonra birkaç Durdur ve Ters Çevir yapabilir ve yeniden Limit emirlerini kullanarak ölçeklendirmeye geçebilirsiniz vb.

Pratikte, emir stratejilerinin geliştirilmesi sadece gerekli kodlamanın kapsamı nedeniyle değil, aynı zamanda her durumda yaratıcı düşünceyi kullanma ihtiyacı nedeniyle oldukça zaman alabilir. Herhangi bir emir stratejisini uygulamamızı sağlayacak çok amaçlı bir Uzman Danışman (EA) oluşturarak bu tür stratejilerin programlanmasını kolaylaştırmaya çalışalım.

 

Temel İlke

Emir stratejisi geliştirmenin temel ilkesi, mevcut strateji çalışma aşamasının tanımlanması ve bu aşamaya göre eylemlerin yürütülmesidir.

Aşağıdaki örneğe bir göz atalım: Bir piyasa pozisyonu açmamız gerekiyor, diyelim ki bu bir alış pozisyonu olacak. Pozisyon açıldıktan sonra, bekleyen iki emrin ayarlanması gerekir: yukarıda bir Durdur emri ve aşağıda bir Limit emri. Başladığımızda, piyasada bir pozisyon veya emir yoktur, bu nedenle aşamayı bir pozisyon açmamız gereken ilk işlem aşaması olarak belirleriz. Bir piyasa pozisyonunun varlığı, bunun bir sonraki işlem aşaması olduğunu düşündürecektir. Bu nedenle tanımlanabilecek aşamalar aşağıdaki gibidir:

  1. Pozisyon veya emir yok. Bir pozisyonun açılması gerekiyor.

  2. Bir pozisyon var, ancak emir ayarlanmadı. Bir Durdur emri gerekiyor.

  3. Bir pozisyon ve Durdur emri var. Bir Limit emri gerekiyor.

Bu kurallar doğrultusunda çalışma güvenilir bir şekilde uygulanacaktır, ancak üç onay işareti gerektirecektir: pozisyonun eksikliğini ve açılmasını tanımlamak için ilk onay işareti, pozisyonu ve emir eksikliğini tanımlamak için bir sonraki onay işareti ve pozisyonu ve bir emri tanımlamak için üçüncü onay işareti. Strateji, üç eylemin de tek bir harekette gerçekleştirilmesini gerektirir.

Bu nedenle tüm eylemleri aynı anda gerçekleştirmeye çalışmalıyız: bir pozisyon veya emir yoksa, bir pozisyon açmalıyız. Pozisyon başarıyla açıldıysa, bir Durdur emri ayarlamak için bir istek ve bir Limit emri ayarlamak için başka bir istek göndermeliyiz. Bekleyen bir emir ayarlamak için gönderilen isteklerin hiçbiri kabul edilmeyebilir (bağlantı sorunları, fiyat bilgisi eksikliği vb. nedeniyle) ancak alım satım durumu açık bir pozisyona sahip olduğumuz başka bir aşamaya geçmiştir. Bu, olası tüm ara aşamaların kapsanması gerektiği anlamına gelir:

  1. Pozisyon yok. Bir pozisyonun açılması gerekiyor. Pozisyon başarıyla açıldıysa, Durdur emri ve Limit emri istekleri gönderilmelidir.

  2. Bir pozisyon var ama bekleyen bir emir yok. Durdur emri ve Limit emri istekleri gönderilmelidir.

  3. Bir pozisyon ve Durdur emri var, ancak Limit emri eksik. Bir Limit emri isteği gönderilmelidir.

  4. Bir pozisyon ve bir Limit emri var, ancak Durdur emri eksik. Bir Durdur emri isteği gönderilmelidir.

Verilen örnekteki aşamayı tanımlamak için, alım satım durumunun sağlanan tanımlama kurallarıyla tam olarak eşleşmesi gerektiğini lütfen unutmayın. Belirli emir setleri olmalıdır: sadece bir pozisyon var ve emir yok veya bir pozisyon ve iki emirden biri - başka bir yol olamaz. Bu ilkeyi takip eden strateji işlem aşamalarının açıklaması çok uzun olabilir ve sonuçta gerçekleştirilemeyen tüm olası seçenekleri hesaba katma ihtiyacı nedeniyle tüm işlem çok zaman alıcı hale getirebilir. Yukarıdaki örnek için işlem kuralları biraz farklı bir şekilde belirlenebilir:

  1. Pozisyon yok. Bir pozisyonun açılması gerekiyor. Pozisyon başarıyla açılırsa, bir Durdur emri ve Limit emri istekleri gönderilmelidir.

  2. Bir pozisyon var. Bu durumda, piyasada bekleyen iki emir olmalıdır. Piyasada bir Durdur emri olup olmadığını kontrol edin ve eksikse ayarlayın. Piyasada bir Limit emri olup olmadığını kontrol edin ve eksikse ayarlayın.

Bu durumda, işlem aşamasının tanımlanması için minimum bir kurallar setimiz ve bu aşamada olmamız gereken bir alım satım durumunun tam bir açıklaması vardır.

Bu ilkenin uygulanması, ilk pozisyon olup olmadığını veya belirli bir emrin zaten tetiklenip tetiklenmediğini ayırt etmek için pozisyonun kendisinin tanımlanmasını gerektirecektir. Bu koşullarda, sistem yeni işlem aşamasında olduğu için ikinci emri vermeye çalışmaya gerek kalmayacaktır. Emirlerin tanımlanması da gerekecektir, ancak pozisyon ve emir kimliğine biraz daha sonra göz atacağız. Şimdi emir stratejilerini daha net ve kompakt bir şekilde tanımlamaya yönelik temel ilkeyi belirleyelim:

  1. Mevcut işlem aşamasının mümkün olan en az miktarda bilgiyle tanımlanması için bir yönteme ihtiyacımız var.

  2. Her işlem aşaması, bu aşamaya karşılık gelen durumun tam bir açıklamasına sahip olmalıdır.

  3. Herhangi bir aşamada piyasa eylemleri (açılış, kapanış, içe ölçeklendirme, dışa ölçeklendirme vb.) veya bekleyen emirler gerekiyorsa, bu tür bir aşama iki alt aşamaya bölünmelidir: piyasa eylemi performansından önce ve sonra (tüm eylemleri tek bir denemede gerçekleştirmemizi ve başarısız bekleyen emir girişimlerini tekrarlamamızı sağlamak için).

  4. Herhangi bir aşamada piyasa eylemleri (açılış, kapanış, içe ölçeklendirme, dışa ölçeklendirme vb.) veya bekleyen emirler gerekiyorsa, bekleyen emirler piyasa eyleminin başarıyla tamamlanmasından sonra ele alınacaktır.

  5. Bir aşama yalnızca bir piyasa eylemine ve bekleyen emire sahip herhangi bir sayıda eyleme karşılık gelebilir.

 

Emir ve Pozisyon Tanımlama

Pozisyonlar ve emirler çeşitli şekillerde tanımlanabilir: emir yorumunu, sihirli sayıyı veya global değişkenleri kullanarak. Yorumları kullanalım. Yorumların kullanımından kaynaklanan temel sorunlar sınırlı yorum boyutu ve aracının kendisinin yoruma bir şey ekleyebilmesidir. Aracının girişi için yeterli alan yoksa, yorumun bir kısmı kesilecektir.

Bu nedenle, yorumda mümkün olan en az alanı kullanmalı ve bunu olası aracı girişlerinden ayırmanın bir yolunu bulmaya çalışmalısınız. Her emir yalnızca bir tanımlayıcı gerektirir. Pratikte, 1 veya 2 rakam veya bir harf ve bir veya iki rakamın bir kombinasyonu olabilir. Tanımlayıcının sonuna bir işaret, örneğin, "=" koyacağız (aracılar tarafından girişlerde kullanıldığı asla fark edilmemiştir). Yani en fazla 4 karakterimiz vardır. Tanımlayıcıyı bir yorumdan elde etmek için aşağıdaki fonksiyonu kullanabiliriz:

//+------------------------------------------------------------------+
//|   Function for obtaining the identifier from the aComment string |
//+------------------------------------------------------------------+
string GetID(string aComment)
  {
   int    p =StringFind(aComment,"=",0); // Determine the position of the separator
   string id=StringSubstr(aComment,0,p); // Get the substring located before the separator
   return(id);
  }
//+------------------------------------------------------------------+

Pozisyonun veya emrin bilinen herhangi bir tanımlayıcıyla karşılaştırılması gerekiyorsa, bu aşağıdaki gibi yapılabilir:

//+------------------------------------------------------------------+
//|   Checking the comment against the set identifier                |
//+------------------------------------------------------------------+
bool FitsID(string aID,string aComment)
  {
   return(StringFind(aComment,aID+"=",0)==0);
  }
//+------------------------------------------------------------------+

 

Emir Stratejilerinin Açıklaması için Üstdil

Şimdi emir stratejilerini yerleştirmek için kullanılacak dili tanımlayalım. Komutlarının gereksiz hesaplamalar yapılmadan hızlı bir şekilde yürütülmesini sağlamak için belgelere uygunken kısa, net ve sezgisel olmalıdır. Sonucun başarılı olup olmadığına dair kararı okuyuculara bırakacağım.

Stratejinin açıklaması, daha sonra Uzman Danışman (EA) özellikleri penceresinde adı belirtilerek Uzman Danışmana (EA) bağlanan bir metin dosyasında yapılır.

Dosyanın bir satırı sistemin bir işlem aşamasına karşılık gelir. Satır iki alana ayrılmıştır. Birinci alan aşama tanımlama kurallarını içerir. İkincisi eylemlerin listesini kapsar. Alanlar dikey çizgi "|" ile ayrılır. Tanımlama kuralları ve eylem listesi öğeleri noktalı virgülle ";" ayrılır.

Komutlara ek olarak, her satırın sağ tarafı metnin geri kalanından "#" ile ayrılmış bir yorum içerebilir, örneğin:

Nothing | Buy(M1,1,0,0) #If there is no position or order in the market, open a Buy position, mark it with "М1", lot 1, no Stop Loss, no Take Profit.

 

Aşama Tanımlama

Aşama Tanımlama, mevcut piyasa pozisyonu, bekleyen emirler veya son alım satım hakkında bilgi gerektirebilir. Pozisyon durumuna ek olarak, ayarlanmışsa fiyat, kar, Zararı Durdur değeri vb. gibi bazı pozisyon ayrıntıları gerekebilir. Son alım satımla ilgili gerekli bilgiler alım satım sonuçlarını içerebilir. Bekleyen emirler için açılış fiyatını, Zararı Durdur, Kar Al (büyük olasılıkla yürütme aşamasında gerekecektir) değerlerini belirtmek gerekebilir.

Bu bilgiler, alım satım verilerine erişim komutları kullanılarak elde edilebilir. Bu komutların çoğunun iki parametresi olacaktır: pozisyon ve emir tanımlayıcısı ve parametre tanımlayıcısı. Parametre tanımlayıcısı belirtilmezse, yalnızca komut ve tanımlayıcı tarafından belirtilen alım satım nesnesinin varlığı denetlenecektir.

Örneğin, Buy(M1) komutu "M1" tanımlayıcısına sahip bir piyasa pozisyonu olması gerektiğini önerir. Tek başına Buy() komutu (veya parantez olmadan Buy), herhangi bir tanımlayıcıya sahip bir Alış pozisyonu olması gerektiği anlamına gelir. Parametre tanımlayıcısını belirtirseniz, bu, parametre değerini gösterir, örneğin Buy(M1,StopLossInPoints) - "M1" tanımlayıcısına sahip bir Alış pozisyonu için ayarlanan noktalarda Zararı Durdur değeri. Tanımlayıcı belirtilmezse - Buy(,StopLossInPoints), bunu, herhangi bir tanımlayıcıya sahip bir Alış pozisyonunun Zararı Durdur olarak alırız (bir Alış pozisyonu olduğu sürece).

Elde edilen değer, koşulları denetlemek için ifadede kullanılabilir, örneğin Buy(M1,StopLossInPoints)>=0 - pozisyon kırılmadadır. Pozisyon yoksa veya farklı bir tanımlayıcıya sahip bir pozisyon varsa, tanımlama kurallarında bu şekilde ifade edilen aşama tanımlanmayacaktır, yani pozisyon durumunu ve Zararı Durdur değerini kontrol etmek için iki koşulu hesaba katmaya gerek yoktur. Ancak, bu durumda Zararı Durdur varlığının önceden kontrol edilmesi gerekecektir - Buy(M1,StopLossExists); Buy(M1,StopLossInPoints)>=0.

Değerleri denetlerken, herhangi bir karşılaştırma ifadesi kullanılabilir: ">=", "<=", "==", "!=", ">", "<". Karşılaştırmanın sağ tarafındaki değer bir sayı olarak ifade edilebilir veya özel değişkenlerle temsil edilebilir: Var1, Var2 ... Var20. Bir sayıya veya değişkene eklenen "p", değerin ayrıca nokta değeriyle e (_Point değişkeni) çarpılacağını önerir.

Alternatif olarak, karşılaştırma ifadesinin sağ tarafında daha karmaşık bir aritmetik ifade olabilir. Bu, aşağıdaki gibi olabilir: X1*X2+X3*X4 ("+" kesinlikle "-" ile değiştirilebilir), burada X1, X2, X3 ve X4 sayılar, değişkenler veya veri erişim komutları olabilir. Aşağıdaki örnek teorik olarak doğru olarak kabul edilebilir (pratik değerini göz ardı edersek):

-BuyStop(BS1,StopLossInPoints)*-SellLimit(SL1,StopLossInPoints)+-SellStop(SS1,StopLossInPoints)*-BuyLimit(SL1,StopLossInPoints)

Tablo 1, tüm erişim komutlarının listesini gösterir.

Tablo 1. Veri erişim komutları

Dizin Komut Olası parametreler Amacı
0 Hiç Parametre yok Piyasada herhangi bir pozisyon veya bekleyen emir yoktur
1 NoPos Parametre yok Piyasada bir pozisyon yoktur
2 Bekleyen Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Nesne tanımlayıcısı belirtilen herhangi bir bekleyen emir. Nesne tanımlayıcısı belirtilmezse, nesne tanımlayıcısının değerine bakılmaksızın herhangi bir bekleyen emir
3 Alış Nesne tanımlayıcısı, pozisyon parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısını sahip bir Alış pozisyonu. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir Alış pozisyonu
4 Satış Nesne tanımlayıcısı, pozisyon parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir Satış pozisyonu. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir Satış pozisyonu
5 BuyStop Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir BuyStop emri. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir BuyStop emri
6 SellStop Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir SellStop emri. Tanımlanan nesne belirtilmezse, yalnızca bir SellStop emri
7 BuyLimit Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir BuyLimit emri. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir BuyLimit emri
8 SelLimit Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir SellLimit emri. Nesne tanımlayıcısı belirtilmezse, yalnızca bir SellLimit emri
9 BuyStopLimit Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir BuyStopLimit emri. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir BuyStopLimit emri
10 SellStopLimit Nesne tanımlayıcısı, emir parametresi tanımlayıcısı Belirtilen nesne tanımlayıcısına sahip bir SellStopLimit emri. Nesne tanımlayıcısı belirtilmemişse, yalnızca bir SellStopLimit emri
11 LastDeal Boş, alım satım parametresi tanımlayıcısı Son alım satım
12 LastDealBuy Boş, alım satım parametresi tanımlayıcısı Son işlem, Alış işlemidir
13 LastDealSell Boş, alım satım parametresi tanımlayıcısı Son işlem Satış işlemidir
14 NoLastDeal Parametre yok Geçmişte alım satımla ilgili herhangi bir veri yoktur; bu, Uzman Danışmanın hesapta çalışmaya yeni başlaması durumunda gereklidir
15 SignalOpenBuy Parametre yok Bir Alış pozisyonunu açmak için gösterge sinyali
16 SignalOpenSell Parametre yok Bir Satış pozisyonunu açmak için gösterge sinyali
17 SignalCloseBuy Parametre yok Bir Alış pozisyonunu kapatmak için gösterge sinyali
18 SignalCloseSell Parametre yok Bir Satış pozisyonunu kapatmak için gösterge sinyali
19 UserBuy Parametre yok Satın almak için kullanıcı komutu
20 UserSell Parametre yok Satmak için kullanıcı komutu
21 Teklif Parametre yok Teklif fiyatı
22 Satış Parametre yok Satış fiyatı
23 ThisOpenPrice Parametre yok Parametresi hesaplanan emrin açılış fiyatı. StopLimit türündeki emirler dışında bekleyen emirler için eylem komutlarında kullanılır
24 ThisOpenPrice1 Parametre yok Parametresi hesaplanan emrin açılış fiyatı-1. StopLimit türünde bekleyen emirler için eylem komutlarında kullanılır
25 ThisOpenPrice2 Parametre yok Parametresi hesaplanan emrin açılış fiyatı-2. StopLimit türünde bekleyen emirler için eylem komutlarında kullanılır
26 LastEADeal Nesne tanımlayıcısı, alım satım parametresi tanımlayıcısı Uzman Danışman (EA) tarafından gerçekleştirilen son alım satım. Yorumunda "=" olan son alım satım geçmişte aranır ve sonra nesne tanımlayıcısıyla karşılaştırılır
27 LastEADealBuy Nesne tanımlayıcısı, alım satım parametresi tanımlayıcısı Uzman Danışman (EA) tarafından gerçekleştirilen son işlem Alış işlemidir. Yorumunda "=" olan son alım satım geçmişte aranır ve sonra alım satımın nesne tanımlayıcısı ve yönü ile karşılaştırılır
28 LastEADealSell Nesne tanımlayıcısı, alım satım parametresi tanımlayıcısı Uzman Danışman (EA) tarafından gerçekleştirilen son işlem Satış işlemidir. Yorumunda "=" olan son alım satım geçmişte aranır ve sonra alım satımın nesne tanımlayıcısı ve yönü ile karşılaştırılır
29 NoTradeOnBar Parametre yok Son çubukta alım satım yok.

 

Tablo 1'de belirtilen komutlar aşağıdaki alım satım nesnesi türlerine erişmenizi sağlar: pozisyonlar, emirler, alım satımlar ve ayarlanacak emirler. Farklı nesnelerin farklı parametre setleri vardır.

Tablo 2, uygulanabilecekleri nesne türleriyle birlikte tüm parametre tanımlayıcılarını da içermektedir.

Tablo 2. Veri erişim tanımlayıcıları.

Dizin Tanımlayıcı Amacı Alım satım nesnesi türü
0 ProfitInPoints Puan cinsinde kar Pozisyon
1 ProfitInValute Mevduat para birimi cinsinde kar Pozisyonlar, alım satımlar
2 OpenPrice Açılış fiyatı Pozisyonlar, bekleyen emirler (StopLimit emirleri hariç)
3 LastPrice Fiyat Alım satımlar
4 OpenPrice1 StopLimit-to-Limit geçiş fiyatı StopLimit türünde bekleyen emirler. Emir Limit’e geçtiğinde OpenPrice tanımlayıcısı uygulanır
5 OpenPrice2 StopLimit-to-position geçiş fiyatı StopLimit türünde bekleyen emirler. Emir Limit’e geçtiğinde OpenPrice tanımlayıcısı uygulanır
6 StopLossValue StopLoss değeri Pozisyonlar, bekleyen emirler
7 TakeProfitValue Kar Al değeri Pozisyonlar, bekleyen emirler
8 StopLossInPoints Puan cinsinde Zararı Durdur Pozisyonlar, bekleyen emirler
9 TakeProfitInPoints Puan cinsinde Kar Al Pozisyonlar, bekleyen emirler
10 StopLossExists Zararı Durdur varlığı Pozisyonlar, bekleyen emirler
11 TakeProfitExists Kar Al Varlığı Pozisyonlar, bekleyen emirler
12 Yön Yön 1 - Alış, -1 - Satış Pozisyonlar, bekleyen emirler, alım satımlar

 

Eylemlerin Açıklaması

Eylemler arasında piyasa pozisyonlarının açılması ve kapatılması, bekleyen emirlerin ayarlanması, değiştirilmesi ve silinmesi, yönetim fonksiyonlarının yürütülmesi yer almaktadır: Takip Eden Durdurma, Kırılma, bekleyen bir emir için Takip Eden Durdurma (diğer pozisyon yönetimi fonksiyonları).

Bir pozisyon açma ve bir emir ayarlama eylemleri, bu eylemleri yürütmek için gereken parametrelerin kullanıldığını ima eder. Bu parametreler, fonksiyonların genellikle çağrıldığı şekilde parantez içinde komuttan sonra belirtilir. Tanımlayıcı, tüm komutlar için birinci parametredir. Parametreleri belirtirken, nümerik değerleri, değişkenleri ve mevcut pozisyonun veya emrin parametrelerini kullanabilirsiniz. Eylem komutlarının tüm parametreleri için Aşama Tanımlama bölümünde değinilen X1 *X2+X3*X4 gibi aritmetik ifadeleri de kullanabilirsiniz.

Tablo 3 tüm eylem komutlarını gösterir.

Tablo 3. Eylem komutları

Dizin Komut Amacı
0 Buy(ID,Lot,StopLoss,TakeProfit) Bir Alış pozisyonu açma
1 Sell(ID,Lot,StopLoss,TakeProfit) Bir Satış pozisyonu açma
2 Close(ID) Bir piyasa pozisyonunu kapatma
3 BuyStop(ID,Lot,Price,StopLoss,TakeProfit) Bir BuyStop emri ayarlama
4 SellStop(ID,Lot,Fiyat,StopLoss,TakeProfit) Bir SellStop emri ayarlama
5 BuyLimit(ID,Lot,Price,StopLoss,TakeProfit) Bir BuyLimit emri ayarlama
6 SellLimit(ID,Lot,Price,StopLoss,TakeProfit) Bir SellLimit emri ayarlama
7 BuyStopLimit(ID,Lot,Price1,Price2,StopLoss,TakeProfit) Bir BuyStopLimit emri ayarlama
8 SellStopLimit(ID,Lot,Price1,Price2,StopLoss,TakeProfit) Bir SellStopLimit emri ayarlama
9 Delete(ID) Bir bekleyen emri silme
10 DeleteAll(ID,BuyStop,SellStop,BuyLimit,SellLimit,BuyStopLimit,SellStopLimit) Belirtilen bekleyen emir türlerini silme
11 Modify(ID,Price1,Price2,StopLoss,TakeProfit) Pozisyon veya emir değiştirme
12 TrailingStop Takip Eden Durdurma fonksiyonu işlemi. Fonksiyon parametreleri Uzman Danışman (EA) özellikleri penceresinde tanımlanır
13 BreakEven Kırılma fonksiyonu işlemi. Fonksiyon parametreleri Uzman Danışman (EA) özellikleri penceresinde tanımlanır

 

Eylem komutu parametre açıklamaları Tablo 4'te verilmiştir.

Tablo 4. Eylem komutu parametreleri

Parametre Amacı
ID Alım satım nesnesi (pozisyon, emir) tanımlayıcısı
Lot Birim cinsinde lot boyutu. Birim değerini tanımlayan Lots değişkeni Uzman Danışman (EA) özellikleri penceresinde bulunabilir
StopLoss Zararı Durdur değeri
TakeProfit Kar Al değeri
Price Bekleyen emir değeri (StopLimit türündeki emirler hariç)
Price1 StopLimit-to-Limit geçiş fiyatı
Price2 StopLimit-to-position geçiş fiyatı

 

Şimdi yeni üstdilimizde daha önce gözden geçirilmiş emir stratejilerini bakalım.

 

Üstdilde Emir Stratejileri Örnekleri

Programlar, tüm aşama tanımlama ve eylem komutlarının daha iyi anlaşılması için sütunlar halinde düzenlendiği ve yorumlarla açıklama eklendiği tablolarda görüntülenir. Metin dosyalarındaki tüm programlar Uzman Danışmanda kullanılması gereken biçimde makaleye eklenmiştir.

Önemli not: Tanımlayıcılarda "+", "-" ve "*" işaretlerine izin verilmez. Sadece sayıları kullanmak daha iyidir.

 

Limit Emirlerini Kullanırken Ölçeklendirme

İlk pozisyon, kullanıcının özellikler penceresinde belirttiği yöne göre açılır. Ölçeklendirmeye en fazla 5 kez izin verilir (Limit emirleri). Piyasada aynı anda sadece üç emir olabilir.

Tablo 5. Üstprogramda Limit Emirlerini Kullanırken Ölçeklendirme

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
UserBuy
Buy(1,1,0,Ask+Var1p);
BuyLimit(2,2,Buy(1,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(3,4,BuyLimit(2,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(4,8,BuyLimit(3,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p)
Piyasada herhangi bir pozisyon veya emir yoksa, Uzman Danışman (EA) özelliklerinde Alış yönü belirlenmişse, ilk lot ile bir pozisyon açarız. Pozisyon başarıyla açıldıysa, üç Limit emri belirlemeye çalışacağız. Bununla birlikte, emir fiyatı önceki emir fiyatına göre hesaplandığı için sonraki her emir yalnızca önceki emir ayarlanmışsa başarıyla ayarlanır.
2 Buy(1) BuyLimit(2,2,Buy(1,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(3,4,BuyLimit(2,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(4,8,BuyLimit(3,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p)
Pozisyon 1. aşamada başarıyla açıldıysa, ancak tüm bekleyen emirler ayarlanmadıysa, tüm bekleyen emirleri ayarlama girişimleri devam eder.
3 Buy(2) BuyLimit(3,4,Buy(2,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(4,8,BuyLimit(3,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(5,16,BuyLimit(4,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p)
Birinci Limit emri (tanımlayıcı 2 ile) devreye girdiyse, önceki aşamalarda ayarlanmış olması gereken (ancak ayarlanamayan) diğer iki emri ayarlama girişimleri devam eder ve yeni bir emir, piyasada her zaman toplam üç Limit emri olacak şekilde ayarlanır.
4 Buy(3) BuyLimit(4,8,Buy(3,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(5,16,BuyLimit(4,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(6,32,BuyLimit(4,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p)
Başka bir limit emri tetiklendi ve önceki aşamada olduğu gibi piyasada üç Limit emrinin bulunmasını sağlamamız gerekiyor.
5 Buy(4) BuyLimit(5,16,Buy(4,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p);
BuyLimit(6,32,BuyLimit(5,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p)
Bu aşama, yalnızca toplam emirler maksimum emir sayısına yakın olduğunda bekleyen iki emrin bulunmasını sağlar.
6 Buy(5) BuyLimit(6,32,Buy(5,OpenPrice)-Var2p,0,ThisOpenPrice+Var3p) Bu aşamanın bir son emri vardır.
7 Buy(6) Modify(6,,,Buy(6,OpenPrice)-Var4p,) Son emir devreye geldiyse, bunun için bir Zararı Durdur ayarlanır.
8 Hiç;
UserSell
Sell(1,1,0,Var1p); SellLimit(2,2,Sell(1,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(3,4,SellLimit(2,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(4,8,SellLimit(3,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p)
1. aşamaya benzer, ancak Satış yönü içindir.
9 Sell(1) SellLimit(2,2,Sell(1,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(3,4,SellLimit(2,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(4,8,SellLimit(3,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p)
2. aşamaya benzer, ancak Satış yönü içindir.
10 Sell(2) SellLimit(3,4,Sell(2,OpenPrice)+Var2p,0,Var3);
SellLimit(4,8,SellLimit(3,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(5,16,SellLimit(4,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p)
3. aşamaya benzer, ancak Satış yönü içindir.
11 Sell(3) SellLimit(4,8,Sell(3,OpenPrice)+Var2p,0,Var3);
SellLimit(5,16,SellLimit(4,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p);
SellLimit(6,32,SellLimit(4,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p)
4. aşamaya benzer, ancak Satış yönü içindir.
12 Sell(4) SellLimit(5,16,Sell(4,OpenPrice)+Var2p,0,Var3);
SellLimit(6,32,SellLimit(5,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p)
5. aşamaya benzer, ancak Satış yönü içindir.
13 Sell(5) SellLimit(6,32,Sell(5,OpenPrice)+Var2p,0,ThisOpenPrice-Var3p) 6. aşamaya benzer, ancak Satış yönü içindir.
14 Sell(6) Modify(6,,,Sell(6,OpenPrice)+Var4p,) 7. aşamaya benzer, ancak Satış yönü içindir.
15 NoPos;
Bekleyen
DeleteAll(,0,0,1,1,0,0) Bekleyen emirler var fakat pozisyon yok. Bu, pozisyonun Kar Al değeri tetiklendiğinde gerçekleşir. Bu durumda emirler silinmelidir. Emirlerin silinmesinden sonra sistem 1. ila 9. aşama arasında geçiş yapar. Kullanıcı sistem işlemi sırasında başlangıç yönünü devre dışı bıraktıysa, hiçbir eylem olmaz.

 

Değişkenlerin kullanımı: Var1 - Birinci emrin Kar Al değeri, Var2 - Limit emrinin önceki emrin açılış fiyatına göre ayarlandığı seviye, Var3 - Son emrin Zararı Durdur değeri.

Şekil 5, bu üstprogramın performansını gösteren grafiktir.

Şekil 5. Limit Emirlerini Kullanırken Ölçeklendirme için üstprogramın performansı
Şekil 5. Limit Emirlerini Kullanırken Ölçeklendirme için üstprogramın performansı

Lütfen dikkat: Satış ve Alış yönleri için kurallar ayrıca özetlenmiştir. Sonraki her bekleyen emir seviyesi önceki emir seviyesine göre hesaplanır. Herhangi bir emir ayarlama girişimi başarısız olursa, gerekli parametrenin olmaması nedeniyle bir sonraki emir ayarlanmayacaktır. Piyasa pozisyonu fiyatına göre seviyeyi hesaplamak yanlış olur. Bu tür bir durumda bazı emirler eksik olabilir.

 

Durdur ve Ters Çevir

Çalışma, bekleyen iki Durdur emriyle başlar. En fazla beş ters çevrilmeye izin verilir.

Tablo 6. Durdur ve Ters Çevir için Üstprogram

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç BuyStop(1,1,Ask+Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p);
SellStop(1,1,Bid-Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p)
Piyasada herhangi bir pozisyon veya emir yoktur; 1. tanımlayıcı ile iki Durdur emri ayarlamaya çalışıyoruz.
2 NoPos;
BuyStop(1)
SellStop(1,1,Bid-Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) Pozisyon yoktur, ancak 1. tanımlayıcı ile bir BuyStop vardır, bu da 1. tanımlayıcı ile bir SellStop olması gerektiği anlamına gelir.
3 NoPos;
SellStop(1)
BuyStop(1,1,Ask+Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) Pozisyon yoktur, ancak 1. tanımlayıcı ile bir SellStop vardır, bu da 1. tanımlayıcı ile bir BuyStop olması gerektiği anlamına gelir.
4 Buy(1) Delete(1);
SellStop(2,2,Buy(1,StopLossValue),ThisOpenPrice+Var2p,ThisOpenPrice-Var3p)
Piyasada 1. tanımlayıcıya sahip bir Alış pozisyonu vardır; bu durumda, 1. tanımlayıcıya sahip başka bir emir olmamalıdır, ancak 2. tanımlayıcıya sahip bir SellStop olmalıdır.
5 Sell(1) Delete(1);
BuyStop(2,2,Sell(1,StopLossValue),ThisOpenPrice-Var2p,ThisOpenPrice+Var3p)
4. aşamaya benzer, ancak birinci SellStop tetiklenmiştir.
6 Buy(2) SellStop(3,4,Buy(2,StopLossValue),ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) İkinci BuyStop devreye girmiş, bu yüzden üçüncü SellStop ayarlanmalıdır.
7 Sell(2) BuyStop(3,4,Sell(2,StopLossValue),ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) İkinci SellStop devreye girmiş, bu yüzden üçüncü BuyStop ayarlanmalıdır.
8 Buy(3) SellStop(4,8,Buy(3,StopLossValue),ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) Üçüncü BuyStop devreye girmiş, bu yüzden dördüncü SellStop ayarlanmalıdır.
9 Sell(3) BuyStop(4,8,Sell(3,StopLossValue),ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) Üçüncü SellStop devreye girmiş, bu yüzden dördüncü BuyStop ayarlanmalıdır.
10 Buy(4) SellStop(5,16,Buy(4,StopLossValue),ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) Dördüncü BuyStop devreye girmiş, bu yüzden beşinci SellStop ayarlanmalıdır.
11 Sell(4) BuyStop(5,16,Sell(4,StopLossValue),ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) Dördüncü SellStop devreye girmiş, bu yüzden beşinci BuyStop ayarlanmalıdır.
12 Buy(5) SellStop(6,32,Buy(5,StopLossValue),ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) Beşinci BuyStop devreye girmiş, bu yüzden altıncı SellStop ayarlanmalıdır.
13 Sell(5) BuyStop(6,32,Sell(5,StopLossValue),ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) Beşinci SellStop devreye girmiş, bu yüzden altıncı BuyStop ayarlanmalıdır.
14 NoPos;
BuyStop(2)
Delete(2) Pozisyon yok ama hala BuyStop değerine sahibiz; bu, pozisyon Kar Al'da kapandığında gerçekleşebilir. Bu durumda kalan sipariş silinir ve sistem 1. aşamaya geçer.
15 NoPos;
SellStop(2)
Delete(2) 14. aşamaya benzer.
16 NoPos;
BuyStop(3)
Delete(3) 14. aşamaya benzer.
17 NoPos;
SellStop(3)
Delete(3) 14. aşamaya benzer.
18 NoPos;
BuyStop(4)
Delete(4) 14. aşamaya benzer.
19 NoPos;
SellStop(4)
Delete(4) 14. aşamaya benzer.
20 NoPos;
BuyStop(5)
Delete(5) 14. aşamaya benzer.
21 NoPos;
SellStop(5)
Delete(5) 14. aşamaya benzer.
22 NoPos;
BuyStop(6)
Delete(6) 14. aşamaya benzer.
23 NoPos;
SellStop(6) |
Delete(6) 14. aşamaya benzer.

 

Değişkenlerin kullanımı: Var1 - ilk emirlerin geçerli piyasa fiyatından belirlendiği seviye, Var2 - Zararı Durdur, Var3 - Kar Al.

Şekil 6, bu üstprogramın performansını gösteren grafiktir.

Şekil 6. Durdur ve Ters Çevir için üstprogramın performansı
Şekil 6. Durdur ve Ters Çevir için üstprogramın performansı

 

Piramitleme

Gösterge sinyaline göre bir başlangıç pozisyonu açılır. Beş kata kadar içe ölçeklemesine izin verilir.

Tablo 7. Piramitleme için Üstprogram"

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
SignalOpenBuy
Buy(1,1,Ask-Var1p,Ask+Var2p*6) Piyasada herhangi bir pozisyon veya emir yoktur; göstergelerden, pozisyonun açılmasını takiben bir Alış pozisyonu açmak için bir sinyal alıyoruz. Kar Al ilk olarak Var2p*6 ile eşit mesafede ayarlanır, bir sonraki adımda Kar Al'ın yaklaşık aynı fiyat seviyesinde olduğundan emin olmak için Var2p*5 vb.’de ayarlanacaktır.
2 Buy(1);
Buy(1,ProfitInPoints)>=Var3
Buy(2,1,Ask-Var1p,Ask+Var2p*5) Oldukça iyi bir kar gösteren bir satın alma pozisyonu var, bu yüzden içe ölçeklendiriyoruz.
3 Buy(2) Modify(2,,,Buy(2,OpenPrice),) Piyasadaki pozisyon, bu pozisyonun başlangıç olmadığını ve içe ölçeklendirilmiş olması gerektiğini düşündüren 2. dizine sahiptir; Zararı Durdur, Kırılmada olmalıdır.
4 Buy(2);
Buy(2,ProfitInPoints)>=Var3
Buy(3,1,Ask-Var1p,Ask+Var2p*4) Pozisyon yine kazanıyor, bu yüzden içe ölçeklendiriyoruz.
5 Buy(3) Modify(3,,,Buy(3,OpenPrice),) Zararı Durdur, her içe ölçeklendirdiğimizde Kırılmaya taşınır.
6 Buy(3);
Buy(3,ProfitInPoints)>=Var3
Buy(4,1,Ask-Var1p,Ask+Var2p*3) 4. aşamaya benzer.
7 Buy(4) Modify(4,,,Buy(4,OpenPrice),) 5. aşamaya benzer.
8 Buy(4);
Buy(4,ProfitInPoints)>=Var3
Buy(5,1,Ask-Var1p,Ask+Var2p*2) 4. aşamaya benzer.
9 Buy(5) Modify(5,,,Buy(5,OpenPrice),) 5. aşamaya benzer.
10 Buy(5);
Buy(5,ProfitInPoints)>=Var3
Buy(6,1,Ask-Var1p,Ask+Var2p) 4. aşamaya benzer.
11 Buy(6) Modify(6,,,Buy(6,OpenPrice),) 5. aşamaya benzer.
12 Hiç;
SignalOpenSell
Sell(1,1,Bid+Var1p,Bid-Var2p*6) 1. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
13 Sell(1);
Sell(1,ProfitInPoints)>=Var3
Sell(2,1,Bid+Var1p,Bid-Var2p*5) 2. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
14 Sell(2) Modify(2,,,Sell(2,OpenPrice),) 3. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
15 Sell(2);
Sell(2,ProfitInPoints)>=Var3
Sell(3,1,Bid+Var1p,Bid-Var2p*4) 4. aşamaya benzer, ancak bir Satış pozisyonuna göre.
16 Sell(3); Modify(3,,,Sell(3,OpenPrice),) 5. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
17 Sell(3);
Sell(3,ProfitInPoints)>=Var3
Sell(4,1,Bid+Var1p,Bid-Var2p*3) 6. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
18 Sell(4); Modify(4,,,Sell(4,OpenPrice),) 7. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
19 Sell(4);
Sell(4,ProfitInPoints)>=Var3
Sell(5,1,Bid+Var1p,Bid-Var2p*2) 8. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
20 Sell(5); Modify(5,,,Sell(5,OpenPrice),) 9. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
21 Sell(5);
Sell(5,ProfitInPoints)>=Var3
Sell(6,1,Bid+Var1p,Bid-Var2p) 10. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.
22 Sell(6); Modify(6,,,Sell(6,OpenPrice),) 11. aşamaya benzer, ancak bir Satış pozisyonu ile ilgili olarak.

 

Değişkenlerin kullanımı: VAR1 - ilk Zararı Durdur, Var2 - Son emrin Kar Al değeri, Var3 - içe ölçeklendirdiğimiz ve Zararı Durdur’u Kırılmaya taşıdığımız noktalarda kar.

Şekil 7, bu üstprogramın performansını gösteren grafiktir.

Şekil 7. Piramitleme için üstprogramın performansı
Şekil 7. Piramitleme için üstprogramın performansı

 

Yeniden açma

İlk başta, iki Limit emri belirledik. Biri tetiklenir tetiklenmez, diğeri silinir. Ardından, Zararı Durdur devreye girdiğinde, Kar Al'da kapanana veya maksimum pozisyon sayısı (5) kullanılana kadar yeni bir pozisyon açılır.

Tablo 8. Yeniden Açmak için MetaProgram

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
NoLastDeal
BuyLimit(1,1,Ask-Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p);
SellLimit(1,1,Bid+Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p)
Piyasada herhangi bir pozisyon veya emir yoktur ve hesap geçmişi sembol üzerinde hiçbir alım satım göstermiyor. Bu, sistemin çalışmasının en başında olduğu anlamına gelir. İki Limit emri ilk eylem olarak ayarlanır.
2 Hiç;
LastDeal(,ProfitInValute)>0
BuyLimit(1,1,Ask-Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p);
SellLimit(1,1,Bid+Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p)
Piyasada bir pozisyon veya emir yoktur, ancak geçmiş karla kapanan bir alım satımı göstermektedir. Önceki aşamanın tamamlandığını ve başlangıçtan başlayıp 1. aşamadaki gibi iki Limit emri belirlememiz gerektiğini gösteriyor.
3 Hiç;
LastEADeal(5)
BuyLimit(1,1,Ask-Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p);
SellLimit(1,1,Bid+Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p)
Piyasada bir pozisyon veya emir yoktur, ancak geçmiş son tanımlayıcıya sahip bir alım satım içerir. Bu durumda, aşamanın her halükarda tamamlanmış olduğu düşünüldüğünden, alım satımda kazanılan karın hiçbir önemi yoktur; en baştan başlarız ve 1. aşamadaki gibi iki Limit emri belirleriz.
4 NoPos;
BuyLimit(1)
SellLimit(1,1,Bid+Var1p,ThisOpenPrice-Var2p,ThisOpenPrice+Var3p) Piyasada bir pozisyon yoktur, ancak bir Limit emri olduğunu biliyoruz, bu da ikincisinin de olması gerektiği anlamına geliyor.
5 NoPos;
SellLimit(1)
BuyLimit(1,1,Ask-Var1p,ThisOpenPrice+Var2p,ThisOpenPrice-Var3p) 4. aşamaya benzer.
6 Buy(1);
SellLimit(1)
Delete(1) 1. tanımlayıcıya sahip bir pozisyon var. Bu, Limit emirlerinden birinin tetiklendiği ve ikinci emrin silinmesi gerektiği anlamına gelir.
7 Sell(1);
BuyLimit(1)
Delete(1) 6. aşamaya benzer.
8 Hiç;
LastDeal(1,ProfitInValute)<=0;
LastEADeal(1,Direction)==1
Buy(2,2,Ask-Var2p,Ask+Var3p) Pozisyon yok ve son alım satım karsızdı. Uzman Danışman (EA) tarafından gerçekleştirilen son alım satımın yönünü kontrol edin; bu bir Alış işlemiyse, açmanız gereken bir sonraki pozisyon bir Alış pozisyonudur.
9 Hiç;
LastDeal(1,ProfitInValute)<=0;
LastEADeal(1,Direction)==-1
Satış(2,2,Teklif+Var2p,Teklif-Var3p) Pozisyon yok ve son alım satım karsızdı. Uzman Danışman (EA) tarafından gerçekleştirilen son alım satımın yönünü kontrol edin; bu bir Satış işlemiyse, açmanız gereken bir sonraki pozisyon bir Satış pozisyonudur.
10 Hiç;
LastDeal(2,ProfitInValute)<=0;
LastEADeal(2,Direction)==1
Buy(3,4,Ask-Var2p,Ask+Var3p) 8. aşamaya benzer.
11 Hiç;
LastDeal(2,ProfitInValute)<=0;
LastEADeal(2,Direction)==-1
Sell(3,4,Bid+Var2p,Bid-Var3p) 9. aşamaya benzer.
12 Hiç;
LastDeal(3,ProfitInValute)<=0;
LastEADeal(3,Direction)==1
Buy(4,8,Ask-Var2p,Ask+Var3p) 8. aşamaya benzer.
13 Hiç;
LastDeal(3,ProfitInValute)<=0;
LastEADeal(3,Direction)==-1
Sell(4,8,Bid+Var2p,Bid-Var3p) 9. aşamaya benzer.
14 Hiç;
LastDeal(4,ProfitInValute)<=0;
LastEADeal(4,Direction)==1
Buy(5,16,Ask-Var2p,Ask+Var3p) 8. aşamaya benzer.
15 Hiç;
LastDeal(4,ProfitInValute)<=0;
LastEADeal(4,Direction)==-1
Sell(5,16,Bid+Var2p,Bid-Var3p) 9. aşamaya benzer.

 

Değişkenlerin kullanımı: Var1 - Limit emirlerinin ayarlandığı piyasa fiyatından seviye, Var2 - Zararı Durdur, Var3 - Kar Al.

Şekil 8, bu üstprogramın performansını gösteren grafiktir.

Şekil 8. Yeniden açma için üstprogramın performansı
Şekil 8. Yeniden Açma için üstprogramın performansı

Aşağıda Alım Satım Sinyalleri, Takip Eden Durdurma ve Kırılma gibi fonksiyonların çalışmasını görmek için birkaç basit program daha bulabilirsiniz.

 

Alım Satım Sinyalleri

Giriş ve çıkış alım satım sinyallerine bağlıdır.

Tablo 9. Alım Satım Sinyalleri için Üstprogram"

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
SignalOpenBuy;
NoTradeOnBar
Buy(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Alış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yok ve bir Alış pozisyonu açıyoruz.
2 Hiç;
SignalOpenSell;
NoTradeOnBar
Sell(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Satış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yok ve bir Satış pozisyonu açıyoruz.
3 SignalCloseBuy;
Buy(1)
Close(1); Bir Alış pozisyonu ve bunu kapatmak için bir sinyal vardır; Alış pozisyonu kapatılıyor.
4 SignalCloseSell;
Sell(1)
Close(1); Bir Satış pozisyonu ve bunu kapatmak için bir sinyal vardır; Satış pozisyonu kapatılıyor.

 

Şekil 9, bu üstprogramın performansını gösteren grafiktir.

Şekil 9. Alım Satım Sinyalleri için üstprogramın performansı
Şekil 9. Alım Satım Sinyalleri için üstprogramın performansı

 

Takip Eden Durdurma ile Alım Satım Sinyalleri

Tablo 10. Takip Eden Durdurma ile Alım Satım Sinyalleri için Üstprogram

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
SignalOpenBuy;
NoTradeOnBar
Buy(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Alış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yok ve bir Alış pozisyonu açıyoruz.
2 Hiç;
SignalOpenSell;
NoTradeOnBar
Sell(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Satış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yok ve bir Satış pozisyonu açıyoruz.
3 SignalCloseBuy;
Buy(1)
Close(1); Bir Alış pozisyonu ve bunu kapatmak için bir sinyal vardır; Alış pozisyonu kapatılıyor.
4 SignalCloseSell;
Sell(1)
Close(1); Bir Satış pozisyonu ve bunu kapatmak için bir sinyal vardır; Satış pozisyonu kapatılıyor.
5 Buy(1) TrailingStop Piyasada bir Alış pozisyonu vardır; Takip Eden Durdurma fonksiyonu etkinleştirilmelidir.
6 Sell(1) TrailingStop Piyasada bir Satış pozisyonu vardır; Takip Eden Durdurma fonksiyonu etkinleştirilmelidir.

 

Şekil 10, bu üstprogramın performansını gösteren grafiktir.

Şekil 10. Takip Eden Durdurma ile Alım Satım Sinyalleri için üstprogramın performansı
Şekil 10. Takip Eden Durdurma ile Alım Satım Sinyalleri için üstprogramın performansı

 

Kırılma Fonksiyonlu Alım Satım Sinyalleri

Tablo 11. Kırılma Fonksiyonlu Alım Satım Sinyalleri Üstprogram

Aşama numarası Aşama Tanımlama Eylemler Yorumlar
1 Hiç;
SignalOpenBuy;
NoTradeOnBar
Buy(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Alış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yapılmadığından, Alış pozisyonu açılıyor.
2 Hiç;
SignalOpenSell;
NoTradeOnBar
Sell(1,1,0,0) Piyasada bir pozisyon veya emir yoktur, ancak bir Satış pozisyonu açmak için bir sinyal görebiliriz. Mevcut çubukta alım satım yapılmadığından, Satış pozisyonu açılıyor.
3 SignalCloseBuy;
Buy(1)
Close(1); Bir Alış pozisyonu ve bunu kapatmak için bir sinyal vardır; Alış pozisyonu kapatılıyor.
4 SignalCloseSell;
Sell(1)
Close(1); Bir Satış pozisyonu ve bunu kapatmak için bir sinyal vardır; Satış pozisyonu kapatılıyor.
5 Buy(1) BreakEven Piyasada bir Alış pozisyonu vardır; Kırılma fonksiyonu etkinleştirilmelidir.
6 Sell(1) BreakEven Piyasada bir Satış pozisyonu vardır; Kırılma fonksiyonu etkinleştirilmelidir.

 

Şekil 11, bu üstprogramın performansını gösteren grafiktir.

Şekil 11. Kırılma Fonksiyonlu Alım Satım Sinyalleri için üstprogramın performansı

Şekil 11. Kırılma Fonksiyonlu Alım Satım Sinyalleri için üstprogramın performansı

 

Komut Yorumlayıcısı

Emir stratejilerini resmileştirmeye yönelik yukarıdaki yaklaşım, bunları daha iyi anlamamızı ve bir Uzman Danışmanda (EA) daha fazla uygulanması için bir algoritma üzerinde çalışmamızı ve ayrıntılı kuralları doğrudan yorumlamamızı ve takip etmemizi sağlar. eInterpretator Uzman Danışmanı (EA) bu amaç göz önünde bulundurularak oluşturulmuştur (ekli dosyalara bakın). Uzman Danışmanın (EA) parametreleri ve açıklamaları Tablo 12'de verilmiştir.

Tablo 12. eInterpretator Uzman Danışmanının (EA) Parametreleri

Parametreler Amacı
Lots Lot katsayısı 1'e eşit olduğunda emrin hacmi.
UserTradeDir Kullanıcı tarafından belirtilen alım satım yönü (UserBuy ve UserSell komutları yürütülürken aşama tanımlamasında denetlenir).
ProgramFileName Üstprogram dosya adı (hesap üzerinde çalışırken). Test ederken veya optimize ederken, üstprogram TesterMetaProgram.txt dosyasına yerleştirilmelidir
DeInterpritate Komutların ters yorumlanması. Tamamlandığında, Dosyalar klasöründe "De_" önekine sahip bir dosya görünecek ve ProgramFileName dosyasından Uzman Danışmanın (EA) üstprogramı nasıl "anladığını" görebileceksiniz.
Kullanıcı Değişkenleri
Var1 - Var20 Kullanıcı değişkenleri.
Takip Eden Durdurma
TR_ON Takip Eden Durdurma fonksiyonunun etkinleştirilmesi.
TR_Start Takip Eden Durdurma fonksiyonunun çalışmaya başladığı noktalarda pozisyonun karı.
TR_Level Takip Eden Durdurma seviyesi. Mevcut piyasa fiyatından Zararı Durdur’a kadar puan cinsinde uzaklık.
TR_Step Zararı Durdur'un değiştirilmesine yönelik noktalarda adım.
Kırılma
BE_ON Kırılma fonksiyonunun etkinleştirilmesi.
BE_Start Kırılmayı tetikleyen noktalarda pozisyonun karı.
BE_Level Kırılma tetiklendiğinde Zararı Durdur’un taşındığı seviye. Kar puanlarının BE_Start BE_Level değişkeni sabittir.
Açık Sinyaller
OS_ON Açılış için sinyallerin etkinleştirilmesi.
OS_Shift Göstergelerin işaretli olduğu çubuk: 0 - yeni, 1 - tamamlandı.
OS_TimeFrame Gösterge zaman dilimi.
OS_MA2FastPeriod Hızlı MA dönemi.
OS_MA2FastShift Hızlı MA kaydırma.
OS_MA2FastMethod Hızlı MA yöntemi.
OS_MA2FastPrice Hızlı MA fiyatı.
OS_MA2SlowPeriod Yavaş MA dönemi.
OS_MA2SlowShift Yavaş MA kaydırma.
OS_MA2SlowMethod Yavaş MA yöntemi.
OS_MA2SlowPrice Yavaş MA fiyatı.
Kapalı Sinyaller
CS_ON Kapatma sinyallerinin etkinleştirilmesi.
CS_Shift Göstergelerin işaretli olduğu çubuk: 0 - yeni, 1 - tamamlandı.
CS_TimeFrame Gösterge zaman dilimi.
CS_CCIPeriod CCI dönemi.
CS_CCIPrice CCI fiyatı.
CS_CCILevel Üst CCI seviyesi (bir Alış pozisyonunu kapatmak için). Bir Alış pozisyonunu kapatmak için bir sinyal seviyenin aşağı doğru geçişinde görünür. Bir Satış pozisyonunu kapatmak için bu tam tersidir.

 

Uzman Danışman (EA) Nasıl Çalışır?

Başlangıçta, Uzman Danışman (EA), gözden geçirmek ve analiz etmek için üstprogramı dosyadan yükler. Üstprogramda herhangi bir büyük hata bulunursa, bir hata uyarısı açılır. Üstprogramı analiz eden Uzman Danışman (EA), Uzman Danışmanın (EA) maksimum performansını sağlamak için veri yapılarını metin komutlarına karşılık gelen nümerik değerlerle doldurur. Üstprogramın başarılı analizi sonrasında günlüğe aşağıdaki mesaj yazdırılır: "Yorumlayıcının başlatılması tamamlandı."

DeInterpritate değişkeni dahil edilirse, Uzman Danışman (EA) komutların test yorumlanmasını çalıştırır (böylece, bu, grafikten çıkarılır ve Strateji Test Cihazı içinde herhangi bir test iptal edilir). Ters yorumlama yaparken, Uzman Danışman (EA) yapılarda bulunan nümerik değerleri metin komutlarına dönüştürür. Dosyadaki komut girişleri farklı olsa da, ters yorumlanmış üstprogram, Uzman Danışmanın (EA) komutları nasıl analiz ettiği hakkında daha iyi bir fikre sahip olmanızı sağlayacaktır.

Bunu, üstprogram dosyasından aşağıdaki dizeyi kullanarak görelim:

Buy(6) | Modify(6,,,ThisOpenPrice-Var4p,)

Ters yorumlamadan sonra bu dize aşağıdaki gibi görünecektir:

Buy(6)==1*1+0*0; | Modify(6,,,ThisOpenPrice()*1-0.0025*1,)

Gördüğümüz gibi, basit bir Buy(6) komutu, sağ tarafın hesaplamalar sonucunda 1 veren X1*X2+X3*X4 aritmetik ifadesini içerdiği bir karşılaştırma ifadesine dönüştürülür. Eylem alanında, kullanıcı değişkeni nümerik değerle değiştirilir.

 

Uzman Danışmanı (EA) Özelleştirme Hakkında İpuçları

Bazılarınız muhtemelen hem analiz aşamasına hem de komut yürütmeye kendi komutlarınızı ekleyerek ve diğer pozisyon yönetimi fonksiyonlarını dahil ederek bu Uzman Danışmanı (EA) özelleştirmek isteyeceksiniz. Uzman Danışmanın (EA) yapısı nedeniyle bu tür bir özelleştirme oldukça basit olabilir, aksi takdirde Uzman Danışman (EA) üzerinde yapılan tüm çalışmaların pratik bir değeri olmazdı.

Veri Komutları Ekleme

Veri almak için komutların listesi InfoCommand dizisinde bulunabilir. Komutlar, sayılarını kolayca saymamızı ve eklenecek komutun dizin değerini bulmamızı sağlayan bir satırda beş komuta sahip sütunlar halinde düzenlenir.

Komutu InfoCommand dizisine ekledikten sonra, SetValue() fonksiyonundaki anahtar yapısına yeni komut dizinine karşılık gelen yeni bir büyük/küçük harf ekleriz. Değeri almak için, önce değerin elde edileceği nesneyi seçmemiz ve ancak daha sonra değeri almamız gerekir. Verilerin elde edildiği nesnenin türüne bağlı olarak, nesneyi seçmek için farklı fonksiyonlar kullanılır. Bu fonksiyonlar Tablo 13'te gösterilmiştir.

Tablo 13. Uzman Danışmanın (EA) alım satım nesneleri seçme fonksiyonları

Fonksiyon Amaç ve Parametreler
Pos.Select(_Symbol) Pozisyon seçimi. PositionSelect() fonksiyonuna benzer standart sınıf yöntemi.
SelectOrder(long aType,string aID,bool & aSelected) Uzman Danışmanın (EA) simgesine göre bir emir seçme fonksiyonu, (aType) ve tanımlayıcı değeri (aID) yazın. Nesne bulunur ve seçilirse, referansa göre aSeleted değişkeni doğru çıkar.
bool SelectLastDeal(int aType,bool & aSelected) Uzman Danışmanın (EA) simgesine göre son alım satımı seçme fonksiyonu ve türü (aType). Nesne bulunur ve seçilirse, referansa göre aSeleted değişkeni doğru çıkar.
SelectLastEADeal(int aType,string aID,bool & aSelected) Uzman Danışman (EA) tarafından yürütülen son alım satımı Uzman Danışman sembolü ve türü (aType) ile seçme fonksiyonu. Nesne bulunur ve seçilirse, referansa göre aSeleted değişkeni doğru çıkar.

 

Son alım satım ile Uzman Danışman (EA) tarafından gerçekleştirilen son alım satım arasındaki fark, son alım satımın Zararı Durdur ve Kar Al işlemlerini kapsamasıdır. Son pozisyonun kapatılmasının sonucunu belirlemek için son alım satım verileri gerekmeyebilirken, Uzman Danışman (EA) tarafından yürütülen son alım satıma ilişkin bilgiler alım satımın son yönünü veya Uzman Danışman (EA) işlem aşamasını belirlemek için gerekli olabilir.

Alım satım nesnesi verilerine ek olarak, fiyat vb. gibi piyasa verilerine erişim elde edilebilir. Önemli olan verilerin elde edilebildiğinden emin olmaktır. Nesneyi seçme girişiminin ardından, nesnenin gerçekten seçildiğinden emin olmalıyız (aSelected değerini denetleyerek), gerekli parametreyi almalı, değerini Val.Value değişkenine atamalı ve doğru vermeliyiz.

Tablo 14, çeşitli alım satım nesnelerinin parametrelerini almak için kullanılan fonksiyonlara sahiptir.

Tablo 14. Seçilen alım satım nesnesinin parametrelerini almak için Uzman Danışmanın (EA) fonksiyonları

Fonksiyon Amaç ve Parametreler
double SelPosParam(int aIndex) aIndex dizini ile pozisyon parametresi alma.
double SelOrdParam(int aIndex) aIndex dizini ile emir parametresi alma.
double SelDealParam(int aIndex) aIndex dizini ile alım satım parametresi alma.

 

Elde edilecek verilerin tanımlayıcı dizini fonksiyona geçirilir. Dizin değeri Val.InfoIdentifierIndex değişkeninde bulunur.

Yeni bir erişim komutu eklerken, ayrıca elde edilecek verilerin tanımlayıcısını eklemeniz veya yalnızca alınacak verilerin tanımlayıcısını eklemeniz gerekebilir.

 

Veri Tanımlayıcıları Ekleme

Tanımlayıcıların listesi InfoIdentifier dizisinde bulunabilir. Diziye yeni tanımlayıcı eklememiz, dizinini bulmamız ve SelPosParam(), SelOrdParam() ve SelDealParam() fonksiyonlarını güncellememiz gerekir. Güncellemeler, yeni tanımlayıcının tüm alım satım nesnelerine uygulanıp uygulanamayacağına bağlı olarak bazı fonksiyonlar veya tüm fonksiyonlar ile ilgili olabilir. Fonksiyon güncellemeleri, anahtar yapısına yeni tanımlayıcı dizinine karşılık gelen yeni bir büyük/küçük harf eklemeyi içerir.

 

Eylem Komutları Ekleme

Eylem komutları ActCommand dizisine eklenir. Dizideki komutlar bir dize halinde düzenlenir, bu da gerekli dizini bulmayı biraz daha zorlaştırır. Öğeler bir dizeyi temsil eder, çünkü komut eklemenin yanı sıra parametrelerinin ve türünün numarasını belirtmemiz gerekir. Parametrelerin numarası ActCmndPrmCnt dizisinde, tür ise ActCmndType dizisinde belirtilir. Olası türler şunlardır: 0 - piyasa eylemi, 1 - bekleyen bir emirle eylem, 2 - pozisyon yönetimi.

Komut diziye eklendikten sonra, DoAction() fonksiyonunu buluyoruz ve anahtarına yeni fonksiyon çağrısı için başka bir büyük/küçük harf ekliyoruz. Yeni fonksiyon bool türünde olmalı ve başarıyla yürütülürse doğru veya hata durumunda yanlış vermelidir. Fonksiyon performans denetimi gerekli değilse, Takip Eden Durdurma fonksiyonunda olduğu gibi, yalnızca doğru verebilir.

Aynı ayarın fonksiyonları gibi bekleyen emirlerle ilgilenen fonksiyonların, emir varlığı için ön denetimler gerektirdiğini unutmayın.

 

Alım Satım Sinyali Fonksiyonlarında Değişiklikler

Uzman Danışmanda (EA) alım satım sinyalleri almakla ilgili tüm iş iki fonksiyonda yapılır (kapanış sinyalleri için iki fonksiyon ve açılış sinyalleri için iki fonksiyon).

CloseSignalsInit() fonksiyonu (kapanış sinyallerinin başlatılması) ve OpenSignalsInit() fonksiyonu (açılış sinyallerinin başlatılması) Uzman Danışmanın (EA) OnInit() fonksiyonundan çağrılır. Bu fonksiyonlar göstergelerin yüklenmesinden sorumludur. Ana fonksiyonlar - CloseSignalsMain() (kapanış için alım satım sinyallerinin tanımlanması) ve OpenSignalsMain() (açılış için alım satım sinyallerinin tanımlanması) her onay işaretinde OnTick() fonksiyonundan çağrılır.

Fonksiyon yürütmenin başlangıcında, GlobalCloseBuySignal, GlobalCloseSellSignal (kapanış sinyalleri) ve GlobalOpenBuySignal, GlobalOpenSellSignal (açılış sinyalleri) doğru ve ardından ilgili gösterge okumalarında doğru olarak atanmalıdır.

Ayrıca, Uzman Danışmanın (EA) OnDeinit() fonksiyonunda, komutunu yürütmeniz gerekir.

 

Ekler

  • eInterpretator.mq5 - Terminal veri dizininin MQL5/Experts klasörüne yerleştirilmesi gereken Uzman Danışman (EA).

  • LimitAdd.txt - Limit Emirlerini Kullanırken Ölçeklendirme için Üstprogram.

  • StopRev.txt - Durdur ve Ters Çevir için Üstprogram.

  • Piramiding.txt - Piramitleme için Üstprogram.

  • ReOpen.txt.txt - Yeniden Açma için Üstprogram

  • TradeSignals.txt - Alım Satım Sinyalleri için Üstprogram.

  • TradeSignalsTR.txt - Takip Eden Durdurma ile Alım Satım Sinyalleri için Üstprogram.

  • TradeSignalsBE.txt - Kırılma Fonksiyonu ile Alım Satım Sinyalleri için Üstprogram.

  • limitadd.set - Limit Emirlerini Kullanırken Ölçeklendirme için parametrelerin dosyası.

  • stoprev.set - Durdur ve Ters Çevir için parametrelerin dosyası.

  • piramiding.set - Piramitleme için parametrelerin dosyası.

  • reopen.set - Yeniden Açma için parametrelerin dosyası.

  • tradesignals.set - Alım Satım Sinyalleri için parametrelerin dosyası.

  • tradesignalstr.set - Takip Eden Durdurma ile Alım Satım Sinyalleri için parametrelerin dosyası.

  • tradesignalsbe.set - Kırılma Fonksiyonu ile Alım Satım Sinyalleri için parametrelerin dosyası.

Not: Alım Satım Sinyalleri, Takip Eden Durdurma ve Kırılma ile programları kullanırken, Uzman Danışman (EA) özellikleri penceresinde ilgili fonksiyonları etkinleştirmeyi unutmayın. Strateji Test Cihazında stratejileri test ederken, üstprogram dosyalarını TesterMetaProgram.txt dosyasına kopyalayın (bu, uzaktan test aracılarının kullanılmasına izin vermek için gereklidir). Dosya terminal veri dizininin MQL5/Files içine yerleştirilmelidir (bunu terminalden açabilirsiniz: Dosya -> Veri Klasörünü Aç).

Üstdil bölümünde Emir Stratejileri Örneklerinde bulunabilecek grafiklerde görüntülenen programların performansı parametre dosyalarında belirtilen parametrelere dayanır. Test son aylarda (29.08.2012 itibariyle), EURUSD H1, OHLC modeli için M1'de gerçekleştirildi.

 

Sonuç

Çok sık, emir stratejisi geliştirmeye başlarken muhtemelen alacağınız ilk duygu kafa karışıklığıdır - neyle başlamalı, neleri akılda tutmalısınız, Uzman Danışmanın (EA) gerçek ortamda istikrarı nasıl sağlanır, bir alım satım stratejisi algoritmasının yürütülmesi alım satımın güvenilirliği ile nasıl birleştirilir?

Bu makalenin, en azından, stratejilerinin ilk resmileşmesiyle EA'ların geliştirilmesi için emir veren geliştiricilere ve yatırımcılara yardımcı olması ve strateji geliştirmenin aşamalarını, her aşamanın ne içerdiğini ve nelerin dikkate alınması gerektiğini anlamalarına yardımcı olması gerekir. eInterpretator Uzman Danışmanı (EA), minimum zaman ve çabayla emir stratejilerini denemek için harika olanaklar sunar.

Ayrıca, MetaTrader 5 terminaline olan hayranlığımı durduramayacağımı söylemek isterim. Strateji Test Cihazındaki eInterpretator Uzman Danışmanının (EA) çalışma hızı beklentilerimin ötesindeydi!

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/495

Ekli dosyalar |
files__4.zip (23.39 KB)
Yeni Başlayanlar İçin Hızlı Başlangıç veya Kısa Kılavuz Yeni Başlayanlar İçin Hızlı Başlangıç veya Kısa Kılavuz
Merhaba sevgili okuyucu! Bu yazıda, Uzman Danışmanlar (EA) oluşturma, göstergelerle çalışma vb. ilkeleri nasıl kolay ve hızlı bir şekilde kavrayabileceğinizi açıklamaya ve göstermeye çalışacağım. Bu, yeni başlayanlara yöneliktir ve zor veya anlaşılmaz örnekler içermeyecektir.
MQL5'de Alım Satım İşlemleri — Bu Kolaydır MQL5'de Alım Satım İşlemleri — Bu Kolaydır
Hemen hemen tüm yatırımcılar para kazanmak için piyasaya gelirler, ancak bazı yatırımcılar da sürecin kendisinin tadını çıkarırlar. Ancak, size sadece heyecan verici bir deneyim sunabilen manuel alım satım değildir. Otomatik alım satım sistemleri geliştirme de oldukça ilginç olabilir. Bir alım satım robotu oluşturmak, iyi bir gizem romanı okumak kadar ilginç olabilir.
MQL5.community kanallarını ve grup sohbetlerini kullanın MQL5.community kanallarını ve grup sohbetlerini kullanın
MQL5.com web sitesi dünyanın her yerinden yatırımcıları bir araya getirir. Kullanıcılar makaleler yayınlar, ücretsiz kodlar paylaşır, Mağazada ürünler satar, Freelance siparişleri gerçekleştirir ve ticaret sinyallerini kopyalar. Diğer kullanıcılarla Forumdan, yatırımcı sohbetlerinden ve MetaTrader kanallarından iletişim kurabilirsiniz.
MQL5'e Hızlı Bakış MQL5'e Hızlı Bakış
MQL5 alım satım stratejileri programlama dilini incelemeye karar verdiniz, ama bu konuda hiçbir şey bilmiyor musunuz? MQL5 ve MetaTrader 5 terminalini yeni gelenlerin bakış açısından incelemeye çalıştık ve bu kısa tanıtım makalesini yazdık. Bu makalede, dil imkanları hakkında kısa bir fikrin yanı sıra MetaEditor 5 ve terminal ile çalışma hakkında bazı ipuçları bulabilirsiniz.