Çaydanlıktan gelen sorular - sayfa 243

 
paladin800 :
ArrayResize(Tampon, oranlar_toplam);

Yine de bunu yapmak için, en azından hata olmayacak.

 int start= 10 ;

Ve Euro M1'de düz bir çizgi = 0.014 çizin.

 

Güzel gün.

Nedense çalışmayan bazı kodlarım var.

m_symbol.Ask() yöntemindeki fiyat 0 değerini döndürür.

Kesinlikle kod yargıcı için. Sadece öğreniyorum. Yeterli eleştiriyi dinlemeye hazır.

Şimdiye kadar amaç bir poz açmaktı. Miktar henüz ilginç değil (Uygulaması kolay).

 //+------------------------------------------------------------------+
//|                                                        probe.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       ""
#property version   "1.00"
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
input int     perMA1= 3 ;
input int     perMA2= 7 ;
input double DifMANeed= 0 ;
input double InpLots= 0.1 ;
double DifMAN= 0 ;

CTrade m_trade;
CSymbolInfo m_symbol;

class MATest{
private :
   int MA1;     //First MA
   int MA2;     //Two MA
   
public :
   double DifMA;   //Diference of MA
   bool TradeAllowed();     
};
bool MATest::TradeAllowed(){
   MA1= iMA ( NULL , 0 ,perMA1, 0 , MODE_SMA , PRICE_CLOSE );
   MA2= iMA ( NULL , 0 ,perMA2, 0 , MODE_SMA , PRICE_CLOSE );
   double price=m_symbol.Ask();
   m_trade.SetDeviationInPoints( 5 );
   DifMA= MathAbs (MA1-MA2);
   Print (price);
   if (DifMA>DifMAN){
       if (MA1>MA2){
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,m_symbol.Ask(), 0 , 0 )){
             Print ( "Open Sell" );
        }
         else Print ( "Cant not open Sell" );
      }
       if (MA1<MA2){
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,m_symbol.Bid(), 0 , 0 )){
             Print ( "Open Buy" );
        }
         else Print ( "Cant not open Buy" ,m_symbol.Name(),m_symbol.Bid());
      
      }
       return ( true );
   }
   else return ( false );
};

MATest g_trade;

int OnInit ()
  {
//---
   string symb= Symbol ();
   m_symbol.Name(symb);
   
   Alert (m_symbol.Name(), " " , NormalizeDouble (m_symbol.Bid(),m_symbol. Digits ()));
   double close_array[];
       CopyClose ( NULL , 0 , 1 , 200 ,close_array);
   double high_array[];
       CopyHigh ( NULL , 0 , 1 , 200 ,high_array);
   double low_array[];
       CopyLow ( NULL , 0 , 1 , 200 ,low_array);
   double volant;
   for ( int i= ArraySize (close_array);i< 0 ;i--){
         volant+=(close_array[i]+high_array[i]+low_array[i])/ 3 ;
         volant=volant/ ArraySize (close_array);
      }
   if (DifMANeed== 0 ||DifMANeed>volant){
      DifMAN=volant;
   }
   
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (g_trade.TradeAllowed()) Comment (g_trade.DifMA, "  Trade Allowed" );
   else Comment (g_trade.DifMA, " Trade Not Allowed" );
  }
//+------------------------------------------------------------------+
 
panker :

Güzel gün.

Nedense çalışmayan bazı kodlarım var.

m_symbol.Ask() yöntemindeki fiyat 0 değerini döndürür.

Kesinlikle kod yargıcı için. Sadece öğreniyorum. Yeterli eleştiriyi dinlemeye hazır.

Şimdiye kadar amaç bir poz açmaktı. Miktar henüz ilginç değil (Uygulaması kolay).

Belki de SymbolSelect gibi bir işlevi kaçırıyorsunuzdur.

Bu durumda, bu Ad komutudur.

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfoask - nota bakın

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Ask
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Ask
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Ask - Документация по MQL5
 
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates - Документация по MQL5
 
panker : Nedense çalışmayan bazı kodlar var. m_symbol.Ask() yöntemindeki fiyat 0 değerini döndürür.
Kütüphanenin kendisinin uygulanmasına bakın. Ask() yöntemi aptalca m_tick.ask değerini döndürür. m_tick değerlerini güncellemek için RefreshRates() yöntemi sağlanır. ..kendimi geçtim :)
 

Birisi lütfen bazı örnek kodlar verebilir mi?

"Ondalık kaydırma çubuğu" nasıl oluşturulur?

MQL5 sınıfı CScroll kullandım . https://www.mql5.com/en/docs/standardlibrary/controls/cscroll

Documentation on MQL5: Standard Library / Classes for Control Panels and Dialogs / CScroll
Documentation on MQL5: Standard Library / Classes for Control Panels and Dialogs / CScroll
  • www.mql5.com
Standard Library / Classes for Control Panels and Dialogs / CScroll - Documentation on MQL5
 
Yanlış hatırlamıyorsam OnDeinit() fonksiyonunun çalışması 2,5 saniye sürüyor. Soru 1: Bu süre içinde tüm gösterge tutamaçları serbest bırakılmazsa ne olur? Soru 2: OnInit() işlevinin eylemi için bir zaman sınırı var mı?
 
paladin800 :

Yanlış hatırlamıyorsam OnDeinit() fonksiyonunun çalışması 2,5 saniye sürüyor.

Soru 1: Bu süre içinde tüm gösterge tutamaçları serbest bırakılmazsa ne olur?

Gösterge tutamaçları genellikle MT5'te ayrı bir konudur. Serbest bırakılmaları EA'nın kendisi tarafından çok fazla kontrol edilmediğinden (yalnızca onlara ihtiyaç duymadığına ve tutamaç değerini sıfırladığına dair bir komut verebilir), ancak terminalin kendisi tarafından (tümünün tamamen kaldırılmasıyla ilgili nihai kararı verir) bellekten yönetin).


Soru 2: OnInit() işlevinin eylemi için bir zaman sınırı var mı?

Numara
 

Söyle bana, yılda hangi "kar koridoru" olmalı? (içinde %%)

Dosyalar:
12.png  45 kb
 
Çok para birimli bir Uzman Danışman yazıyorum, burada enstrüman adı, Symbol0="EURUSD" dizesi gibi giriş parametrelerinde belirtilmiş. Yanlışlıkla adını yazarsam, ticaret gitmez. Soru: Aracın adlarını komisyoncu tarafından sağlanan araçlarla karşılaştıracak bir işlev var mı?
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5