"MQL5 Tarif Defteri: Çok Para Birimli Uzman Danışman - Basit, Sade ve Hızlı Yaklaşım" makalesi için tartışma - sayfa 3

 
//+------------------------------------------------------------------+
//|| İzleyen Stop seviyesini hesaplar |
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Hesaplamalar için değişkenler
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Satın Al için düşük değer
   double    sell_point  =high[symbol_number].value[1]; // Satış için yüksek değer

Bunu yapmak doğru olmayacaktır. Pozisyon ve çubuk fiyatı bir boşluk ile açılırsa, StopLoss doğru şekilde ayarlanmayacaktır.

 
Jose:

Makale derli toplu ve takip etmesi kolay ve .set dosyalarındaki ayarları sağlıyor. Sembol yürütme modlarıyla ilgili bir sorun yaşadım, özellikle anlık mı yoksa piyasa mı olduğunu kontrol eden ve ancak bundan sonra emirlerin açılmasına izin veren bir koşul vardı, bunu kaldırmam gerekti, ancak her şey iyi çalıştı.

Bir sorum var. Bunun gibi, bazı özelliklerini kopyalamak için çok fazla kod (ve sanırım zaman) harcamalarına rağmen, sağlanan Expert, ExpertSignal, ExpertTrade.... yapısını ihmal ederek sıfırdan inşa edilen birçok farklı gelişmiş yaklaşım gördüm. Birisi bana bunu açıklayabilir mi lütfen?

Herkese merhaba!

Bu EA'yı test etmeye çalışıyorum ancak Strategy Tester'da aşağıdaki mesajı aldım: "Pozisyon açılırken hata oluştu: 4753 - 1 Pozisyon bulunamadı". Nedenini anlamıyorum. Bu, "TradeFunctions.mqh" dosyasının 159. satırında "trade.PositionOpen" işlevi yürütüldüğünde gerçekleşir. Birisi bana yardım edebilir mi lütfen?

 

Yazar tarafından açıklandığı gibi pozisyon değişiminin nerede gerçekleştiğini söyleyebilir misiniz? İşte açıklamalı kodu

//--- Eğer bir pozisyon varsa
   else
     {
      //--- Pozisyon türünü alın
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Konum sinyalin tersi ise ve konum tersine çevirme etkinse
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Konum hacmini alın
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Ses seviyesini ayarlayın
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Pozisyonu tersine çevirelim
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) fonksiyonuna bakın;

//+------------------------------------------------------------------+
//|| Bir pozisyon açar|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Ticaret yapısındaki majik numarayı ayarlayın
   trade.SetExpertMagicNumber(MagicNumber);
//--- Kayma boyutunu nokta cinsinden ayarlayın
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Anında Yürütme ve Piyasa Yürütme modu
// *** Yapı 803'ten başlayarak, Zararı Durdur ve Kâr Al seviyeleri ***
// *** SYMBOL_TRADE_EXECUTION_MARKET modunda bir pozisyon açarken ayarlanabilir ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Pozisyon açılmamışsa, bununla ilgili bir mesaj yazdırın
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Pozisyon açılırken hata oluştu: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
Bu sadece bir kilit! Geri dönüş yok... aynı şey lot artışı için de geçerli! Açıklayabilir misiniz, belki yanılıyorumdur?
 
Tango_X:

Yazar tarafından açıklandığı gibi pozisyon değişiminin nerede gerçekleştiğini söyleyebilir misiniz? İşte açıklamalı kodu

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) fonksiyonuna bakın;

Bu sadece bir kilit! Tersine çevirme yok... lot artışı ile aynı! Açıklayabilir misiniz, belki yanılıyorumdur?

İki tür ticaret hesabı vardır: netleştirme ve hedge.

OradaEylemNetting'deydi.Hedge'de.
1.0 alSat 2.01.0 Sat1.0 Al ve 2.0 Sat
 
Vladimir Karputov:

İki tür ticaret hesabı vardır: netleştirme ve hedge.

OradaEylemAğ üzerinde olduHedge'de oldu
Satın Al 1.0Sat 2.01.0 Sat1.0 Satın Al ve 2.0 Sat

Tamamdır! Teşekkür ederim!

 
"TimeframeToString" mevcut değildir ve makalede bildirilmemiştir, lütfen "EnumToString" ile yer değiştirin.