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

 
STARIJ :

Artem, ya da göze batmayan trollemeniz mi, yoksa kendiniz ne hakkında yazdığınızı anlamıyorsunuz !!!

Son gönderide sıralamadan bahsetmiştin. Sıralama bağımlılığı olmadığını açıkladım.

Zamana göre sipariş seçimi ile ilgili tartışmalar gördüm ve bunlardan birine katıldım. Sonuç, siparişlerin sunucuya gönderildikleri zamana kadar siparişlerin veritabanında yer aldığı şekilde yapıldı. Ancak TEORİK OLARAK geliştiricilerin bunu değiştirebileceğine dair bir korku var. Böylece tartışma sona erdi. Bir veritabanı uzmanı olarak sizi temin ederim ki bu korku yersizdir, değişiklik söz konusu olamaz . Bu soru ile geliştiricilerle iletişime geçebilirsiniz. Bir şey yazarsam, ne yazdığımı bilirim. Programlamanın 50. yılı yaklaşıyor. Gönderilerimde kendi bakış açınızdan bir şekilde iyi geçindiğini fark ederseniz - kişisel olarak yazın . Açıklamama izin verin ve şüpheleriniz giderilecektir. Ve burada çekişmek pek uygun değil. Bir adama bir senaryo yazdı - teşekkür etti. İyi mi?

İşte böyle düşünen herkes böyle düşündü ve aniden sıralamaya bağımlılık olduğu gerçeğiyle karşılaştı . İnsanlar mantıklarını kaybettiler. Sonra tekrar sıralamaya olan bağımlılık ortadan kalktı. Ama sonuçta zaten vardı. Programınıza değil, varsayımsal bir sıralama değişikliğine güvenmek istiyorsanız - hakkınız, ancak yeni başlayanların yardım dizisinde böyle bir hakkınız yok - bir komut dosyası verme ve bir gün çökebileceğini söyleme. 6 - 7 yıl önce mql4.com'da bu tür tartışmalara bakın.

Ben de bahsetmiştim - adam kayıptan değil, kaybı durdurmaktan bahsediyordu.

Teşekkür ederim, dedi - kibar, ama doğru mu değil mi bilmiyor;)

 
Artyom Trishkin :

Ben de bahsettim - kişi kayıptan değil, kaybı durdurmaktan bahsediyordu.

Teşekkür ederim dedi - kibar ama doğru mu değil mi bilmiyor ;)

adamın yazdıklarına dikkatli bakın

X = OrderProfit ( );         // запомнить величину тейкпрофита

if ( OrderSelect (Ht- 1 , SELECT_BY_POS , MODE_HISTORY ))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()== OP_SELL )   // СЕЛ

if (X < 0 )                 // и если этот сел закрылся по стопу 

Emirleri kaybetmeyi kastettiğini takip ediyor. Yani durmayı anlıyor. Stoploss kelimesi eksik

StopLoss ve TakeProfit'in genelleştirilmiş adı olan stoplar olduğunu da kendisine yazmak istedim. Bunu doğrulamak için MetaEditor 130 yazın ve F1'e basın

Ayak. çoğul olarak.

Burada çalışıyorum, dikkatimi dağıtıyorsun

datetime diyelim --> TimeToStruct --> MqlDateTime Şimdi tarih saatine nasıl dönülür???

 
STARIJ :

adamın yazdıklarına dikkatli bakın

Emirleri kaybetmeyi kastettiğini takip ediyor. Yani durmayı anlıyor. Stoploss kelimesi eksik

StopLoss ve TakeProfit'in genelleştirilmiş adı olan stoplar olduğunu da kendisine yazmak istedim. Bunu doğrulamak için MetaEditor 130 yazın ve F1'e basın

Ayak. çoğul olarak.

Burada çalışıyorum, dikkatimi dağıtıyorsun

