Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1431

 

İyi günler!

Grafiklerin zorla yeniden çizilmesi nasıl gerçekleştirilir (işlevin analogu - grafiğe sağ tıklayın - "Yenile").

Aşağıdaki kod çalışmıyor, güncelleme gerçekleşmiyor.


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

MQL5'e ücretsiz Uzman Danışmanlar indirmek istiyorum. Uzman Danışmanlar'a, ardından Ücretsiz Uzman Danışmanlar'a gidiyorum. Soru: Gerçek hesabımda "ücretsiz" bölümündeki tüm Uzman Danışmanları kullanabilir miyim yoksa herhangi bir kısıtlama var mı? Bir Uzman Danışman şöyle diyorsa

"zaten satın alınmış" gerçek bir hesaba konulabilir mi konulamaz mı?

 
mikhail2929 Кравченко gerçek hesabımda kullanabilir miyim yoksa herhangi bir kısıtlama var mı? Bir Uzman Danışman üzerinde yazıyorsa

"zaten satın alınmış" gerçek bir hesaba konulabilir mi konulamaz mı?

İyi günler! Ücretsiz bir Uzman Danışman indirdiyseniz ve zaten satın alındığına dair bilgi varsa, onu kullanabilirsiniz. Soru farklı - ne kadar güvenilir? Bu amaçla, gerçek bir hesapta kullanmadan önce Uzman Danışmanı test etmek daha iyidir!

Saygılarımla, Vladimir.

 
MrBrooklin #:

İyi günler! Ücretsiz bir Uzman Danışman indirilmişse ve zaten satın alındığına dair bilgi varsa, onu kullanabilirsiniz. Soru farklı - ne kadar güvenilir? Bu amaçla, gerçek bir hesapta kullanmadan önce Uzman Danışmanı test etmek en iyisidir!

Saygılarımla, Vladimir.

Teşekkürler Vladimir. Test ve optimizasyonun gerekli olduğunu anlıyorum. Yani, "ücretsiz" bölüme yerleştirilen tüm Uzman Danışmanlar, kısıtlama olmaksızın gerçek bir hesapta çalışmak üzere indirilebilir ve kurulabilir. Doğru anladım mı?

 
İyi günler, yardım arıyorum, bir MT5 Uzman Danışmanı yazarken, TP ve SL'yi değiştirmek için CTrade sınıfını kullanıyorum. Sorun, TP değiştirildikten sonra pozisyonun başlangıçta TP ve SL olarak ayarlanmasıdır, ancak SL yerinde kalmalıdır, uygularken bu şekilde ortaya çıktı:
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_Buy ve TP_Sell doğru sayılır. Test cihazında 4756 hatası veriyor. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Anladığım kadarıyla bu bir SL ayar hatası, büyük olasılıkla hata SL'nin aynı yerde olmasından kaynaklanıyor. Ama ihtiyacım olan şey bu. CTrade kılavuzunda "değişiklik gerekli değilse, önceki değer" yazılmıştır. Hatanın üstesinden nasıl gelinir, lütfen bana söyleyin.

 
mikhail2929 Кравченко #:

Teşekkürler Vladimir. Test ve optimizasyonun gerekli olduğunu anlıyorum. Yani, "ücretsiz" bölümde yer alan tüm Uzman Danışmanlar, kısıtlama olmaksızın gerçek bir hesapta çalışmak için indirilebilir ve kurulabilir. Doğru anladım mı?

Sanırım sorunuza daha önce cevap vermiştim. Evet, doğru anladınız.

Saygılarımla, Vladimir.

 
rexMetaL bir MT5 Uzman Danışmanı yazarken, TP ve SL'yi değiştirmek için CTrade sınıfını kullanıyorum. Sorun şu ki, TP değiştirildikten sonra pozisyon başlangıçta TP ve SL olarak ayarlanıyor, ancak SL yerinde kalmalı, uygularken ortaya çıktı:

TP_Buy ve TP_Sell doğru sayılır. Test cihazında 4756 hatası veriyor. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Anladığım kadarıyla bu bir SL ayar hatası, büyük olasılıkla hata SL'nin aynı yerde olmasından kaynaklanıyor. Ama ihtiyacım olan şey bu. CTrade kılavuzunda "değişiklik gerekli değilse, önceki değer" yazılmıştır. Hatanın üstesinden nasıl gelinir, lütfen bana söyleyin.

Merhaba!

Öncelikle döngü içerisindeki eşittir işaretini kaldırın ki bu şekilde olsun:

for(int i = 0; i < PositionsTotal(); i++)

Kodunuza daha fazla bakmadım.

Saygılarımla, Vladimir.

 
MrBrooklin #:

Merhaba!

Öncelikle döngüdeki eşittir işaretini kaldırın:

Kodunuza daha fazla bakmadım.

Saygılarımla, Vladimir.

Hiçbir şey değişmedi, sorun özellikle SL/TP'de
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }
 
MrBrooklin #:

Merhaba!

Öncelikle, döngüdeki eşittir işaretini kaldırın, böylece aşağıdaki gibi olur:

Kodunuza daha fazla bakmadım.

Saygılarımla, Vladimir.

Zaman ayırdığınız için teşekkür ederiz, sorun SL / TP'nin enstrümana göre basit bir şekilde yuvarlanmasıyla çözüldü. Hata, SL / TP'nin göstergeden alınmasından kaynaklanıyordu.

Teşekkür ederim.

 
mikhail2929 Kravchenko #:

Teşekkürler Vladimir. Test ve optimizasyonun gerekli olduğunu anlıyorum. Yani, "ücretsiz" bölümde yer alan tüm Uzman Danışmanlar, kısıtlama olmaksızın gerçek bir hesapta çalışmak üzere indirilebilir ve kurulabilir. Doğru anladım mı?

Bunu yapmamak daha iyidir :)

Neden: