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

 
trader781 :

Dur / 200 alırsa ne yapmalı

ancak

tp=NormalizeÇift((fiyat+(Kar Al*_Puan))),Rakamlar);

dolar-yen üzerinde 117.000 oranında 317.000 verecek

beklenen sonuç 117.200

Point()== 0,001 (USDJPY'de) ise, 200*0,001, 0,2'ye eşittir

Şimdi, 0.2'ye 117,0 eklersek, 117,2 elde ederiz.

Peki "haksızlık" nerede?

 
Artyom Trishkin :

Point()==0,001 (USDJPY'de) ise, 200*0,001 0,2'ye eşittir

Şimdi, 0.2'ye 117,0 eklersek, 117,2 elde ederiz.

Peki "haksızlık" nerede?

117+(200*_Point) değerinin 117.200 vermesi bekleniyor

normalde eurodolar üzerinde test edilir

Vitaly yukarıda yazdı, teşekkürler, o zaman yukarıda sürprizlere bakacağım

Yol boyunca bulundu

Bence bu bir ara algoritma olarak oldukça iyi, şimdi bu anları bir şekilde filtrelememiz gerekiyor.

https://www.mql5.com/ru/charts/6351907/audjpy-m5-metaquotes-software-corp

График AUDJPY, M5, 2017.01.02 22:49 UTC, MetaQuotes Software Corp., MetaTrader 4, Demo
График AUDJPY, M5, 2017.01.02 22:49 UTC, MetaQuotes Software Corp., MetaTrader 4, Demo
  • www.mql5.com
Символ: AUDJPY. Период графика: M5. Брокер: MetaQuotes Software Corp.. Торговая платформа: MetaTrader 4. Режим торговли: Demo. Дата: 2017.01.02 22:49 UTC.
 
trader781 :

117+(200*_Point) değerinin 117.200 vermesi bekleniyor

...

Eh, o kadar çok veriyor ki ... Pekala, hesabı gösterdim. Yoksa çoklu para biriminiz var ve "yerel olmayan" bir sembolden veri mi alıyorsunuz?

Ardından Point() ve Digits() yerine SymbolInfoDouble() ve (int)SymbolInfoInteger() kullanın

 
Artyom Trishkin :

Eh, o kadar çok veriyor ki ... Pekala, hesabı gösterdim. Yoksa çoklu para biriminiz var ve "yerel olmayan" bir sembolden veri mi alıyorsunuz?

Ardından Point() ve Digits() yerine SymbolInfoDouble() ve (int)SymbolInfoInteger() kullanın

Teşekkürler işe yarıyor)))

Şu anda sipariş zincirine sonda eklemenin bir yolunu arıyorum

115.000'den 117.000'e kadar 200 adımda seçilen 10 sipariş

her parti bir öncekinden x fazladır

amaç, (ortalama fiyat) + (y*_Puan) temelinde tüm sipariş grubunu takip etmektir.

İzleyen bende var, soru tüm paketin ortalama fiyatına nasıl ekleneceği ve lotlara bağlı olarak nasıl hesaplanacağı.

 
trader781 :

Teşekkürler işe yarıyor)))

Şu anda sipariş zincirine sonda eklemenin bir yolunu arıyorum

115.000'den 117.000'e kadar 200 adımda seçilen 10 sipariş

her parti bir öncekinden x fazladır

amaç, (ortalama fiyat) + (y*_Puan) temelinde tüm sipariş grubunu takip etmektir.

İzleyen bende var, soru tüm paketin ortalama fiyatına nasıl ekleneceği ve lotlara bağlı olarak nasıl hesaplanacağı.

Evrensel bir tavsiye: Sıfırdan programlamayı öğrenin. O zaman böyle sorular olmayacak, programlama kolay değil.

Ve özünde soru şu: Bir döngüde TÜM siparişleri gözden geçirmeniz, yalnızca "gerekli" olanları seçmeli ve bunları değiştirmelisiniz. Ancak, seçilen iş sırasını değiştirme olasılığı çok yüksek olduğundan, bu konuda çok dikkatli olmanız gerekir.

 
Alexey Viktorov :

