[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 571

 
xant :

Tavsiye lütfen.

Uzman Danışmanımda çıkış hesaplaması birikmiş kârdan geliyor. Örneğin, zamanın bir noktasında öz sermaye = bakiye ise, mevcut öz sermaye bunu ilk başta aştığında danışman tüm işlemleri kapatacaktır. Kaç tane olursa olsun tüm anlaşmaları kapatır.

Test cihazında kolaydır, çünkü yalnızca bir döviz çifti vardır.

Gerçekte, ticaret birkaç para biriminde gerçekleşir ve her biri ayrı ayrı dikkate alınmalıdır. Örneğin: Bazı döviz çiftleri için açık anlaşma yoksa, ==0 değişkeni. Ve aynı şekilde bu parite için kapatılan anlaşmaları takip etmeniz ve birikmiş kârın bu paritenin açık emirlerinden verilen zararı belirli bir miktarda aşmasını beklemeniz gerekir.

Ders kitabında, farklı para birimlerinde birikmiş kar için muhasebe bölümünü düzenlemek için hangi işlevin kullanılabileceğini bulamıyorum. Bana kimin bildiğini söyle. Teşekkür ederim.


Muhasebenizi düzenlemeniz gerekir . AccountEquity () ve AccountBalance () fonksiyonları sadece toplamı hesaplar ve bir döviz çifti için, bu çiftin tüm emirlerinin bakiyesini ve öz sermayesini değil, toplam kârını hesaplamak gerekir.

Genel olarak, genellikle bir baykuşta, bu, tüm işlemleri kapatan ve düşüş çok büyükse danışmanı kapatan bir denge korumasıdır.

 

///Muhasebenizi düzenlemeniz gerekiyor. AccountEquity() ve AccountBalance() işlevleri yalnızca toplamı dikkate alır.

Peki, neden bahsediyoruz - nasıl organize edilir?

Danışman farklı terminallerden başlatıldığından bir dosyaya yazmak istemem. Yalnızca üzerinde durduğu döviz çiftini dikkate alması gerekir. Döngü başlangıcından sonra kapatılan siparişlerin karı/zararı nasıl hesaplanır?

Döngü ilk girişte başlar, kâr veya zararda sıfırdan sapma zaten başlar. Bu çiftin bir emri her kapatıldığında, emrin kapanmasının sonucu ara belleğe eklenmelidir. Açık olanlar için arabellek + kar değeri belirtilen değerden büyük olduğunda, tüm işlemleri kapatmak için bir komut gönderilir.

Algoritma benim için oldukça açık. Nasıl hesap vereceğimi anlamıyorum. ben acemiyim)

 
xant :

///Muhasebenizi düzenlemeniz gerekiyor. AccountEquity() ve AccountBalance() işlevleri yalnızca toplamı dikkate alır.

Peki, neden bahsediyoruz - nasıl organize edilir?

Danışman farklı terminallerden başlatıldığından bir dosyaya yazmak istemem. Yalnızca üzerinde durduğu döviz çiftini dikkate alması gerekir. Döngü başlangıcından sonra kapatılan siparişlerin karı/zararı nasıl hesaplanır?

Döngü ilk girişte başlar, kâr veya zararda sıfırdan sapma zaten başlar. Bu çiftin bir emri her kapatıldığında, emrin kapanmasının sonucu ara belleğe eklenmelidir. Açık olanlar için arabellek + kar değeri belirtilen değerden büyük olduğunda, tüm işlemleri kapatmak için bir komut gönderilir.

Algoritma benim için oldukça açık. Nasıl hesap vereceğimi anlamıyorum. ben acemiyim)


İşlev
Sipariş Karı ( )
Ve neden bir dosyada? sadece bir değişken.
 

rigonik ,

