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

 
Vitaly Muzichenko :

Tamam, 4K ile bir mon arayacağım

Ve resim nereden?

 
Alexey Viktorov :

Ve resim nereden?

4K'dan gönderildi

 
Vitaly Muzichenko :

4K'dan gönderildi

Peki, tekrar kontrol edebilir misin? Ya da değil?

 
Alexey Viktorov :

Peki, tekrar kontrol edebilir misin? Ya da değil?

İstenmeyen)

 
Kodda özellik# sürümü tarafından tanımlanan programın MQL5 sürümünün değeri nasıl alınır?
 
leonerd :
Kodda özellik# sürümü tarafından tanımlanan programın MQL5 sürümünün değeri nasıl alınır?

Hiçbir şekilde, çünkü Önceden tanımlanmış makro ikamelerinde

Devamlı

Tanım

__TARİH__

Zamansız dosya derleme tarihi (saat, dakika ve saniye 0'dır)

__DATETIME__

Dosyanın derlendiği tarih ve saat

__ASTAR__

Bu makronun bulunduğu kaynak koddaki satır numarası

__DOSYA__

Şu anda derlenmiş dosyanın adı

__YOL__

Şu anda derlenmiş dosyanın mutlak yolu

__İŞLEV__

Makroyu içeren işlevin adı

__FUNCSI__

Makronun bulunduğu işlevin imzası. Fonksiyonun tam bir tanımını parametre türleri ile günlüğe kaydetmek, tanımlama için faydalı olabilir.   aşırı yüklenmiş fonksiyonlar

__MQLBUILD__, __MQL5BUILD__

Derleyici yapı numarası


böyle bir değişken yok

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
leonerd :
Kodda özellik# sürümü tarafından tanımlanan programın MQL5 sürümünün değeri nasıl alınır?

Ben bu şekilde kullanıyorum, başka bir seçenek bulamadım. Sürümü 2 kez kaydetmeniz gerekiyor, ancak o kadar da zor değil

 #property version      "23.25" // 16.04.2020
#define   version      "23.25"
 

İyi günler sevgili uzmanlar.

Söyleyin lütfen, önceki pozisyonu kapatan SATIŞ ile aynı çubukta ALIŞ pozisyonunun açılmasına izin vermeyen koddaki hata nerede?

Kurallar basittir (öğrenmesi):
1 Giriş - yavaş göstergeli geçiş 0 + hızlı da bölgede (al/sat)

2 Çıkış - hızlı gösterge 0 ile geçiş

 //+------------------------------------------------------------------+
//|                                                      TestDPO.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#include <Trade\Trade.mqh>
CTrade trade;

input int dpo_fast_period = 9 ;   // DPO Fast Period
input int dpo_slow_period = 40 ; // DPO Fast Period
input int magic = 1000 ;         // Magic советника
input ulong slippage = 10 ;         // Проскальзывание цены
input double volume = 0.1 ;       // размер позиции

int DPO_fast;                 // Хэндл для быстрого DPO
int DPO_slow;                 // Хэндл для медленного DPO


double fDPOVal[];                 //Динамический массив для хранения значений fast DPO
double sDPOVal[];                 //Динамический массив для хранения значений slow DPO

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {



   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---------------Задаем цены покупки и продажи------------------------
   double Ask= NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );
   double Bid= NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits );

   int signal= 0 ;   // сигнал на покупку, продажу

//--------------Проверка на новый бар
   if (!isNewBar())
       return ;
