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

 
Valeriy Yastremskiy #:

Algoritma kesin olmalı ve uygulama koşulları anlaşılmalıdır. Başka türlü kod yazmak mümkün değildir. Kod, bir eylem algoritmasının gerçekleştirilmesidir, yanlış olamaz.

Ve burada önce kendiniz yazmak daha iyidir ve belki de hatalar düzeltilecektir.

Eşitlik işaretlerini anlıyorsunuz, daha fazlası daha azdır.

Merhaba, Valery! Size tamamen katılıyorum. Doğru bir kod yazmak için, bir pozisyon açmak için kesin bir koşula ihtiyacınız vardır. Bu kod da çalışıyor:

//+------------------------------------------------------------------+
//|                                                         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"
//ВХОДНОЙ ПАРАМЕТР
input ushort Constanta=50; //Константа
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Tick function                                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   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);
  }
//+------------------------------------------------------------------+

ama asıl soru Vitaly'nin istediği gibi çalışıp çalışmayacağı? Açıkçası, neden her 20 saniyede bir (hatta her 10, 5 veya 1 saniyede bir) fiyat farkını kontrol etmemiz gerektiğini tam olarak anlamıyorum. Daha fazla fiyat hareketinin yönünü belirleme açısından ne verecek?

Saygılarımla, Vladimir.

 
MrBrooklin #:

Merhaba, Valery! Size tamamen katılıyorum. Doğru bir kod yazmak için, bir pozisyon açmak için kesin bir koşula ihtiyacınız vardır. Bu kod da çalışıyor:

ama asıl soru bunun Vitaly'nin istediği gibi çalışıp çalışmayacağı? Açıkçası, neden her 20 saniyede bir (hatta her 10, 5 veya 1 saniyede bir) fiyat farkını kontrol etmemiz gerektiğini tam olarak anlamıyorum. Daha sonraki fiyat hareketinin yönünü belirleme açısından ne işe yarayacak?

Saygılarımla, Vladimir.

MrBrooklin #:

Merhaba, Valery! Size tamamen katılıyorum. Doğru bir kod yazmak için, bir pozisyon açmak için kesin bir koşula ihtiyacınız vardır. Bu kod da çalışıyor:

ama asıl soru bunun Vitaly'nin istediği gibi çalışıp çalışmayacağı? Açıkçası, neden her 20 saniyede bir (hatta her 10, 5 veya 1 saniyede bir) fiyat farkını kontrol etmemiz gerektiğini tam olarak anlamıyorum. Daha sonraki fiyat hareketinin yönünü belirleme açısından ne işe yarayacak?

Saygılarımla, Vladimir.

Görevi yanlış tanımlıyorsunuz! "Her 20 saniyede bir" değil, her saniye bir süre önce geçmiş olan göstergeleri kontrol etmektir. "Neden" sorusuna gelince - bu tartışma için bir soru değil. (Ve 20 saniye sadece bir örnektir).

İlk mumun ikinci mumla karşılaştırıldığı hareketli bir ortalama gibi. Sadece mevcut (sıfır) dakikalık mumun içindeki her şeyi hesaplamam gerekiyor. (Veya daha da iyisi - bir çizgi grafikte. Sonuçta, 20 saniye ilk muma akabilir).

 
vitaliy zamkovoy #:
Görevi doğru tanımlamıyorsunuz! "Her 20 saniyede bir" değil, her saniye bir süre önce geçmiş olan değerleri kontrol etmektir. "Neden" sorusuna gelince - bu, bu tartışma için bir soru değil. (Ve 20 saniye sadece bir örnektir).

Evet, benim hatam, ne yapmak/kontrol etmek istediğinizi tam olarak anlamadım.

Saygılarımla, Vladimir.

 

Ancak sabitinize eşit mesafe herhangi bir çift saniyede değil de, örneğin 10.964 saniyede veya 11.283 saniyede kat edilirse, o zaman ne olur? Koşul yerine getirilecek mi, getirilmeyecek mi?

Saygılarımla, Vladimir.

 
MrBrooklin #:

Ancak sabitinize eşit mesafe herhangi bir çift saniyede değil de, örneğin 10.964 saniyede veya 11.283 saniyede kat edilirse ne olur? Koşul yerine getirilecek mi, getirilmeyecek mi?

Saygılarımla, Vladimir.

"Bir sabitle karşılaştırma" teriminde eşitliği değil, "daha fazla" "daha az "ı kastediyorum. Pozitif fark durumunda + işaretli sabit ile karşılaştırırız ve negatif fark durumunda " - " işaretli sabit ile karşılaştırırız. İlk durumda sabiti aşarsak, satın alırız. İkinci durumda, değer daha az ise - satış.
 
vitaliy zamkovoy #:
"Bir sabitle karşılaştırma" terimiyle eşitliği değil, "daha fazla" "daha az "ı kastediyorum.

Şimdi her şey anlaşıldı.

Saygılarımla, Vladimir.

 
MrBrooklin #:

Şimdi her şey anlam kazandı.

Saygılarımla, Vladimir.

Oradaki mesajları güncelledim. Lütfen tekrar okuyun.
 

Tüm bu saçmalıkları okumaktan o kadar sıkıldım ki... Sonuçta kod sadece DÖRT satır ve tartışmalar 3 sayfa uzunluğunda.

  MqlTick mqlTick[], symbTick; // объявили переменные
  SymbolInfoTick(_Symbol, symbTick); // это последний тик
  CopyTicksRange(_Symbol, mqlTick, COPY_TICKS_ALL, symbTick.time_msc, symbTick.time_msc-20000); // Получили все тики за последние 20 секунд
  double delta = NormalizeDouble(mqlTick[ArraySize(mqlTick)-1].bid-mqlTick[0].bid, _Digits); // получили разницу крайних значений массива

20,000 milisaniye 20 saniyedir.

Sonra, delta değişkeninin boyutuna bir koşul koyun daha fazla/küçük, sol/sağ veya kuzey/yuh....

 
MrBrooklin #:

Şimdi her şey anlam kazandı.

Saygılarımla, Vladimir.

MrBrooklin #:

Şimdi her şey anlam kazandı.

Saygılarımla, Vladimir.

vitaliy zamkovoy #:
Oradaki mesajları güncelledim. Lütfen tekrar okuyun.
Alexey Viktorov bir züppe ama numarayı hemen anladı. 😆
 
vitaliy zamkovoy #:
"Bir sabitle karşılaştırma" terimiyle eşitliği değil, "daha fazla" "daha az "ı kastediyorum. Eğer fark pozitif ise, + işaretli bir sabit ile karşılaştırırız ve eğer fark negatif ise, - işaretli bir sabit ile karşılaştırırız. İlk durumda sabiti aşarsak, satın alırız. İkinci durumda, değer daha düşükse - satış.

Şimdi her şey açık.

Saygılarımla, Vladimir.

Not: Önerebileceğim tek şey, ilgi çekmek için buradaki mesajımı izlemek. Ve sonra bu mesajdan sonra fiyatın nasıl davrandığına bakın. Fiyat grafiğinin ekran görüntüsündeki kırmızı okla gösterildiği gibi 0,98000'e veya daha doğrusu 0,9806'ya geri döndü ve ardından tekrar yükseldi. Bu öneri sadece sizin düşünmeniz içindir.