Evrensel bir tavsiye: Sıfırdan programlamayı öğrenin. O zaman böyle sorular olmayacak, programlama kolay değil.

Ve özünde soru şu: Bir döngüde TÜM siparişleri gözden geçirmeniz, yalnızca "gerekli" olanları seçmeli ve bunları değiştirmelisiniz. Ancak, seçilen iş sırasını değiştirme olasılığı çok yüksek olduğundan, bu konuda çok dikkatli olmanız gerekir.

Yüksek değil, ancak %100 Şu anda sonuncuyu takip ediyorum ve geri kalanı duraklatılıyor, ancak şema yanlış ve daha iyisini yapmak istiyorum
 

Herkese iyi günler, MA'ya dayalı bir danışman yazdı. (KODU AŞAĞIDA BULUNMAKTADIR) Kısa bir süre önce MQL4'te yazmaya başladım ve basit bir tane ile başlamaya karar verdim. Bu yüzden neyi yanlış yaptığımı bilmek istiyorum. Danışmanın özü basittir: iki veya üç MA kesiştiğinde bir uyarı verin (YÖNTEM'e bağlı olarak: Agresif=iki MA çapraz, Muhafazakar=3 MA çapraz)... İşte bu kadar. Pazara kendim gireceğim. Expert Advisor'a iki fonksiyon yazdım: Agresif - bu, en hızlı iki MA'nın ve Muhafazakar'ın basit bir kesişiminde bir sinyaldir, iki hızlı MA'nın kesişiminde en yavaş olanı da dikkate alınmalıdır (yani, bir trend yönünde sinyal). Sorun, danışmanın yalnızca BİR uyarı vermesi (başlatıldığında veya zaman çerçevesi değiştiğinde) ve sonraki tüm sinyallerde sessiz olmasıdır! Bana neyin yanlış olduğunu söylersen minnettar olurum. Tüm olaylar için MQL4 kurallarına göre belirtilen işlevler. Elbette On Tick olayında işlevsiz her şeyi kayıt etmek mümkün olurdu, ancak işlevlerinçağrılmasının kolay olması için işlevleri ayrı ayrı kaydetmek istiyorum ve ayrıca yeni "filtreler" işlevleri eklemek istiyorum. zaman.

kod

================================================= ============================================

extern bool Yöntem=yanlış; // yöntem seçimi: Muhafazakar veya Agresif

extern int Zaman_Çerçevesi=1;//Zaman Çerçevesi

input bool Yöntem=yanlış; //Muhafazakar-DOĞRU | Agresif-YANLIŞ

harici int FastMA_Parametre=5;

harici int MidMA_Parameter=8;

harici int SlowMA_Parameter=18;

harici int TrendMA=163;

extern bool DemarkGo=yanlış;

harici intDemperiod=4;

int rez;// MA kesişimi aşağıysa, rez=-1. yukarı ise rez=1.

//+------------------------------------------- --------------------+

// MA'yı başlat

double FastMA=iMA(Symbol(),Time_Frame,FastMA_Parameter,0,3,0,0);// Hızlı MA

double MiddiMA=iMA(Symbol(),Time_Frame,MidMA_Parameter,0,3,0,0);// Ortalama MA

double SlowMA=iMA(Symbol(),Time_Frame,SlowMA_Parameter,0,1,0,0); yavaş MA


//+------------------------------------------- --------------------+

int OnInit()

{

öz = 0;

dönüş(INIT_SUCCESSED);

}

//=====================================

//------------------------------------------------ ------------------------------

geçersiz OnDeinit(const int nedeni)

{



}

//===========================================

//+---------------------Metod=true ise muhafazakar sinyal işlevi-------------------------- --------------------+

int Muhafazakar()

// 3 satırın yukarı doğru kesişip kesişmediğini kontrol edin

{

if (Yöntem==doğru)


{

if(FastMA>MiddiMA&&MiddiMA>SlowMA&&rez<=0)

{

Alert(Symbol(),Time_Frame," ----UP----.Tutarlı");

öz=1;

Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," "," SlowMA ",SlowMA," rez ",rez);

dönüş(ler);


}


// 3 satırın aşağı doğru kesişip kesişmediğini kontrol edin

if(FastMA<MiddiMA&&MiddiMA<SlowMA&&rez>=0)

{

Alert(Symbol(),Time_Frame," ----DOWN----.Tutarlı");

öz=-1;

Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," "," SlowMA ",SlowMA," rez ",rez);

dönüş(ler);


}

}