datetime diyelim --> TimeToStruct --> MqlDateTime Şimdi tarih saatine nasıl dönülür???

 if (X < 0 )                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик : saatlik grafikte yüksek ve düşük arasında bir çizgi çizildi
 //+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart ()
{
   // Удалим все объекты
   ObjectsDeleteAll ();

   string Символ = "GBPUSD" ;
   datetime Первый, Последний;
   int Период= PERIOD_H1 ;

   // Прежде всего узнаем дату и время последнего бара
  Последний = iTime (Символ, Период, 0 );
   Alert ( "Последний бар на часовом  " ,Последний);

   // Теперь получить начало суток, обнулив часы
   // Для этого преобразуем время последнего бара в структуру
   MqlDateTime MqlПервый;
   TimeToStruct (Последний,MqlПервый);
  MqlПервый.hour= 0 ;



   // Терерь надо обратно преобразовать во время
  Первый= StructToTime (MqlПервый);
   Alert ( "Первый бар на часовом  " ,Первый); // Смотрим начало первого бара суток

   // По времени определим номер первого бара суток
   int НомерПервого= iBarShift (Символ, PERIOD_H1 ,Первый);
   Alert ( "Первый бар на часовом под номером " ,НомерПервого);

// Можно было просто узнать время начала бара на D1


  
   // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
   // Найдем на этом интервале номера баров, где макс и мин
   // iHighest и iLowest находят номер бара с макс и мин ценой
   int БарМакс = iHighest (Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                 MODE_HIGH ,         // Наибольшая цена бара
                НомерПервого+ 1 ,   // Количество баров
                 0 );               // Начальный бар

   int БарМин  = iLowest (Символ,
                Период,
                 MODE_LOW ,         // Наименьшая цена бара
                НомерПервого+ 1 ,
                 0 );

   Alert ( "Максимальный бар = " , БарМакс, "  Минимальный бар = " , БарМин);

   // iHigh и iLow дают макс и мин цены указанного бара
   double max_price= iHigh (Символ, Период, БарМакс);
   double min_price= iLow (Символ, Период, БарМин);
   Alert ( "Максимум цены = " , max_price, "  Минимум цены = " , min_price);

   // Проводим линию
   ObjectCreate ( "Макс_Мин" , OBJ_TRENDBYANGLE , 0 , Time [БарМакс], max_price, Time [БарМин], min_price);
   ObjectSet ( "Макс_Мин" , OBJPROP_RAY , false );     // Выключить свойство бесконечного луча

   // Теперь хорошо бы узнать угол
   Alert ( "Угол = " , ObjectGetDouble ( 0 , "Макс_Мин" , OBJPROP_ANGLE ));
}

// Döndürür 0.0 Açı ayarlanmalı ve ancak ondan sonra alınmalıdır...
// Yani, fiyatlardaki farkı ve Maks ve Min arasındaki çubuk sayısını bilerek, açı hesaplanmalıdır.
// Belki daha kısa olabilirdi...

 
STARIJ :

// Döndürür 0.0 Açı ayarlanmalı ve ancak ondan sonra alınmalıdır...
// Yani, fiyatlardaki farkı ve Maks ve Min arasındaki çubuk sayısını bilerek, açı hesaplanmalıdır.
// Belki daha kısa olabilirdi...


büyük ATP)
 
Artyom Trishkin : StructToTime()
Teşekkürler, buldum. Zaten kullandığı ortaya çıktı. Datetime TimeToStruct MqlDateTime'ın yardımında görmeyi umuyordum.
 
-Aleks- :

Phew, değişkenlerin nasıl ekleneceğini anlayamıyorum - yani. Diyelim ki 4 booleanım var ve onları tekrarlamam gerekiyor mu?

İşin özünü anlıyorum - bölmeden sonra sıfırdan küçük veya sıfırdan büyük bir kalan olmalı - ama bunu nasıl başaracağımı bulamıyorum :(


Booleanlar için yaklaşım biraz farklıdır.

 //+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link        "http://vinin.ucoz.ru"
#property version    "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N= 15 ;   //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int n= 0 ;n<N;n++)
     {
       int tmp=n;
       bool a= ( bool ) MathMod (tmp, 2 );
      tmp=tmp/ 2 ;
       bool b= ( bool ) MathMod (tmp, 2 );
      tmp=tmp/ 2 ;
       bool c= ( bool ) MathMod (tmp, 2 );
      tmp=tmp/ 2 ;
       bool d= tmp;

       Print ( "N=" ,n, "; A=" ,a, "; B=" ,b, "; C=" ,c, "; D=" ,d);
     }

  }

ikili kodlama

Bu durumda maksimum N, 16'dan az

ne istediğini çözemedim

 
Victor Nikolaev :


Booleanlar için yaklaşım biraz farklıdır.

ikili kodlama

Bu durumda maksimum N, 16'dan az

ne istediğini çözemedim

Sen bir dahisin! Teşekkür ederim!

16 seçeneğim var

2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=doğru; B=doğru; C=doğru; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=doğru; b=yanlış; C=doğru; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=doğru; b=yanlış; c=yanlış; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=doğru; b=yanlış; c=yanlış; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=doğru; b=yanlış; C=doğru; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=doğru; B=doğru; c=yanlış; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=doğru; B=doğru; c=yanlış; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=doğru; B=doğru; C=doğru; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=yanlış; B=doğru; C=doğru; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=yanlış; B=doğru; C=doğru; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=yanlış; B=doğru; c=yanlış; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=yanlış; B=doğru; c=yanlış; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=yanlış; b=yanlış; C=doğru; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=yanlış; b=yanlış; C=doğru; D=yanlış
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=yanlış; b=yanlış; c=yanlış; D=doğru
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=yanlış; b=yanlış; c=yanlış; D=yanlış

