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

 
vovan-gogan :
İnsanlar, yardım edin: Danışmanımda, yalnızca önceki mumun en düşük seviyesi önceki 40 mumun tüm en düşük değerlerinden daha düşük olduğunda bir Al pozisyonunun açılmasına dair bir şartım var. Soru: Önceki mumların en düşük seviyelerinin bu sıralaması nasıl uygulanır ve önceki mumun en düşük seviyesinin altında bir düşüş olup olmadığı nasıl anlaşılır? Şimdiden teşekkürler.
 int TotalBars = 40 ; // Общее количество свечей по которым нужно осуществлять перебор
double max= 0.0 ;
double min= 100.0 ;
for ( int n= 0 ; n<TotalBars; n++)
  {
   if (High[n]>max) max=High[n];
   if (Low[n]<min) min=Low[n];
  }
MessageBox ( "Maximum=" +max+ " Minimum=" +min);
 
langolier :

Ay teşekkür ederim!)
 
langolier :

Mmm... Bir problem var... Veriler her yeni tik ile ve sadece son 30 bar için güncellenmeli... Ama nedense veriler benim için saklanıyor.
 
sergeev :

Hatayı bulmaya yardım edin!


on
mamba5 18.08.2011 14:23

Black MACD stratejisine dayalı bir Uzman Danışman yazıyorum:


Döviz çifti: herhangi

Zaman aralığı: 15 ve üstü.

Göstergeler: EMA(3) EMA(18), RSI(14), MACD(12,26,9)

MACD göstergesinden sinyal hattını kaldırıyoruz, tüm göstergeleri Kapat fiyat göstergesine uyguluyoruz.

Giriş sinyali satın al: EMA(3) EMA'yı (18) aşağıdan yukarıya doğru keser, MACD'nin pozitif gitmesini bekleyin. RSI(14) 50 seviyesinin üzerindeyse, bir satın alma pozisyonu gireriz. Durdurma kaybı, son yerel minimumda ayarlanır. EMA'nın ters geçişinde ticaretten çıkıyoruz veya kendi yaklaşımımızı kullanıyoruz.

Satış sinyali: Ters durum: EMA(3) geçişi EMA(18) yukarıdan aşağıya, MACD'nin negatif olmasını bekleyin. RSI(14) 50 seviyesinin altındaysa satışa gireriz. Durdurma kaybı, son en yüksek değere ayarlanmıştır.


Kodu derlerken bir parantez eksik diyor. Uzun bir araştırmadan sonra olması gereken yeri bulmuş gibiydim, ancak hatayı düzelttikten sonra 20-30 yeni söve daha verildi. Bana nerede yanlış olduğunu söyle. ))) Kod ekteki dosyadadır.

Ekli dosyalar:
BlackvMACD.mq4 (5.21 KB) kaldır
Sabit derleme hataları. Stratejiyi uygulamak için algoritmanın doğruluğunu araştırmadım.
Dosyalar:
 
first_may :


Okuyun: https://book.mql4.com/ru/variables/arrays . Üç çift için geçerli olan iki boyutlu bir dizi düzenleyebildiğim ortaya çıktı: double Mas_d[3][2] = {1, 0, 2, 0, 3,0};

şunu akılda tutarak:

Mas_d[1][1] değeri örneğin AUDCAD çiftine karşılık gelir ve Mas_d[1][2] bu çiftin değeridir;

Mas_d[2][1] değeri örneğin AUDCHF çiftine karşılık gelir ve Mas_d[2][2] bu çiftin değeridir;

Mas_d[3][1] değeri örneğin AUDJPY çiftine karşılık gelir ve Mas_d[3][2] bu çiftin değeridir,

aynı zamanda dizi elemanları keneler arasındaki değerlerini korur. Ve sonra ihtiyacım olan kritere göre dizi elemanlarının değerlerini değiştirebileceğim. Ne demek istediğini doğru anladım mı? :)

Evet. Yaklaşım en iyisi olmayabilir, ancak herkes kendisi için seçer. Ve sonra gerekirse yükseltmeler, optimizeler! :))

Şu anda yaklaşımımı modernize ediyorum. Bazı durumlarda uygun değil! :D

 
MaxZ :

Evet. Yaklaşım en uygun olmayabilir, ancak herkes bunu kendisi için seçer. Ve sonra gerekirse yükseltmeler, optimizeler! :))

Şu anda yaklaşımımı modernize ediyorum. Bazı durumlarda uygun değil! :D

Acemiyim ve bir deneme Uzman Danışmanı yazmaya çalıştım, ancak derlerken "'\end_of_program' - bitiş dirseği '}' hatası veriyor C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3 ) "Yazdıklarımı korkunç olarak anlıyorum, lütfen söyleyin nerede hatalar var?

//+------------------------------------------- --------------------+
//| trsi01.mq4 |
//| Telif Hakkı © 2011, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2011, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

çift StopLoss=30;

çift TakeProfit=100;

çift Lot = 0.1;

dönüş(0);


int başlangıç()
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Puan,Ask+TakeProfit*Puan);
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Puan,Teklif Al-Kar*Puan);
{
dönüş(0);
{

 
acoman :

Acemiyim ve bir deneme Uzman Danışmanı yazmaya çalıştım, ancak derlerken "'\end_of_program' - bitiş dirseği '}' hatası veriyor C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3 ) "Yazdıklarımı korkunç olarak anlıyorum, lütfen söyleyin nerede hatalar var?

//+------------------------------------------- --------------------+
//| trsi01.mq4 |
//| Telif Hakkı © 2011, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2011, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

çift StopLoss=30;

çift TakeProfit=100;

çift Lot = 0.1;

dönüş(0);


int başlangıç()
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Puan,Ask+TakeProfit*Puan);
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Puan,Teklif Al-Kar*Puan);
{
dönüş(0);
{


Hata, ders kitabını baştan sona okumamış olmanızdır. Hiç açtıysanız.

Ancak şu bölümü kaçırdıkları açık: if - else koşullu ifadesi .

Daha da iyisi, ders kitabı kapağını baştan sona okuyun.

 
Teşekkür ederim, yapacağım. :) Lütfen bana belirli bir para birimi çifti için minimum durdurma kaybının ne olduğunu söyler misiniz? Diyelim ki bir çift EURAUD - burada 100 puandan daha az bir stop loss koyamazsınız, ancak geri kalanı için?
 
first_may :
Teşekkür ederim, yapacağım. :) Lütfen bana belirli bir para birimi çifti için minimum durdurma kaybının ne olduğunu söyler misiniz? Diyelim ki bir çift EURAUD - burada 100 puandan daha az bir stop loss koyamazsınız, ancak geri kalanı için?

https://book.mql4.com/en/appendix/marketinfo

MODE_STOPLEVEL on dört Pip cinsinden izin verilen minimum zararı durdur/kar al seviyesi
 

Örneğin 7 basamaktan ikili bir sayı nasıl oluşturulur? Ve sonra (kolaylık olması için) ondalık sayıya nasıl çevrilir?