Sormak! - sayfa 82

 

Codersguru lütfen yardım edin

kodlayıcılargurusu

sıfır çizgisini geçerken boğa gücü göstergesi için sesli bir uyarı yazmaya çalışıyorum. MQL ile hiçbir deneyimim yok ama diğer birkaç göstergeden bazı kodları bir araya getirdim. kodu derlerken hata yok. Gösterge uyarısı çalışmıyor olsa da, lütfen onu düzeltmek için yardımcı olabilir misiniz ya da Boğa Ayıları sıfır çizgisini geçtiğinde bu sesli uyarı için yeni bir kod koyabilir misiniz?

şimdiden çok teşekkürler

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

//| |

//| |

//| |

//| |

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

#özellik telif hakkı "forex-tsd"

#özellik bağlantısı "https://www.forex-tsd.com"

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Kireç

#özellik göstergesi_color2 Kızıl

#özellik göstergesi_level1 0

çift ExtMapBuffer1[];

çift ExtMapBuffer2[];

çift valbull[];

çift valbear[];

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

Gösterge Tamponları(3);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexDrawBegin(0,2);

SetIndexLabel(0,"ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);

SetIndexDrawBegin(1,2);

SetIndexLabel(1,"ExtMapBuffer2");

//---- göstergeler

//----

dönüş(0);

}

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

//| Müşteri göstergesi sıfırlama işlevi |

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

int tanım()

{

//---- YAPILACAKLAR: kodunuzu buraya ekleyin

//----

dönüş(0);

}

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

//| Özel gösterge yineleme işlevi |

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

int başlangıç()

{

int shift,counted_bars=IndicatorCounted();

çift valbear[], valbull[];

//---- olası hataları kontrol et

if(counted_bars<0) return(-1);

//---- son sayılan çubuk yeniden sayılacak

if(counted_bars>0) counted_bars--;

shift=Bars-1;

while(shift>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);

if (valbull[shift]>0)

{

ExtMapBuffer1[shift]=valbull[shift];

ExtMapBuffer2[shift]=0;

}

başka

{

ExtMapBuffer2[shift]=valbull[shift];

ExtMapBuffer1[shift]=0;

}

vardiya--;//

}

//---- uyarı modülü

#define SIGNAL_BAR 1

//---- Son bar zamanının bulunduğu statik değişkenler

//---- ve son uyarı yönü kaydedilir

static int PrevSignal = 0, PrevTime = 0;

//---- Analiz edilmek üzere seçilen çubuk sıfır çubuk değilse,

// uyarıyı kontrol etmenin bir anlamı yok

//---- birkaç defa. Yeni bir çubuk oluşmaya başlamazsa, çıkın.

if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )

dönüş(0);

//---- Bu çubuğun işaretli olduğunu işaretleyin

ÖncekiZaman = Zaman[0];

if(ÖncekiSinyal <= 0)

{

if(valbull[SIGNAL_BAR] > 0 )

{

ÖncekiSinyal = 1;

Alert("BullChannell_positiv (", Symbol(), ", ", Period(), ") - SATIN AL!!!");

}

}

if(ÖncekiSinyal >= 0)

{

if(valbull[SIGNAL_BAR] < 0 )

{

ÖncekiSinyal = -1;

Alert("BearChannell_negativ (", Symbol(), ", ", Period(), ") - SAT!!!");

}

}

//---- uyarı modülünü sonlandır

//----

dönüş(0);

}

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

 

Açılan siparişler ile bekleyen siparişler arasında ayrım yapmak için işlev nasıl kullanılır?

Açılan siparişler ile bekleyen siparişler arasında ayrım yapmak için işlev nasıl kullanılır?

Teşekkürler.

 
vntb:
Açılan siparişler ile bekleyen siparişler arasında ayrım yapmak için işlev nasıl kullanılır? Teşekkürler.

OrderType() öğesini kontrol edin:

OrderType() == OP_BUY //BuyOrder (açıldı)

OrderType() == OP_SELL //Satış Emri (açıldı)

OrderType() == OP_BUYLIMIT //Satın alma limiti Sipariş (beklemede)

OrderType() == OP_SELLLIMIT //Satış limiti Emir (beklemede)

OrderType() == OP_BUYSTOP //Satın Al Durdur Siparişi (beklemede)

OrderType() == OP_SELLSTOP //Satış Durdur Emir (beklemede)

 

EA'da iMAOnArray

Merhaba millet,

Göstergelerdeki (örneğin, CCI, Force, RSI) hareketli ortalamaların kesişimlerine dayalı bir EMA yapmaya çalışıyorum. Ancak, bir diziyi nasıl bildireceğimi ve değişken yapmak için iMAOnArray işlevini nasıl çalıştıracağımı anlayamıyorum.

