"Yeni Başlayanlar için MQL5’te Uzman Danışman Yazmak İçin Adım Adım Açıklamalı Kılavuz" makalesi için tartışma - sayfa 17

 
Çok güzel! Teşekkür ederim!
 

Dosyayı indirdim ve kodda hata ayıkladım ve bu uyarıyı gösterdi birisi bana bu konuda yardımcı olabilir mi?


'OrderSend' in dönüş değeri kontrol edilmeli


 

Merhaba, ben bir acemiyim ve ben de Robotu test ediyorum

Bunu deneyin:

// OrderSend(mrequest,mresult);

bool res=OrderSend(mrequest,mresult);

// sonuç kodunu al

if(res && (mresult.retcode==10009 || mresult.retcode==10008)) //Request tamamlandı veya sipariş verildi

{

Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");

}

başka

{

Alert("Satın alma emri talebi tamamlanamadı -hata:",GetLastError());

ResetLastError();

geri dön;

}

Eğer yanılıyorsam, lütfen beni düzeltin!

Araştırma kaynağı: https://www.mql5.com/en/forum/23663

return value of 'OrderSend' should be checked
return value of 'OrderSend' should be checked
  • 2014.05.03
  • www.mql5.com
Hi ! I'm wondering how to do that ...:/ the warning appeared @ the last update...
 

Hata ayıklama yaparken, siparişi gönderdiğimde her zaman bir hata alıyorum. Kodumdan kaynaklandığını düşündüm, ancak mql5 dosyasını indirmek için test ettiğimde bile bana hata veriyor.



 
northedan:

Hata ayıklama yaparken, siparişi gönderdiğimde her zaman bir hata alıyorum. Kodumdan kaynaklandığını düşündüm, ancak mql5 dosyasını indirmek için test ettiğimde bile bana bir hata veriyor.



Sanırım örnek para birimlerinde, bu yüzden 0.1 olan lot değişkeni testiniz için uygun değil, şu şekilde değiştirmeyi deneyin (mrequest.volume değişkenini değiştirerek):


double minSymbolLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);

mrequest.action = TRADE_ACTION_DEAL; // anında emir gerçekleştirme

mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // en son satış fiyatı

mrequest.sl = NormaliseDouble(latest_price.ask - STP*_Point,_Digits); // Zararı Durdur

mrequest.tp = NormaliseDouble(latest_price.ask + TKP*_Point,_Digits); // Kar Al

mrequest.symbol = _Symbol; // para birimi çifti

mrequest.volume = minSymbolLot; // işlem yapılacak lot sayısı

mrequest.magic = EA_Magic; // Sipariş Sihir Numarası

mrequest.type = ORDER_TYPE_BUY; // Satın Alma Emri

mrequest.type_filling = ORDER_FILLING_FOK; // Sipariş yürütme türü

mrequest.deviation=100;

 
Bu EA'yı mini endeksler veya mini dolarlar için kullanıp kullanamayacağımı bilen var mı?
 
Sella170:
Bu EA'yı mini endeksler veya mini dolarlar için kullanıp kullanamayacağımı bilen var mı?

Stratejiyi anladınız mı? Risklerin farkında mısınız? SL ve TP seviyelerini analiz ettiniz mi? Kullanılan teknik göstergeleri biliyor musunuz? Bunları nasıl parametrelendireceğinizi biliyor musunuz? Her varlık için değişkenleri nasıl özelleştireceğinizi biliyor musunuz (WIN ve WDO)?

Kodun kendisi herhangi bir varlık için geliştirilmiştir ve bunu "_Symbol" ve herhangi bir grafik zamanı için "_Period" aracılığıyla tanımlayabilirsiniz.

Şimdi EA'yı çalıştırdığınızda ne yaptığınızı bilmeniz önemlidir. Bunu yapmayı seçerseniz, araca hakim olana ve borsayı daha iyi anlayana kadar yalnızca demo hesaplar üzerinde çalışmanızı öneririm.

[ ]'s

 

Beyler,

Aynı anda birden fazla siparişin açılmasıyla ilgili bir hata yaşıyorsanız, bu basit ve hızlı bir şekilde değiştirilmiş bir koddur.

Bu kodu değiştirin: 167 -177 satırından

   if(PositionSelect(_Symbol)==true) // açılmış bir pozisyonumuz var
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Bu bir Alış
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Bu bir Satış
        }
     }

bununla:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Bu bir Alış
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Bu bir Satış
           }
        }
      }

Teşekkürler @Samuel Olowoyo

 
Korobejnik:

Lütfen sorunun nasıl çözüleceğini tavsiye edin. Uzman Danışman, satın almak için arka arkaya birkaç pozisyon açar, aynı şey satış için de geçerlidir.

Uzman Danışman, kodda bir kontrol olmasına rağmen, halihazırda açık Alış ve Satış pozisyonları olduğunu görmez ve yenilerini açar.

zaten açık olan pozisyonlar için. Kontrol bazı nedenlerden dolayı çalışmıyor.

Buradaki trol moderatörlerden yardım gelmediği için cevabı İngilizce forumdan kopyalayacağım:

Arkadaşlar, aynı anda açılan birkaç emirle ilgili bir hatanız varsa, bu basit, hızlı değiştirilebilir bir koddur. Bu kodu değiştirin: satır 167'den -177'ye

   if(PositionSelect(_Symbol)==true) // açık bir pozisyonumuz var
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Bu bir Alış
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Bu bir Satış
        }
     }

Bununla:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Bu bir Alış
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Bu bir Satış
           }
        }
      }
 
Locus_Neminis:

Buradaki trol moderatörlerden yardım alamadığım için cevabı İngilizce forumdan kopyalayacağım:

Arkadaşlar, aynı anda birden fazla siparişin açılmasıyla ilgili bir hata yaşıyorsanız, bu basit ve hızlı bir şekilde değiştirilebilir bir koddur. Bu kodu değiştirin: satır 167'den -177'ye

Bununla:

Bu yardımcı olmaz. Profilimde bununla ilgili bir başlık var. Orada sorunun nedeni ve çözümü var.
Trolleri anlamıyorum.