//--------------------------------------------------------------------

   DPO_fast= iCustom ( NULL , 0 , "Examples\\DPO" ,dpo_fast_period);   // получаем хэндлы для быстрого
   DPO_slow= iCustom ( NULL , 0 , "Examples\\DPO" ,dpo_slow_period); // получаем хэндлы для медленного


   ArraySetAsSeries (fDPOVal, true );               //задаем направление индексов массива
   ArraySetAsSeries (sDPOVal, true );
   if ( CopyBuffer (DPO_fast, 0 , 0 , 10 ,fDPOVal)< 0 )     // наполняем массив значений DPO fast
     {
       Alert ( "Ошибка копирования буфера индикатора fast DPO. Ошибка " , GetLastError ());
     }
   if ( CopyBuffer (DPO_slow, 0 , 0 , 10 ,sDPOVal)< 0 )     // наполняем массив значений DPO slow
     {
       Alert ( "Ошибка копирования буфера индикатора slow DPO. Ошибка " , GetLastError ());
     }

   double DPO_fast_c_value= NormalizeDouble (fDPOVal[ 1 ], 6 );   // запоминаем значение индикатора DPO fast на предыдущем баре
   double DPO_slow_c_value= NormalizeDouble (sDPOVal[ 1 ], 6 );   // запоминаем значение индикатора DPO slow на предыдущем баре
   double DPO_fast_p_value= NormalizeDouble (fDPOVal[ 2 ], 6 );   // запоминаем значение индикатора DPO fast на пред-предыдущем баре
   double DPO_slow_p_value= NormalizeDouble (sDPOVal[ 2 ], 6 );   // запоминаем значение индикатора DPO slow на пред-предыдущем баре

   if (DPO_slow_c_value> 0 && DPO_slow_p_value< 0 && DPO_fast_c_value> 0 )   // если медленный индикатор пересекает 0 снизу вверх и быстрый находится выше 0
      signal= 1 ;                                                           // сигнал на открытие покупки
   if (DPO_slow_c_value< 0 && DPO_slow_p_value> 0 && DPO_fast_c_value< 0 )   // если медленный индикатор пересекает 0 сверху вниз и быстрый находится ниже 0
      signal=- 1 ;                                                           // сигнал на открытие продажи
   if (DPO_fast_c_value> 0 && DPO_fast_p_value< 0 )                       // если быстрый индикатор пересекает 0 снизу вверх
      signal=- 2 ;                                                           // сигнал на закрытие продажи
   if (DPO_fast_c_value< 0 && DPO_fast_p_value> 0 )                       // если быстрый индикатор пересекает 0 сверху вниз
      signal= 2 ;                                                           // сигнал на закрытие покупки

switch (signal)
         {
         case - 1 :
         trade.Sell(volume, NULL ,Bid, 0 , 0 , NULL );
         break ;
         case 1 :
         trade.Buy(volume, NULL ,Ask, 0 , 0 , NULL );
         break ;
         case - 2 :
         trade.PositionClose( _Symbol ,slippage);
         break ;
         case 2 :
         trade.PositionClose( _Symbol ,slippage);
         break ;
	}
  }
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как я собираю себе советника методом тыка Из этих...
 
Andrey.Sabitov :

İyi günler sevgili uzmanlar.

Söyleyin lütfen, önceki pozisyonu kapatan SATIŞ ile aynı çubukta ALIŞ pozisyonunun açılmasına izin vermeyen koddaki hata nerede?

Kurallar basittir (öğrenmesi):
1 Giriş - yavaş göstergeli geçiş 0 + hızlı da bölgede (al/sat)

2 Çıkış - hızlı gösterge 0 ile geçiş

Her şey doğru çalışıyor: açılış koşulları, 0 çizgisini geçen yavaş göstergedir , belirtilen yerde sadece hızlı gösterge 0 çizgisini geçmiştir.

Belirli bir yerde bir pozisyon açmak için bir koşul eklemeniz, aynı bölgede yavaşlamanız ve 0 çizgisini hızlı geçmeniz gerekir.

 
Andrey.Sabitov :

İyi günler sevgili uzmanlar.

Söyleyin lütfen, önceki pozisyonu kapatan SATIŞ ile aynı çubukta ALIŞ pozisyonunun açılmasına izin vermeyen koddaki hata nerede?

Kurallar basittir (öğrenmesi):
1 Giriş - yavaş göstergeli geçiş 0 + hızlı da bölgede (al/sat)

2 Çıkış - hızlı gösterge 0 ile geçiş

Çok büyük bir hata yapıyorsunuz: HER KENAR ÜZERİNDE İKİ GÖSTERİCİ oluşturuyorsunuz!

 //--------------------------------------------------------------------

   DPO_fast= iCustom ( NULL , 0 , "Examples\\DPO" ,dpo_fast_period);   // получаем хэндлы для быстрого
   DPO_slow= iCustom ( NULL , 0 , "Examples\\DPO" ,dpo_slow_period); // получаем хэндлы для медленного

Gösterge tutamacı OnInit'te BİR KEZ KREDİYE ALINMALIDIR.


Lütfen iCustom yardımını okuyun.

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...