dönüş(ler);

}

//==============================================

//++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++

Agresif sinyal fonksiyonu eğer

int Agresif()

// Yavaşlama olmadan 2 çizginin yukarı doğru kesişimini kontrol edin


{

if (Yöntem==yanlış)

{

if(FastMA>MiddiMA&&rez<=0)

{

Alert(Symbol(),Time_Frame," ----YUKARI----. Agresif");

öz=1;

Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," "," SlowMA ",SlowMA," rez ",rez);


}


// 2 doğrunun aşağı doğru kesişimi yavaşlamadan kontrol ediliyor

if(FastMA<MiddiMA&&rez>=0)

{

Alert(Symbol(),Time_Frame," ----DOWN----. Agresif");

öz=-1;

Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," "," SlowMA ",SlowMA," rez ",rez);

}

}

dönüş(ler);

}

 
Олег :


Oh, bence kendin bitirebilirsin
Dosyalar:
6645.mq4  7 kb
 
trader781 :
Yüksek değil, ancak %100 Şu anda sonuncuyu takip ediyorum ve geri kalanı duraklatılıyor, ancak şema yanlış ve daha iyisini yapmak istiyorum

Hayır, %100 değil. Yoksa başka bir şeyden mi bahsediyorsun.

Genel olarak, algoritma aşağıdaki gibidir:

Tüm siparişler arasında bir döngü düzenleyin.

Onunla çalışmak için bir sonraki siparişi seçersiniz.

Bu sıranın gerekli olup olmadığını kontrol edersiniz... Değilse, döngünün bir sonraki yinelemesi...

"Gerekli" ise, değişiklik için uygun olup olmadığını kontrol edersiniz. Basit bir karşılaştırmayla, StopLoss seviyesinden ne kadar uzakta

Mesafe yeterliyse, sırayı değiştirirsiniz.


Yani, tüm siparişler arasında bir döngünün olduğu bir modifikasyon fonksiyonunuz varsa ve döngü çağrılmadan önce de çalışıyorsa, seçilen sipariş değiştirilecektir ...

 
Alexey Viktorov :

Hayır, %100 değil. Yoksa başka bir şeyden mi bahsediyorsun.

Genel olarak, algoritma aşağıdaki gibidir:

Tüm siparişler arasında bir döngü düzenleyin.

Onunla çalışmak için bir sonraki siparişi seçersiniz.

Bu sıranın gerekli olup olmadığını kontrol edersiniz... Değilse, döngünün bir sonraki yinelemesi...

"Gerekli" ise, değişiklik için uygun olup olmadığını kontrol edersiniz. Basit bir karşılaştırmayla, StopLoss seviyesinden ne kadar uzakta

Mesafe yeterliyse, sırayı değiştirirsiniz.


Yani, tüm siparişler için bir döngünün olduğu bir modifikasyon fonksiyonunuz varsa ve onu çağırmadan önce döngü de çalışıyorsa,seçilen sipariş değiştirilecektir ...

gerçek şu ki, zincirde HER ZAMAN bir tür lot ile kârsız siparişler olacak ve bunların da diğerlerinin pahasına izlenmesi gerekecek. Tetik - kapanma zamanı. En az biri kapalıysa, tüm zincir örtülür. Bu nedenle soru, seçilen tüm fiyatlar için tam olarak ortalama fiyatın nasıl izleneceğidir.
Neden: