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

 
SGarnov :

Bir döviz çifti için art arda durak sayısı.

Danışman birkaç döviz çifti üzerinde durur ve geçmişe birkaç durak girer ve farklı sıralarda, geçmişi anlamak için danışman başlangıçta emirleri ID'lerle işaretler ancak geçmişte bulamaz, OrderMagikNumber()'ın görüneceğini düşündüm. onlar için. Belki de farklı döviz çiftlerinden gelen stopların tarihinde, danışmanın onları "görmeyi" bırakması nedeniyle?Bir çift üzerinde danışman olarak çalışmaya çalışmadım ve o zaman bundan hiçbir anlamı olmayacak.

kaynağı tekrar yaz? Düzeltmesi gereken tek şey, "tarihten stop işlemlerini aramak ve yeni yerleştirilen alıma eklemesini sağlamaktır".

Ve arka arkaya bir çift için ikiden fazla durak varsa, bu çift için bir Uzman Danışmanın çalışmasına nasıl devam edersiniz?

Bu arada, OrderMagicNumber() danışmanı ve sihir olmadan manuel olarak verilen siparişleri ayarlar
 
MakarFX :

Ve arka arkaya bir çift için ikiden fazla durak varsa, bu çift için bir Uzman Danışmanın çalışmasına nasıl devam edersiniz?

kendimi ifşa ettiğim yeni bir erteleme.
 
SGarnov :
kendimi ifşa ettiğim yeni bir erteleyici .
Ve buna önceki kayıpların puanlarını veya yeni bir kayıp sayma döngüsünü eklemek gerekli mi?
 
MakarFX :
Ve buna önceki kayıpların puanlarını veya yeni bir kayıp sayma döngüsünü eklemek gerekli mi?

hayır. öncekileri eklemeye gerek yok. sadece danışmanın başlamasıyla.

Zarar Durdurma katsayısı 2'ye eşitse, EA her zaman yalnızca 4 senaryo uygulayacaktır.

A) Danışmanın alma işi durur

B) Danışmanın işi +1 stop alır

C) danışmanın işi durduğu + 2 durak alır

D) 3 danışmanın çalışmasını durdurur

 
SGarnov :

Tünaydın. Bir danışmanla yardım edin. Stratejiye göre, bir durdurma tetiklenirse, danışman bunu bir sonraki çekime eklemelidir (puan sayısı)
kimliğe göre tarihten, ancak bir nedenden dolayı eklemiyor.

Kodda yanlış olan ne?

minimum karla çalışmak için hem stop hem de alma'ya belirli bir değere spread eklemek yeterlidir. Daha doğrusu aritmetik serinin toplamı * spread (kaç spread kaybolur, o kadar artar). Sadece aralığı bir günden fazla artırmayın.

en iyi seçenek, ilk durdurma değerini noktalar olarak veya OrderMagic veya Comment'de art arda arıza sayısını depolamaktır. Genel olarak, danışmanın kendisi emirleri / pozisyonları hakkında her şeyi hatırlamalı ve bir kez daha terminale (ve sunucuya) tekrar sormamalıdır.

 
Maxim Kuznetsov :

minimum karla çalışmak için hem stop hem de alma'ya belirli bir değere spread eklemek yeterlidir. Daha doğrusu aritmetik serinin toplamı * spread (kaç spread kaybolur, o kadar artar). Sadece aralığı bir günden fazla artırmayın.

en iyi seçenek, ilk durdurma değerini noktalar olarak veya OrderMagic veya Comment'de art arda arıza sayısını depolamaktır. Genel olarak, danışmanın kendisi emirleri / pozisyonları hakkında her şeyi hatırlamalı ve bir kez daha terminale (ve sunucuya) tekrar sormamalıdır.

bu yüzden nedense emirlerini hatırlamıyor ve tarihte görmüyor. koda göre olması gerekir, ama aslında onu görmüyor. Yardım edebilir misin? kaynak kodu daha önce yayınlandı
 

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ı...
Ancak derleyici uyarıları şunları söylüyor:

'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"?




 
SGarnov :

hayır. öncekileri eklemeye gerek yok. sadece danışmanın başlamasıyla.

Zarar Durdurma katsayısı 2'ye eşitse, EA her zaman yalnızca 4 senaryo uygulayacaktır.

A) almak

B) + 1 durak al

C) + 2 durak al

D) 3 durak

danışmanın işi sonlandırıldı

Tamam deneyeceğim.
 

Bu mesajın kime gönderildiğini bilmesem de. Opak bir panel oluşturamıyorum. OBJ_BITMAP_LABEL , OBJ_RECTANGLE_LABEL işlevleri, yeni nesneleri süslemek veya oluşturmak için tasarlanmıştır. Ancak şeffaf olmama seçeneğine sahip değiller. Belki de dili tam olarak incelemedim veya bu yaratıcıların bir eksikliği. Ön planda oluşturulan nesneler kontrol paneli aracılığıyla görünür. Farklı yapabilirsiniz, ancak protsik'i yükleyecektir. Nasıl yapılacağını bilen varsa lütfen söylesin.

 
MakarFX :
Tamam deneyeceğim.

Daha kolay olsun diye benim kaynak kodumu al, mantık onda çalışıyor, anlattığım sorun dışında tam anlamadım, kafam karışıyor ama bir anlamı yok.

Neden: