Uzman Danışmanları test ederken: Exp_TEMA.mq5, "Farklı enstrümanlarda işlem yapan Uzman Danışman Oluşturma" makalesinden, Told[] Tnew[1] ifadeleri aşağıdaki değerleri alır: Told[] İfade değerlendirilemedi Tnew[1] Geçersiz dizi aralığı.
ve My_First_EA.mq5, makaleden: "Yeni Başlayanlar için MQL5 Uzman Danışmanları Yazmak için Adım Adım Kılavuz", ifade New_Time[1] değeri alır: Geçersiz dizi aralığı
İfade değerleri değerlendirilemedi, Geçersiz dizi aralığı ne anlama geliyor ve Expert Advisors sonuçlarını nasıl etkiliyor?
Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Zaten forumun başka bir başlığında Tnew hakkında konuşmuştum, görünüşe göre geliştiricilerden bir yoruma ihtiyacım vardı :)
Lütfen koşula göre sadece bir anlaşmayı nasıl açacağımı söyle. Kodumla, terminal bu koşulda birkaç fırsat açar, ancak yalnızca bir tanesine ihtiyaç vardır.
if (Sell_Signal) { mrequest.price = NormalizeDouble (latest_price.bid, _Digits ); // последняя цена Bid mrequest.sl = NormalizeDouble (latest_price.bid + STP* _Point , _Digits ); // Stop Loss mrequest.tp = NormalizeDouble (latest_price.bid - TKP* _Point , _Digits ); // Take Profit mrequest.type= ORDER_TYPE_SELL ; // ордер на продажу //--- отсылаем ордер OrderSend (mrequest,mresult); }
Sonuç bu resim:
Bu şartlarla işlem yapılıp yapılmadığı nasıl kontrol edilir? Denedim çalışmıyor:
// в этом цикле поочередно перебираем все открытые позиции for (i= 0 ;i< PositionsTotal ();i++) { // выбираем позиции только по "нашему" инструменту if ( Symbol ()== PositionGetSymbol (i)) ... }
Lütfen koşula göre sadece bir anlaşmayı nasıl açacağımı söyle. Kodumla, terminal bu koşulda birkaç fırsat açar, ancak yalnızca bir tanesine ihtiyaç vardır.
Sonuç bu resim:
Bu şartlarla işlem yapılıp yapılmadığı nasıl kontrol edilir? Denedim çalışmıyor:
Ve PositionSelect gibi harika bir küçük şey varsa, bir döngüde bir arama düzenlemek ne için?
Sadece ilgilendiğimiz enstrüman için bir pozisyonun olup olmadığını kontrol ediyoruz ve true dönerse sakince konyak içip puro içebiliriz... :)
not
Ancak anladığım kadarıylaPositionSelect olmadanPositionGetString çalışmamalıdır. Tüm açık pozların sembollerini bilmemize gerek yok, değil mi?
Ve PositionSelect gibi harika bir küçük şey varsa, bir döngüde bir arama düzenlemek ne için?
Sadece ilgilendiğimiz enstrüman için bir pozisyonun olup olmadığını kontrol ediyoruz ve true dönerse sakince konyak içip puro içebiliriz... :)
not
Ancak anladığım kadarıylaPositionSelect olmadanPositionGetString çalışmamalıdır. Tüm açık pozların sembollerini bilmemize gerek yok, değil mi?
Bu kod, açık bir pozisyonun varlığını dikkate alır:
if (Buy_Signal && PositionSelect ( Symbol ())==false) { mrequest.type = ORDER_TYPE_BUY ; // ордер на покупку mrequest.price = NormalizeDouble (latest_price.ask, _Digits ); // последняя цена ask mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit OrderSend (mrequest,mresult); // отсылаем ордер }
Ancak Buy_Signal koşulu sağlandığı takdirde pozisyon açmaya devam eder. Sell_Signal koşulu oluşmadan önce Buy_Signal pozisyonlarını açmayı durdurmam gerekiyor. Bunu şu şekilde uygulamaya çalışıyorum:
Bu kod, açık bir pozisyonun varlığını dikkate alır:
Ancak Buy_Signal koşulu sağlandığı takdirde pozisyon açmaya devam eder. Sell_Signal koşulu oluşmadan önce Buy_Signal pozisyonlarını açmayı durdurmam gerekiyor. Bunu şu şekilde uygulamaya çalışıyorum:
gitmez.
Neden tam olarak bu kod? Büyük bir esneme ile bile, tanıtmak zorunda olduğum şeye benzemiyor (genelde orada her şeyin doğru olduğundan şüpheliyim)
if (Buy_Signal && PositionSelect ( Symbol ())==false)
{
mrequest.type = ORDER_TYPE_BUY ; // ордер на покупку
mrequest.price = NormalizeDouble (latest_price.ask, _Digits ); // последняя цена ask
mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss
mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit OrderSend (mrequest,mresult); // отсылаем ордер
}
Bu kod ve üstü kapatılana kadar bir pozisyon açmaz, ancak koşul sağlanırsa bir sonraki çubukta kapandıktan sonra tekrar açılır. Ben şu şekilde uyguladım:
bool BuyOne = true, SellOne = true; // только один ордер. глобальные переменные
if (Buy_Signal && // покупаем если есть сигнал на покупку PositionSelect ( Symbol ())==false && // ордер закрыт BuyOne) // при условии на покупку ставим только один ордер { mrequest.type = ORDER_TYPE_BUY ; // ордер на покупку mrequest.price = NormalizeDouble (latest_price.ask, _Digits ); // последняя цена ask mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit OrderSend (mrequest,mresult); // отсылаем ордер BuyOne = false; // на покупку только один ордер SellOne = true; // меняем флаг одного ордера на продажу }
Teşekkür ederim! Bütün istekleri dikkate aldı. Şimdi her şey çalışıyor. Danışman yayın için gönderdi. Ayrıca kodda değişiklik yapabilirsiniz. Baştan çıkarmanın sınırı yoktur)))
Uzman Danışmanları test ederken:
Exp_TEMA.mq5, "Farklı enstrümanlarda işlem yapan Uzman Danışman Oluşturma" makalesinden, Told[] Tnew[1] ifadeleri aşağıdaki değerleri alır:
Told[] İfade değerlendirilemedi
Tnew[1] Geçersiz dizi aralığı.
ve My_First_EA.mq5, makaleden: "Yeni Başlayanlar için MQL5 Uzman Danışmanları Yazmak için Adım Adım Kılavuz", ifade
New_Time[1] değeri alır: Geçersiz dizi aralığı
İfade değerleri değerlendirilemedi, Geçersiz dizi aralığı ne anlama geliyor ve Expert Advisors sonuçlarını nasıl etkiliyor?
Told - boyutu olmayan boş bir dizi
Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Told - boyutu olmayan boş bir dizi
Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Lütfen koşula göre sadece bir anlaşmayı nasıl açacağımı söyle. Kodumla, terminal bu koşulda birkaç fırsat açar, ancak yalnızca bir tanesine ihtiyaç vardır.
Sonuç bu resim:
Bu şartlarla işlem yapılıp yapılmadığı nasıl kontrol edilir? Denedim çalışmıyor:
Lütfen koşula göre sadece bir anlaşmayı nasıl açacağımı söyle. Kodumla, terminal bu koşulda birkaç fırsat açar, ancak yalnızca bir tanesine ihtiyaç vardır.
Sonuç bu resim:
Bu şartlarla işlem yapılıp yapılmadığı nasıl kontrol edilir? Denedim çalışmıyor:
Ve PositionSelect gibi harika bir küçük şey varsa, bir döngüde bir arama düzenlemek ne için?
Sadece ilgilendiğimiz enstrüman için bir pozisyonun olup olmadığını kontrol ediyoruz ve true dönerse sakince konyak içip puro içebiliriz... :)
not
Ancak anladığım kadarıyla PositionSelect olmadan PositionGetString çalışmamalıdır. Tüm açık pozların sembollerini bilmemize gerek yok, değil mi?
Ve PositionSelect gibi harika bir küçük şey varsa, bir döngüde bir arama düzenlemek ne için?
Sadece ilgilendiğimiz enstrüman için bir pozisyonun olup olmadığını kontrol ediyoruz ve true dönerse sakince konyak içip puro içebiliriz... :)
not
Ancak anladığım kadarıyla PositionSelect olmadan PositionGetString çalışmamalıdır. Tüm açık pozların sembollerini bilmemize gerek yok, değil mi?
Bu kod, açık bir pozisyonun varlığını dikkate alır:
Ancak Buy_Signal koşulu sağlandığı takdirde pozisyon açmaya devam eder. Sell_Signal koşulu oluşmadan önce Buy_Signal pozisyonlarını açmayı durdurmam gerekiyor. Bunu şu şekilde uygulamaya çalışıyorum:
gitmez.Bu kod, açık bir pozisyonun varlığını dikkate alır:
Ancak Buy_Signal koşulu sağlandığı takdirde pozisyon açmaya devam eder. Sell_Signal koşulu oluşmadan önce Buy_Signal pozisyonlarını açmayı durdurmam gerekiyor. Bunu şu şekilde uygulamaya çalışıyorum:
gitmez.Neden tam olarak bu kod? Büyük bir esneme ile bile, tanıtmak zorunda olduğum şeye benzemiyor (genelde orada her şeyin doğru olduğundan şüpheliyim)
Ve şöyle bir şey girmek zorunda kaldım:
En kötüsü, her şey bir blokta düzenlenebilir
Neden tam olarak bu kod? Büyük bir esneme ile bile, tanıtmak zorunda olduğum şeye benzemiyor (genelde orada her şeyin doğru olduğundan şüpheliyim)
Ve şöyle bir şey girmek zorunda kaldım:
En kötüsü, her şey bir blokta düzenlenebilir
Bu kod ve üstü kapatılana kadar bir pozisyon açmaz, ancak koşul sağlanırsa bir sonraki çubukta kapandıktan sonra tekrar açılır. Ben şu şekilde uyguladım:
Teşekkür ederim! Bütün istekleri dikkate aldı. Şimdi her şey çalışıyor. Danışman yayın için gönderdi. Ayrıca kodda değişiklik yapabilirsiniz. Baştan çıkarmanın sınırı yoktur)))