Neden kullanmak istiyorum - EA'mda bir dizi filtre ve pozisyon yönetimi seçeneğim var - Mini setler (hazır kombinasyonlar) yapmak da dahil olmak üzere bunları birbirleriyle birleştirmek istiyorum - sonuç olarak analiz için veri alacağım, örneğe önyargılı olmamakla birlikte, umarım, ayarların sonuç üzerindeki etkisinin algı ufkunu genişletecektir. Sonuç, ayrıntılı olarak analiz edeceğim bir dizi sonuçtur. Başka bir neden daha var, sınırlı sayıda değişkeni bir dosyaya kaydeden ve ayrıntılı analizi engelleyen istatistik toplamak için bir sınıfım var.
 
виталик :

büyük ATP)

YILDIZ :

// Döndürür 0.0 Açı ayarlanmalı ve ancak ondan sonra alınmalıdır...
// Yani, fiyatlardaki farkı ve Maks ve Min arasındaki çubuk sayısını bilerek, açı hesaplanmalıdır.
// Belki daha kısa olabilirdi...


senaryo için tekrar teşekkürler, onu bir göstergeye çevirdim, bir sorun, nasıl döngüye sokacağımı çözemiyorum, böylece bir günden fazla gösterilecek, yani tarihte görüntülenecek, lütfen söyle bana

 #property indicator_chart_window
extern int boom = 1 ;
//=================================
void fishka( int ma, int mi, double map, double mip) // ф-ция
{
   ObjectCreate ( "Макс_Мин" , OBJ_TRENDBYANGLE , 0 , Time [ma], map, Time [mi], mip); // Проводим линию
   ObjectSet ( "Макс_Мин" , OBJPROP_RAY , false );     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll (); // Удалим все объекты
   return ( 0 );
  }

void start()
{  
   string Символ = "GBPUSD" ;
   datetime Первый, Последний;
   int Период= PERIOD_H1 ;

  Последний = iTime (Символ, Период, 0 ); // Прежде всего узнаем дату и время последнего бара
 
if (boom){
   Alert ( "Последний бар на часовом  " ,Последний);}
 
  
   MqlDateTime MqlПервый;               // Теперь получить начало суток, обнулив часы
   TimeToStruct (Последний,MqlПервый);   // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour= 0 ;

  
  Первый= StructToTime (MqlПервый);             // Терерь надо обратно преобразовать во время
if (boom){
   Alert ( "Первый бар на часовом  " ,Первый);}   // Смотрим начало первого бара суток
  
   int НомерПервого= iBarShift (Символ, PERIOD_H1 ,Первый); // По времени определим номер первого бара суток
if (boom){
   Alert ( "Первый бар на часовом под номером " ,НомерПервого);}

// Можно было просто узнать время начала бара на D1

   // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
   // Найдем на этом интервале номера баров, где макс и мин
   // iHighest и iLowest находят номер бара с макс и мин ценой
 int   БарМакс = iHighest (Символ,   // symbol = инструмента
                Период,           // timeframe = Период
                 MODE_HIGH ,         // Наибольшая цена бара
                НомерПервого+ 1 ,   // Количество баров
                 0 );               // Начальный бар

int   БарМин  = iLowest (Символ,Период, MODE_LOW ,НомерПервого+ 1 , 0 ); // Наименьшая цена бара
                               
if (boom){
   Alert ( "Максимальный бар = " , БарМакс, "  Минимальный бар = " , БарМин);}
                                                                           

 
double max_price= iHigh (Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price= iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if (boom){
   Alert ( "Максимум цены = " , max_price, "  Минимум цены = " , min_price);
 
   Alert ( "Угол = " , ObjectGetDouble ( 0 , "Макс_Мин" , OBJPROP_ANGLE ));} // Теперь хорошо бы узнать угол               
}
 
STARIJ :

Sabah saat 4'te ise - bugün için hala birkaç bar var. H4'te günde sadece 6 bar vardır. aranacak çubuk sayısını veya kavşak sayısını ayarlamanız gerekir.

Uzun mesafeler = eğilim

Komut dosyası olarak çalıştırıyorum, her şey çalışıyor ve kodu bir danışman olarak derlersem, tüm satırlar yakınlarda, neyin ne olduğunu anlayamıyorum.