MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1559

 
Tsaryoff5614 :

İyi günler beyler programcılar!!

Lütfen bir işleve yeni başlayanlara yardım edin.

İşlev, geçmişteki toplam karı hesaplar.

Sorun şu ki, bir komisyoncu üzerinde çalışıyor ve başka bir komisyoncu üzerinde çalışmak istemiyor.

Gerchik'te çalışıyor, ancak Roboforex'te çalışmıyor. RoboForex ECN hesabı.

Neyin yanlış olduğunu anlamıyorum. İşte kod:

çift son kayıp()

{

int tip = -1,cnt = 0;

çift son kayıp = 0;

for(int i = OrdersHistoryTotal()-1; i>=0; i--)

{

if(OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

if(cnt == 0) type = OrderType();

if(cnt > 0 && OrderType()!= type) break;

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

cnt++;

}

}

}

dönüş (son kayıp);

}

İlginçtir ki, derleyici bu satıra yemin etmez mi?

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

Belki doğru işlem için bir + çıkarılması gerekiyor?

Ve neden kâr etmek için komisyonlu bir takas ekliyorsunuz? Aslında buna rağmen
OrderProfit()

olumsuz olabilir...

Ve yalnızca 1 veya birkaç uygun siparişi işleme koyarsanız, ancak hepsini işlemezseniz bahsettiğimiz toplam kâr nedir?

Daha ileri:

 if (cnt > 0 && OrderType()!= typ) break ;

döngü durdurma.

 
MakarFX :

1) Yüksek hızda veya test cihazındaki keneler üzerinde değilse, mevcut ilk fiyattan kapanacaktır.

2) Partiyi artırıyorsunuz ve büyük bir lot ile 1 puan izin verilen seviyeden fazla olabilir.

3) Ne istediğinizi anlamadım, her işlemden sonra sıfırlama olursa ne izlenmeli?

3) Ne istediğinizi anlamadım, her işlemden sonra sıfırlama olursa ne izlenmeli?

her işlemin "içinde" kâr / zararı izlemekten bahsediyoruz, yani fiyat stop ve al arasında "sallanırken", mevcut işlemden elde edilen kâr ve zarar miktarı da değişir. Genellikle fiyatın kâr alanına girdiği, ancak alım noktasına ulaşmadığı - tersine döner ve anlaşma stop ile kapatılır. Kar ve zarar (para olarak) ile izlemeye ihtiyacım var, böylece dur ve al'ı değiştirmeden, yani set al ve dur parametrelerini bozmadan zamanında düzeltebilirim. Bu, martinin açık olduğu büyük partiler için geçerlidir.

işlem kapatıldıktan sonra - izleme durur ve yeni bir işlem için yeniden başlar.

 
законопослушный гражданин :

3) Ne istediğinizi anlamadım, her işlemden sonra sıfırlama olursa ne izlenmeli?

her işlemin "içinde" kâr / zararı izlemekten bahsediyoruz, yani fiyat stop ve al arasında "sallanırken", mevcut işlemden elde edilen kâr ve zarar miktarı da değişir. Genellikle fiyatın kâr bölgesine girdiği ancak alım noktasına ulaşmadığı, tersine döndüğü ve anlaşmanın stop ile kapatıldığı görülür. Kar ve zarara göre (para olarak) izlemeye ihtiyacım var, böylece dur ve al'ı değiştirmeden, yani set al ve dur parametrelerini bozmadan zamanında düzeltebilirim. Bu, martinin açık olduğu büyük partiler için geçerlidir.

işlem kapatıldıktan sonra - izleme durur ve yeni bir işlem için yeniden başlar.

Sadece zararı durdur ve kar al parametresinden daha az kar ve zarar parametrelerini belirtmeniz yeterlidir, yani.

TakeProfit'in maliyeti 200 puan 0.1 lot ise, kâr 20$'dır, kar seviyesini 15$ olarak ayarlayın ve anlaşma daha erken kapanacaktır.

 
Mihail Matkovskij :

Ve neden kâr etmek için komisyonlu bir takas ekliyorsunuz? Aslında buna rağmen
OrderProfit()

olumsuz olabilir...

Bunun için teşekkür ederim, ben de çok aptalca bir şey yaptım, yapıyorum

 
MakarFX :

Sadece zararı durdur ve kar al parametresinden daha az kar ve zarar parametrelerini belirtmeniz yeterlidir, yani.

TakeProfit'in maliyeti 200 puan 0.1 lot ise, kâr 20$'dır, kar seviyesini 15$ olarak ayarlayın ve anlaşma daha erken kapanacaktır.


tamam, teşekkürler, bunu düşüneceğim ve test cihazında çalıştıracağım.

 
Siparişlerin geçmişinden karı hesaplayan bir fonksiyona bağlantı bulabilen var mı?
 

Lütfen topluluğa yardım edin...
MQL5 global nesneleri nasıl düzgün bir şekilde bildirilir ve oluşturulur?

Eğer bunu yaparsan:

 int OnInit ()
{
   CIsNewBar* NB_M1= new CIsNewBar( _Symbol , PERIOD_M1 );  // Эта строка потом будет в цикле для разных символов
}

void OnTick ()
{
     if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

daha sonra derleyici OnTick()'teki satıra yemin eder: 'NB_M1' - bildirilmemiş tanımlayıcı, bu mantıklıdır, çünkü OnInit() içinde yerel bir değişken oluşturulur.

OnInit()'ten önce bir genel bildirim eklerseniz:

CIsNewBar* NB_M1;

daha sonra hatasız derlenir ve EA çalışır. Görünüşe göre nesne, genel bildirimde ve OnInit()'te iki kez yaratıldı...
Ama içinde   derleyici uyarıları   şu var:

'NB_M1' bildirimi, OnInit() içindeki satır başına global değişkeni -> gizler

önceki 'NB_M1' beyanına bakın

Bu, OnInit() içinde aynı ada sahip global bir değişkeni gizleyen bir yerel (fonksiyon içinde) değişkenin yaratıldığı anlamına mı geliyor?
Ve öyleyse, başka bir işlev bu yerel değişkeni - OnTick() nasıl "görür"?


 
MakarFX :

Bunun için teşekkür ederim, aynı aptallığı yaptım

Makar, eskiden doğru olanı yapardın ama şimdi aptalca bir şey yapmak istiyorsun...

Yaklaşık 5 sınıf için matematiği hatırlayın. (-3)-(-7) ne kadar olacak ve (-3)+(-7) ne kadar olacak

Bir hesap makinesinde kontrol etmek zordur, Excell size yardımcı olacaktır.


 
Mihail Matkovskij :
Merhaba. Veri yapılarını bir dosyaya yazmak ve ardından bunları yüklemek için ücretsiz olarak kullanılabilen herhangi bir MQL kitaplığı bilen var mı? json formatı, json ayrıştırıcı vb. ile çalışan bir kitaplık ideal olacaktır.

Belgeleri okuman için seni nasıl göndereceğimi bile bilmiyorum. Okuduysam ve normal işlev bir nedenden dolayı uymuyorsa, hemen söylemeliydim ...

 
Alexey Viktorov :

Makar, eskiden doğru olanı yapardın ama şimdi aptalca bir şey yapmak istiyorsun...

Yaklaşık 5 sınıf için matematiği hatırlayın. (-3)-(-7) ne kadar olacak ve (-3)+(-7) ne kadar olacak

Bir hesap makinesinde kontrol etmek zordur, Excell size yardımcı olacaktır.


Evet teşekkür ederim. Hemen sonuçlara atladım. Ben iyiyim)