vitaliy zamkovoy Mevcut fiyattan yirmi saniye önceki fiyatı çıkarırsak ve bunu bir emrin sonraki açılışı için belirli bir sabitle karşılaştırırsak, bu Uzman Danışmana nasıl yazılabilir?
Şu koda bak:
//+------------------------------------------------------------------+//| Test.mq5 |//| Copyright 2022, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2022, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"
//ВХОДНОЙ ПАРАМЕТР
inputushort Constanta=50; //Константа//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create timerEventSetTimer(20);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timerEventKillTimer();
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---double open_0=iOpen(_Symbol,PERIOD_CURRENT,0);
if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
Sleep(20000);
if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
Sleep(20000);
if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
Sleep(20000);
}
//+------------------------------------------------------------------+
vitaliy zamkovoy #: Ne yazık ki, önümüzdeki iki gün boyunca kontrol edemeyeceğim, ancak lütfen teşekkürlerimi kabul edin!
Teşekkür ederim, ancak lütfen bunun hazır bir kod olmadığını, sadece düşüncemin yönü olduğunu unutmayın. Yanlış olabilir. Kontrol etmeniz gerekiyor. Başka bir seçenek düşünebilirsiniz - OnTimer'ı kaldırın ve aynı kodu OnTick() içinde deneyin. Kısacası, deneyin.
vitaliy zamkovoy Mevcut fiyattan yirmi saniye önceki fiyatı çıkarırsak ve bunu bir emrin daha sonra açılmasıyla bir sabitle karşılaştırırsak - bunu nasıl kaydederiz?
Mevcut fiyatı ve zamanı kaydedin. Her tikte zamanı mevcut zamanla karşılaştırın, 20 saniyeden fazlaysa ikinci fiyatı hatırlayın. İlk fiyat ile ikinci fiyat arasındaki farkı hesaplayın. Elde edilen sonucu bir sabit ile karşılaştırın ve bir emir açmaya karar verin.
Mevcut fiyatı ve zamanı hatırlayın. Her tikte zamanı geçerli zamanla karşılaştırın, 20 saniyeden fazla ise ikinci fiyatı hatırlayın. İlk fiyat ile ikinci fiyat arasındaki farkı hesaplayın. Elde edilen sonucu bir sabit ile karşılaştırın ve bir emir açmaya karar verin.
Sizi doğru anlıyor muyum: bu serinin her değeri 20 saniye boyunca kaldırıldığında mevcut fiyatla karşılaştırmak için her saniye mevcut fiyatı hatırlamanız mı gerekiyor?
Sizi doğru anlıyor muyum: her saniye mevcut fiyatı hatırlamanız gerekiyor, böylece bu serinin her değeri 20 saniye boyunca silindiğinde, mevcut olanla karşılaştırabilirsiniz?
Karşılaştırma sürekli olmalıdır.
keneler eşit gitmez, soru algoritmadadır, o zaman tüm keneleri kontrol etmek gerekiyorsa, tüm keneler ezberlenmeli ve karşılaştırılmalıdır. Algoritmaya göre daha az sıklıkta mümkünse, o zaman bir zamanlayıcı ve bir saniye sonra fiyatı hatırlayın ve 20 saniye sonra da hatırlayın ve karşılaştırın. Daha doğrusu 20 saniye içinde bir saniyedeki tüm fiyatları veya fiyatları hatırlamalı ve yeni bir tik ile karşılaştırmalısınız. Saniyede 1 tik olabilir, 5 saniyede bir olabilir ve bir saniyede 100 olabilir. Her 5 saniyede bir tik olduğunda ve saniyede 100 tik olduğunda nasıl hareket edeceğinize karar vermelisiniz.
keneler tek tip değildir, soru algoritmadadır, o zaman tüm keneleri kontrol etmeniz gerekiyorsa, tüm keneler ezberlenmeli ve karşılaştırılmalıdır. Algoritmaya göre daha az sıklıkta olmak mümkünse, o zaman bir zamanlayıcı ve bir saniye sonra fiyatı hatırlayın ve 20 saniye sonra da hatırlayın ve karşılaştırın. Daha doğrusu 20 saniye içinde bir saniyedeki tüm fiyatları veya fiyatları hatırlamalı ve yeni bir tik ile karşılaştırmalısınız. Saniyede 1 tik olabilir, 5 saniyede bir olabilir ve bir saniyede 100 olabilir. Her 5 saniyede bir tik olduğunda ve saniyede 100 tik olduğunda nasıl hareket edeceğinize karar vermelisiniz.
Bu bir seçenek seçme meselesi değil.... benim için bunu yazmanın zorluğu meselesi. Bugün ilk kez buradayım. Tamamen amatörüm.
Bu bir seçenek seçme meselesi değil..... benim için bunu yazmanın zorluğu meselesi. Bugün buraya ilk kez geliyorum. Tamamen amatörüm.
Sadece fikrimi denemek istiyorum.
Algoritma kesin olmalı ve uygulama koşullarını anlamalıdır. Başka bir şekilde kod yazamazsınız. Kod, bir eylem algoritmasının gerçekleştirilmesidir, yanlış olamaz.
Ve burada önce kendiniz yazmak daha iyidir ve belki de hataları düzeltirsiniz.
Eşittir işaretlerini anlıyorsunuz, daha fazlası daha azdır.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Şu koda bak:
Saygılarımla, Vladimir.Bu koda bakın:
Saygılarımla, Vladimir.Ne yazık ki, önümüzdeki iki gün boyunca kontrol edemeyeceğim, ancak lütfen teşekkürlerimi kabul edin!
Teşekkür ederim, ancak lütfen bunun hazır bir kod olmadığını, sadece düşüncemin yönü olduğunu unutmayın. Yanlış olabilir. Kontrol etmeniz gerekiyor. Başka bir seçenek düşünebilirsiniz - OnTimer'ı kaldırın ve aynı kodu OnTick() içinde deneyin. Kısacası, deneyin.
Saygılarımla, Vladimir.
Mevcut fiyatı ve zamanı kaydedin. Her tikte zamanı mevcut zamanla karşılaştırın, 20 saniyeden fazlaysa ikinci fiyatı hatırlayın. İlk fiyat ile ikinci fiyat arasındaki farkı hesaplayın. Elde edilen sonucu bir sabit ile karşılaştırın ve bir emir açmaya karar verin.
Mevcut fiyatı ve zamanı hatırlayın. Her tikte zamanı geçerli zamanla karşılaştırın, 20 saniyeden fazla ise ikinci fiyatı hatırlayın. İlk fiyat ile ikinci fiyat arasındaki farkı hesaplayın. Elde edilen sonucu bir sabit ile karşılaştırın ve bir emir açmaya karar verin.
Sizi doğru anlıyor muyum: bu serinin her değeri 20 saniye boyunca kaldırıldığında mevcut fiyatla karşılaştırmak için her saniye mevcut fiyatı hatırlamanız mı gerekiyor?
Karşılaştırma sürekli olmalıdır.
Sizi doğru anlıyor muyum: her saniye mevcut fiyatı hatırlamanız gerekiyor, böylece bu serinin her değeri 20 saniye boyunca silindiğinde, mevcut olanla karşılaştırabilirsiniz?
Karşılaştırma sürekli olmalıdır.
keneler eşit gitmez, soru algoritmadadır, o zaman tüm keneleri kontrol etmek gerekiyorsa, tüm keneler ezberlenmeli ve karşılaştırılmalıdır. Algoritmaya göre daha az sıklıkta mümkünse, o zaman bir zamanlayıcı ve bir saniye sonra fiyatı hatırlayın ve 20 saniye sonra da hatırlayın ve karşılaştırın. Daha doğrusu 20 saniye içinde bir saniyedeki tüm fiyatları veya fiyatları hatırlamalı ve yeni bir tik ile karşılaştırmalısınız.
Saniyede 1 tik olabilir, 5 saniyede bir olabilir ve bir saniyede 100 olabilir. Her 5 saniyede bir tik olduğunda ve saniyede 100 tik olduğunda nasıl hareket edeceğinize karar vermelisiniz.
keneler tek tip değildir, soru algoritmadadır, o zaman tüm keneleri kontrol etmeniz gerekiyorsa, tüm keneler ezberlenmeli ve karşılaştırılmalıdır. Algoritmaya göre daha az sıklıkta olmak mümkünse, o zaman bir zamanlayıcı ve bir saniye sonra fiyatı hatırlayın ve 20 saniye sonra da hatırlayın ve karşılaştırın. Daha doğrusu 20 saniye içinde bir saniyedeki tüm fiyatları veya fiyatları hatırlamalı ve yeni bir tik ile karşılaştırmalısınız.
Saniyede 1 tik olabilir, 5 saniyede bir olabilir ve bir saniyede 100 olabilir. Her 5 saniyede bir tik olduğunda ve saniyede 100 tik olduğunda nasıl hareket edeceğinize karar vermelisiniz.
Bu bir seçenek seçme meselesi değil.... benim için bunu yazmanın zorluğu meselesi. Bugün ilk kez buradayım. Tamamen amatörüm.
Sadece fikrimi denemek istiyorum...
Bu bir seçenek seçme meselesi değil..... benim için bunu yazmanın zorluğu meselesi. Bugün buraya ilk kez geliyorum. Tamamen amatörüm.
Sadece fikrimi denemek istiyorum.
Algoritma kesin olmalı ve uygulama koşullarını anlamalıdır. Başka bir şekilde kod yazamazsınız. Kod, bir eylem algoritmasının gerçekleştirilmesidir, yanlış olamaz.
Ve burada önce kendiniz yazmak daha iyidir ve belki de hataları düzeltirsiniz.
Eşittir işaretlerini anlıyorsunuz, daha fazlası daha azdır.
Halka tampon:
Bir tampon alın - "fiyat, zaman" yapılarından oluşan yeterince büyük bir statik dizi (veya iki ayrı dizi).
İki değişken alırız - tamponun başına ve kuyruğuna "işaretçiler" (indeksler).
Her tikte başa bir eleman ekleriz ve işaretçiyi ilerletiriz.
Zamanı kuyruktaki elemanla karşılaştırın, gerekirse işaretçiyi hareket ettirin.
Fiyatı kuyruktaki elemanla karşılaştırın.
Bir işaretçi dizinin sonuna ulaştıysa, bu işaretçiyi sıfırlarız.
İki değişken alın - tamponun başına ve kuyruğuna "işaretçiler" (indeksler).
Her tik işaretinde başa bir öğe ekliyoruz ve işaretçiyi hareket ettiriyoruz.
Gerekirse zamanı kuyruktaki elemanla karşılaştırın - işaretçiyi hareket ettirin.
Fiyatı kuyruktaki eleman ile karşılaştırın.
Bir işaretçi dizinin sonuna ulaşmışsa - bu işaretçiyi sıfıra sıfırlayın.