kesin olmak gerekirse (OrderProfit()+OrderCommission()+OrderSwap()

Peki kapanan siparişlerden nasıl bilgi alınır?

Kapalı MODE_HISTORY'den OrderSelect()'i kullanarak siparişleri seçiyorum, ancak doğru olanları nasıl seçebilirim?

Durumumdan sonra kapananları tarihten alabilirsem, elbette gerekli olan her şeyi alıp özetleyeceğim. Ama nasıl yapacağımı anlamadım maalesef.

 
7Konstantin7 :

Lütfen bana neyin yanlış olduğunu söyle, mql'de yeniyim

girilen TimeBar_t = Dakika() ; Parantezler gerekli yerlerde mi anlayamadım ya da ;

int Dakika ( )
Programın başlatıldığı anda bilinen son sunucu saatinin geçerli dakikasını (0,1,2,..59) döndürür (programın yürütülmesi sırasında bu değer değişmez).
Not: Test sırasında, bilinen son sunucu zamanı simüle edilir.
Yani şartınız sadece başlangıç anında yerine getirilecektir.
 
xant :

rigonik ,

kesin olmak gerekirse (OrderProfit()+OrderCommission()+OrderSwap()

Peki kapanan siparişlerden nasıl bilgi alınır?

Kapalı MODE_HISTORY'den OrderSelect()'i kullanarak siparişleri seçiyorum, ancak doğru olanları nasıl seçebilirim?

Durumumdan sonra kapananları tarihten alabilirsem, elbette gerekli olan her şeyi alıp özetleyeceğim. Ama nasıl yapacağımı anlamadım maalesef.


Neye ihtiyacın var? Örneğin, danışmanınız tarafından enstrüman için ilk siparişin açılış tarihini hatırlayın ve ondan sonra açılanların hepsini seçin, koşula göre kapattıktan sonra değişkenin değerini sıfırlayın ve yeni (mevcut) değeri hatırlayın.
 
xant :

Tavsiye lütfen.

Uzman Danışmanımda, çıkışın hesaplanması birikmiş kardan geliyor. Örneğin, zamanın bir noktasında öz sermaye = bakiye ise, mevcut öz sermaye bunu ilk başta aştığında danışman tüm işlemleri kapatacaktır. Kaç tane olursa olsun tüm anlaşmaları kapatır.

Test cihazında kolaydır, çünkü yalnızca bir döviz çifti vardır.

Gerçekte, ticaret birkaç para biriminde gerçekleşir ve her biri ayrı ayrı dikkate alınmalıdır. Örneğin: Bazı döviz çiftleri için açık anlaşma yoksa, ==0 değişkeni. Ve aynı şekilde bu parite için kapatılan anlaşmaları takip etmeniz ve birikmiş kârın bu paritenin açık emirlerinden verilen zararı belirli bir miktarda aşmasını beklemeniz gerekir.

Ders kitabında, farklı para birimlerinde birikmiş kar için muhasebe bölümünü düzenlemek için hangi işlevin kullanılabileceğini bulamıyorum. Bana kimin bildiğini söyle. Teşekkür ederim.


https://www.mql5.com/ru/forum/131859/page3#434223 burada ve ayrıca https://www.mql5.com/ru/forum/131859/page3#434222
 
Açık pozisyonlar için bir koşul yazmaya yardımcı olun.

Planlanan prense göre anlaşma açmak için ek bir koşul yazamam.

TP veya SL'de herhangi bir pozisyonu kapattıktan sonra, ters pozisyonla tekrar açması gerekir.

Örnek: Bir Satış pozisyonu kapalıysa, diyelim ki SL tarafından, yine onunla birlikte bir Satış pozisyonu açtı ve Al

İşte EA'dan 2 koşul:

satın alma koşulu

eğer (SATIN AL)
{
if (kar al!=0) TP = NormalizeDouble(Sor + kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Sor - stoploss*Nokta,Rakamlar); başkaSL=0;
if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER("Satın Al");
}

satış koşulu

eğer (SAT)
{
if (kar al!=0) TP = NormalizeDouble(Teklif - kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Teklif + stoploss*Puan,Rakamlar); başkaSL=0;
if(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders)OPENORDER("Sat");
}

Buna kim dahil, ek bir koşul yazmaya yardımcı olun
Dosyalar:
sellbuy_4.mq4  3 kb
 
Rigonich durumunuz uymuyor ((yeterli depo varken siparişleri durmadan açar)
 
rigonich :

Sola kaydırmak için - F12, sağa - bilmiyorum.

rigonich Teşekkürler, mükemmel bir şekilde istendi! Sadece ihtiyacın olan şey!