Örneğin, aşağıdaki kodda, grafik için RSI verilerini bir arabelleğe koymak ve ardından, işlemleri tetiklemek için hareketli bir ortalama üretmek için verileri kullanmak istiyorum. Neyi yanlış yapıyorum?

Herhangi bir yorum veya öneri için teşekkürler.

sonbahar

çift RSI[];

ArrayResize(RSI,Barlar);

ArraySetAsSeries(RSI,doğru);

for(int i=Barlar; i>=0; i--)

{

RSI = (iRSI(NULL,0,RSIPerio,RSIPrice,i));

}

double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);

 

Merhaba

uyarı ile adım momentumu olan var mı?

Bence harika bir gösterge olacak

Teşekkürler

Saygılarımızla!

 

Seviyeye göre ticareti kapat

Merhaba, fiyat belirli bir seviyeye ulaştığında ticareti nasıl kapatacağımı bilmek istiyorum. MA çizgisinin 55 puan üstünde diyelim. MA'yı OrderSend'in TakeProfit bölümüne dahil etmeye çalıştım, ancak test cihazı EA'mı "geçersiz bir şey" hata mesajıyla reddetti. Teşekkür ederim.

 
Sendra:
Merhaba, fiyat belirli bir seviyeye ulaştığında ticareti nasıl kapatacağımı bilmek istiyorum. MA çizgisinin 55 puan üzerinde diyelim. MA'yı OrderSend'in TakeProfit bölümüne dahil etmeye çalıştım, ancak test cihazı EA'mı "geçersiz bir şey" hata mesajıyla reddetti. Teşekkür ederim.

Her şeyden önce hareketli ortalamayı alın:

çift MA = iMA(...);

sonra TakeProfit'i şu şekilde hesaplayın:

çift TP = MA + (55*Puan); // veya TP = MA-(55*Nokta); Satış durumunda.

 

İşe yarıyor!!

Hey, teşekkürler, CodersGuru. Çalışıyor. Ama aynı zamanda şunu da düşündürüyor: Eğer statik olmayan belirli bir seviyeye kadar kâr al hareket edebilirsem, aynı şeyi stoploss'umla da yapabilirim (izleme durdurucu kullanmadan).

Ve denedim.

İşe yaradı, kötü sonuç verdi. Yani, sanırım iz bırakma ile yapmak zorundayım. Bu doğru mu? (Dikkat edin, henüz izleme durdurmayı nasıl kodlayacağımı öğrenmedim.)

teşekkür ederim.

 

Dahili takip durdurma

Sendra:
Hey, teşekkürler, CodersGuru. Çalışıyor. Ama aynı zamanda şunu da düşündürüyor: Eğer statik olmayan belirli bir seviyeye kadar kâr al hareket edebilirsem, aynı şeyi stoploss'umla da yapabilirim (izleme durdurucu kullanmadan).

Ve denedim.

İşe yaradı, kötü sonuç verdi. Yani, sanırım iz bırakma ile yapmak zorundayım. Bu doğru mu? (Dikkat edin, henüz izleme durdurmayı nasıl kodlayacağımı öğrenmedim.)

teşekkür ederim.

Dahili bir son durak için şöyle bir şey yaptım: (bu uzun bir sipariş için örnektir) İşe yarıyor gibi görünüyor. Bu yardımcı olur umarım.

harici int Trailing_Stop=20;

statik çift Trailing_Long;

bool Read_Long_Open;

if (Uzun giriş kararınızı girin)

{

Burada Ordersend() işlevi

Read_Long_Open=true;

}

if (Read_Long_Open==true)

{

if(OrderSelect(T_1L, SELECT_BY_TICKET)==true)

{

Trailing_Long=OrderOpenPrice();

Print(" Trailing_Long =",Trailing_Long);

Read_Long_Open=yanlış;

}

}

if (Read_Long_Open==yanlış)

{

if (Trailing_Long < Teklif)

{

Trailing_Long=Teklif;

Print("Ayarlanmış Trailing_Long =",Trailing_Long);

}

}

if (Teklif <= Trailing_Long-Trailing_Stop*Puan)

{

OrderClose() işlevi

Print("Uzun Sipariş Kapandı");

}

 

teşekkürler

Merhaba Wolfe,

Kodunuzu denedim ama bunun yerine daha çok negatif sonucu aldım. Lütfen nedenini sormayın, çünkü cevabı ben de bilmiyorum. Dikkat edin, kodlamada hala vur-kaç aşamasındayım. Ama yine de teşekkürler, kodunuz benim için yeterli sonuçla kendiminkini yazmam için bana yeterli ilham verdi.

Teşekkürler.