Hareketi Ortalamaya göre Lot Değişikliği

 
double                                 Equty                        = AccountInfoDouble(ACCOUNT_EQUITY);
double                                 KademeliLot                  = (Equty / 500000/2);

CTrade Trade;

void OnTick()
  {

      double Ma_15Array[];
      int Ma_15 = iMA(_Symbol,PERIOD_M15,100,0,MODE_SMA,PRICE_CLOSE);
      CopyBuffer(Ma_15,0,0,3,Ma_15Array);
      
//------------------------------------------------------------------+
//EA ANA KOD BÖLÜMÜ                                                 |
//------------------------------------------------------------------+
   double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);

   int total_OpenPositions = GetTotalOpenPositions();
   if(total_OpenPositions == 0)
     {
      
      Trade.Buy(KademeliLot,_Symbol,Ask,0,Ask + (starting_TP * _Point),NULL);
      
      CheckTrailingTP(Ask);
     }
   else 
     {

      ulong latest_ticket = GetLatestTicketNumber();

      if(PositionSelectByTicket(latest_ticket) == true)
        {
         double position_open_price = PositionGetDouble(POSITION_PRICE_OPEN);
         double position_vol = PositionGetDouble(POSITION_VOLUME);

            if(Ask < (position_open_price - (minimum_Drop_inPrice*_Point))) //price drops by required amount
              {
              
               Trade.Buy(KademeliLot,_Symbol,Ask,0,Ask + (next_TP * _Point),NULL);
                              
               CheckTrailingTP(Ask);

              }
           }
     }

  } 
Lot miktarını hareketli ortalamaya göre nasıl uyarlayabilirim? Yani; Fiyat 200 hareketli ortalama üzerinde olduğunda KademeliLot k iki katı olsun istiyorum. 200'lük ortalama altına geçtiğinde eskisi gibi KademeliLot oranında açmaya devam etsin istiyorum. Bunu nasıl yapabilirim bir bilgisi olan varsa çok memnun olurum.
 
Yasar Sari:



Fiyat Ma_15 hareketli ortalamanın üzerine çıktığında lot miktarı 2 katı olsun istiyorum. Fiyat hareketli ortalamanın altına geçtiğinde Equty'in hesapladığı lot üzerinden devam etsin istiyorum. Yardımcı olur musunuz?

Sanırım bu kod parçası sadece buy işlemlerini örnek göstermek için , sell işlemleri için olan bölümü de vardır..

birden fazla çözüm yolu var , sizin kodların tamamını görmeden en basit ve ve sizin kod yapınıza uygun olan çözüm şöyle olabilir;


double                                 Equty                        = AccountInfoDouble(ACCOUNT_EQUITY);
double                                 EqutyLot                    = (Equty / 500000/2); // Öz Bakiyeye göre Lot

bu bölümün altına bir lotss tanımı ekleyin 

double lotss;
void OnTick()
  {
  
//-------------------------------------------------------------------------------
//MAIN EA CODE BEGINS HERE
//---------------------------------------------------------------------------
   double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);

//if we have no open position or order
   int total_OpenPositions = GetTotalOpenPositions();
   if(total_OpenPositions == 0)
     {

bu bölümün devamına aşağıdaki gibi bir önerme ilave edin

if(Ask>Ma_15) { lotss=2*EqutyLot }
if(Ask<=Ma_15) { lotss=EqutyLot }

devamında 

Trade.Buy(lotss,_Symbol,Ask,0,Ask + (starting_TP * _Point),NULL);
      
      CheckTrailingTP(Ask);
     }
 
Hocam çok teşekkürler dediklerinizi yaptım derlediğimde hata almadım ama EqutyLot 0.01 iken hiç 0.02 olmuyor hareketli ortalamanın üzerinde olmasına rağmen, sebebini anlamış değilim.
 

MQL5 in standert sınıfı  var aynı CTrade gibi 

CExpertMoney i de öğren

bende bu sınıftan para yönetim sınıfını geliştirdim hem geçmişi de inceliyor üst üste başarısız işlem olursa riski azaltıp daha az lota iniyor

MoneySizeOptimized.mqh  den sınıfı  alıp  işleme girmeden önce iki indikatör koşuluna  bağlı olarakta işlemin girleceği lot oranını  belirlemiştim

mql5 in sınıflarının tamamına hakim son derece stabil çalışıyor ve herşey düşünülmüş sen sadece geliştir

 
Mustafa Damgaci #:

MQL5 in standert sınıfı  var aynı CTrade gibi 

CExpertMoney i de öğren

bende bu sınıftan para yönetim sınıfını geliştirdim hem geçmişi de inceliyor üst üste başarısız işlem olursa riski azaltıp daha az lota iniyor

MoneySizeOptimized.mqh  den sınıfı  alıp  işleme girmeden önce iki indikatör koşuluna  bağlı olarakta işlemin girleceği lot oranını  belirlemiştim

mql5 in sınıflarının tamamına hakim son derece stabil çalışıyor ve herşey düşünülmüş sen sadece geliştir

Bunu ilk defa duydum hocam hemen inceleyeceğim indikatöre göre ayaralabilirsem harika olacak. Çok teşekkür ederim 🙏🏼

 
Mustafa Damgaci #:

MQL5 in standert sınıfı  var aynı CTrade gibi 

CExpertMoney i de öğren

bende bu sınıftan para yönetim sınıfını geliştirdim hem geçmişi de inceliyor üst üste başarısız işlem olursa riski azaltıp daha az lota iniyor

