![Emir Stratejileri. Çok Amaçlı Uzman Danışman (EA)](https://c.mql5.com/i/articles/overlay.png)
Emir Stratejileri. Çok Amaçlı Uzman Danışman (EA)
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:
Piyasa analizi ve buna dayalı eylemler.
Alım satım durumunun ve buna dayalı eylemlerin analizi.
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:
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.
İki karşıt Durdur emri. Emirlerden biri tetiklendiğinde, ikinci emir silinir.
İki karşıt Limit emri. Emirlerden biri tetiklendiğinde, ikinci emir silinir.
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
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
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
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
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:
Pozisyon veya emir yok. Bir pozisyonun açılması gerekiyor.
Bir pozisyon var, ancak emir ayarlanmadı. Bir Durdur emri gerekiyor.
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:
Pozisyon yok. Bir pozisyonun açılması gerekiyor. Pozisyon başarıyla açıldıysa, Durdur emri ve Limit emri istekleri gönderilmelidir.
Bir pozisyon var ama bekleyen bir emir yok. Durdur emri ve Limit emri istekleri gönderilmelidir.
Bir pozisyon ve Durdur emri var, ancak Limit emri eksik. Bir Limit emri isteği gönderilmelidir.
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:
Pozisyon yok. Bir pozisyonun açılması gerekiyor. Pozisyon başarıyla açılırsa, bir Durdur emri ve Limit emri istekleri gönderilmelidir.
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:
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.
Her işlem aşaması, bu aşamaya karşılık gelen durumun tam bir açıklamasına sahip olmalıdır.
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).
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.
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.
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ı
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ı
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ı
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ı
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ı
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ı
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ı
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
![Yeni Başlayanlar İçin Hızlı Başlangıç veya Kısa Kılavuz](https://c.mql5.com/2/0/start_ava.png)
![MQL5'de Alım Satım İşlemleri — Bu Kolaydır](https://c.mql5.com/2/0/egg.png)
![MQL5.community kanallarını ve grup sohbetlerini kullanın](https://c.mql5.com/2/43/chats.png)
![MQL5'e Hızlı Bakış](https://c.mql5.com/2/0/fast_MQL5_avatar__1.png)
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz