MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1749

 
makssub # :
Tünaydın. Tüm siparişleri kapatmak için bu kodu kullanıyorum. Ama fark ettim ki birçoğu varsa, hepsi kapalı değil. İlk kez olmasa bile her şeyi kapatmak için ne eklenebilir. Mümkünse, sadece bir örnek.

https://www.mql5.com/ru/docs/common/sleep

   if ( AccountInfoDouble ( ACCOUNT_EQUITY )<=TargetLoss || AccountInfoDouble ( ACCOUNT_EQUITY )>=TargetProfit)
     {
       AllClose();
       Sleep ( 1000 );
       AllClose();
       ExpertRemove ();
     }
//---
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Sleep - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Son soru )

Danışmanını mql platformundan windows veya linux'a kim aktardıysa. Siz uyurken oyunun kendisi kahramanı indirsin diye uzunca bir süre online olarak mu için senaryo yazdıklarını anlatacağım. Öyleyse soru şu ki, danışmanı platformun dışına kim transfer edebilir? Robot değil, insan ticareti gibi.

Bu iyi açıklanmadıysa, üzgünüm)

 
makssub # :

Son soru )

Danışmanını mql platformundan windows veya linux'a kim aktardıysa. Siz uyurken oyunun kendisi kahramanı indirsin diye uzunca bir süre online olarak mu için senaryo yazdıklarını anlatacağım. Öyleyse soru şu ki, danışmanı platformun dışına kim transfer edebilir? Bir robot değil, insan ticareti gibi.

Bu iyi açıklanmadıysa, üzgünüm)

MetaTrader bir Windows sunucusuna (VDS veya VPS) kurulur ve bunun içinde Uzman Danışman başlatılır. Ve işte bu: asker uyuyor, servis açık :-)

ve eğer bir kişinin ticaret yapıyormuş gibi davranmanız gerekiyorsa (orada robotlara izin verilmez), o zaman oradan koşun .. Platform algoritmik ve ticaretin tamamen bir robot tarafından değilse de, o zaman onun ile gerçekleştirildiği hesaplanıyor. aktif katılım.

Tıklayıcılar (bir kişiyi taklit eden düğmelerde "tıklayan" yazılım) birileri tarafından kullanılmasına rağmen. Ve freelance olarak, periyodik olarak talep ediyorlar ve internette satılanlar var.

 

merhaba!

belki birisi bir sonraki sipariş için SL TP'yi değiştirmek için bir danışmanla veya bir kod parçasıyla (bir baykuş koduna dahil edilecek) tanıştı?

Diyelim ki 0.01 SL= 30 TP=100 çok sipariş açıldı.

sonraki   0.02 lotu ile açıldı   SL=30 TP=95

vb.

Ya da onu tanımlamak için hangi işlevler?

şimdi böyle kurdum   SLTP:

 //+-----------------------------------------------------------------------------------------------+
//|                                                                    Функция модификации ордера |
//+-----------------------------------------------------------------------------------------------+
void vOrderModify( int iOTi)
  {
   int     iOTy = - 1 ;     // Тип ордера
   double dOOP = 0 ;     // Цена открытия ордера
   double dOSL = 0 ;     // Стоп Лосс
   int     iMag = 0 ;     // Идентификатор советника
   double dSL  = 0 ;     // Уровень убытка
   double dTP  = 0 ;     // Уровень прибыли

// Выберем по тикету открытый ордер, получим некоторые значения
   if ( OrderSelect (iOTi, SELECT_BY_TICKET, MODE_TRADES))
     {
      iOTy = OrderType();
      dOOP = OrderOpenPrice();
      dOSL = OrderStopLoss();
      iMag = OrderMagicNumber();
     }

// Если ордер открыл данный советник, то входим в условие
   if (OrderSymbol() == Symbol () && OrderMagicNumber() == iMag)
     {
// Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордер
       if (dOSL == 0 )
        {
         if (iOTy == OP_BUY)
           {
            dSL = NormalizeDouble (dOOP - StopLoss * Point , Digits );
            dTP = NormalizeDouble (dOOP + TakeProfit * Point , Digits );

             bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0 , clrNONE );
           }

         if (iOTy == OP_SELL)
           {
            dSL = NormalizeDouble (dOOP + StopLoss * Point , Digits );
            dTP = NormalizeDouble (dOOP - TakeProfit * Point , Digits );

             bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0 , clrNONE );
           }
        }
     }
  }
 

Beyler, profesyoneller, söyleyin bana, aklıma bir şey gelmiyor (genel olarak programlama öğrenmeye yeni başladım)

İşte danışmanın bir parçası, ne olursa olsun. OnInit() işlevinde iki dönüş ifadesi vardır.

Parantez içindeki -1 ve 0 sayılarına yetişemiyorum, nereden geliyorlar ve kesintiye uğrayan program nereye dönüyor?

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+
int OnInit()
{
**********************************************
if(********* || *********)
{
Uyarmak("***************",******(),"!!!");
dönüş(-1);
}


**** = ****;
*** = *********;
eğer(_********** || _********)
{
***************;
***************;
}
dönüş(0);
}
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
 
vladeimirami # :

Parantez içindeki -1 ve 0 sayılarına yetişemiyorum, nereden geliyorlar ve kesintiye uğrayan program nereye dönüyor?

https://www.mql5.com/ru/docs/event_handlers/oninit

Okumak. Sıfır başarıdır ve program çalışmaya devam eder. Kalan sayılar işin sonudur.

Документация по MQL5: Обработка событий / OnInit
Документация по MQL5: Обработка событий / OnInit
  • www.mql5.com
OnInit - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Stepanenko # :

https://www.mql5.com/ru/docs/event_handlers/oninit

Okumak. Sıfır başarıdır ve program çalışmaya devam edecektir. Kalan sayılar işin sonudur.

Saçmalık. Anladım. Listeleri dikkatli okumadım.   ENUM_INIT_RETCODE . Teşekkür ederim. Olursa olsun, başarısız başlatma ile sıfır dışında herhangi bir sayı ile çıkarız. En azından ölü merkezin dışına taşındı. Teşekkür ederim!
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Görev, atlama çubukları için sembol çizelgelerini kontrol etmekti.

Bu soruna bir çözüm düşünemiyorum.

Şu prensibe göre bir komut dosyası yazmanız gerekir: Bir çubuk geçiş varsa - Yazdır (tarih), Yazdır (tarih), Yazdır (tarih)

Örneğin, komut dosyasını M30 grafiğine atarız, günde 48 çubuk olmalıdır, eğer 47 - Yazdır(tarih)

Nasıl yazılır? Platformlar arası bir çözüm arzu edilir.

PS Bu, mevcut tüm geçmiş üzerinde yapılmalıdır.

 

Vitaliy, bar atlamaları nasıl değerlendirilir? Günde 48 bar mı? Bazen iş 23:00'te durur, bazen gece 2'de başlar, Rubleye bakarsanız, geceleri açık artırma yoktur.

Haftada 5 gün kesinlikle 24 saat ise, sırayı kontrol ederek sırayla her çubuğu tekrarlayın. Ama sonra, olmaması gereken, kaçırılan çubuklarla ilgili sinyaller olacaktır.

 
Vitaly Muzichenko Yazdır (tarih), Yazdır (tarih)

Örneğin, komut dosyasını M30 grafiğine atarız, günde 48 çubuk olmalıdır, eğer 47 - Yazdır(tarih)

Nasıl yazılır? Platformlar arası bir çözüm arzu edilir.

PS Bu, mevcut tüm geçmiş üzerinde yapılmalıdır.

benzer bir görev var - atlanan çubuklarla bir zaman çerçevesi yapmak. Bu, örneğin, bir günde HER ZAMAN tam olarak 1440 dakika olacak şekilde. Onlarla dalga geç o kısım boş.

Aklıma hızlı, düzgün ve güzel bir şey gelmedi :-( Günün başında bir dizi oluştur, 0:00'dan itibaren geçen dakikaları hesapla ve bu şekilde doldur.

Ve bir boşluğun varlığı gerçeği, iBars(current_time,0:01 of the current day) ve (current_time-beginning_of_day)/PERIOD_SECONDS karşılaştırılarak ortaya çıkar.