MoneySizeOptimized.mqh  den sınıfı  alıp  işleme girmeden önce iki indikatör koşuluna  bağlı olarakta işlemin girleceği lot oranını  belirlemiştim

mql5 in sınıflarının tamamına hakim son derece stabil çalışıyor ve herşey düşünülmüş sen sadece geliştir

Hocam bu modülleri nasıl kullanabileceğimize dair bir örnek veya klavuz var mı dün dediğinizden beri inceliyorum sanırım positionınfo.mqh den veri çekmemi falan istiyor sanırım. 

 
Yasar Sari #:

Hocam bu modülleri nasıl kullanabileceğimize dair bir örnek veya klavuz var mı dün dediğinizden beri inceliyorum sanırım positionınfo.mqh den veri çekmemi falan istiyor sanırım. 

CTrade

bu sınıfı kullanmayı öğrenmişsin işte aynı  şekilde kullan 

Expert\Money\  klasöründe 5 tane kalıp sınıf var

dikkat edersen ortak olan fonksiyonlar bunlar 

   virtual double    CheckOpenLong(double price,double sl);

   virtual double    CheckOpenShort(double price,double sl);

işleme girmeden check yapınca lot sayısını verirler 5 ini de karşılaştır 

CMoneySizeOptimized  myMoney diğer alalım örneğin

myMoney.CheckOpenLong(... ile işleme gireceğin lotu hesaplarsın 

bir modülde marjine göre birinde sabit riske göre birinde geçmiş zarar göre optimizasyon var

bu kısmı öğrendiğinde bunlara hesaplarken indikatörüde eklersin başta zor gelecektir çalışman lazım 

daha da geliştirdiğinde dinamik nesneler kullanırsın şimdilik   

CTrade

yi kullandığın gibi 

CMoneyFixedLot ile başlayabilirsin 

 virtual bool      ValidationSettings(void); 

kısmı   seni şu an zorlar başına // koy iptal et onun kodlarını şu aşamada gerekmiyor sana çok ilerde büyük hataları önlemek için gerekiyor 

 

positionınfo.mqh kullanan sadece biri var oda pozisyon sınıfları 

bende kullanıyorum geçmiş te seçilen lotları başarısını analiz  ediyordur  çok başarılı olursa lot sayısını arttır 

başarıszlık varsa lotu azalttır diyordur o kalıbı bende aynen aldım.   

üst üste 4 başarızı sonuç veya stop lossda 1 lot yerine 0.5 lot a otomatik  azlatıyor  neden piyasa aşırı dalgalanıyordur sakinleşmek gerekir  indikatör sürekli al veriyor sat veriyor kafa karıştı 

geçmiş hatalarda üst üste zarar varsa ne yapacakın para yönetim bölümünde lot riskini değiştireceksin

uzman algoritmada amacımız nedir 

1- Sinyali bulmak   AL/SAT 

2- bu sinyali değerlendirmek  için ne kadar parayı riske atmak (Money Management)  

en az pozisyona girmek kadar önemli bir kavram para yönetimi

2. bir pozisyon açılırmı   daha önce açık poz varmı burada bu işi para yönetimde çözmen lazım sinyal  güçlü aldın ve kardasın  tp hedefini ilerlettin  2. bir  emirle 1 lot daha almak istedin işte bunların hepsi

ExpertMoney sınıınfdan türetebilirek sınıfı geliştirebilirsin şimdilik bunları anlamak zaman alır ama kesinlikle mql  yazılımcıları en doğrusunu yapıyorlar şimdiye kadar yazdıklarımın daha iyisini yazmışlar ben sadece geliştiriyorum sende hazır sınıflardan vazgeçme

 
Mustafa Damgaci #:

positionınfo.mqh kullanan sadece biri var oda pozisyon sınıfları 

bende kullanıyorum geçmiş te seçilen lotları başarısını analiz  ediyordur  çok başarılı olursa lot sayısını arttır 

başarıszlık varsa lotu azalttır diyordur o kalıbı bende aynen aldım.   

üst üste 4 başarızı sonuç veya stop lossda 1 lot yerine 0.5 lot a otomatik  azlatıyor  neden piyasa aşırı dalgalanıyordur sakinleşmek gerekir  indikatör sürekli al veriyor sat veriyor kafa karıştı 

geçmiş hatalarda üst üste zarar varsa ne yapacakın para yönetim bölümünde lot riskini değiştireceksin

uzman algoritmada amacımız nedir 

1- Sinyali bulmak   AL/SAT 

2- bu sinyali değerlendirmek  için ne kadar parayı riske atmak (Money Management)  

en az pozisyona girmek kadar önemli bir kavram para yönetimi

2. bir pozisyon açılırmı   daha önce açık poz varmı burada bu işi para yönetimde çözmen lazım sinyal  güçlü aldın ve kardasın  tp hedefini ilerlettin  2. bir  emirle 1 lot daha almak istedin işte bunların hepsi

ExpertMoney sınıınfdan türetebilirek sınıfı geliştirebilirsin şimdilik bunları anlamak zaman alır ama kesinlikle mql  yazılımcıları en doğrusunu yapıyorlar şimdiye kadar yazdıklarımın daha iyisini yazmışlar ben sadece geliştiriyorum sende hazır sınıflardan vazgeçme

Tavsiyeleriniz için çok teşekkürler hocam modülleri tek tek inceleyerek kullanmaya çalışacağım dediğiniz gibi birden olmuyor zamanla birikimle oluyor yine takıldığım yerlerde sizlere danışırım. Düşüşlerde lot arttırımı güzel olabilir güçlü sinyallerde özellikle çok teşekkür ederim.