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

 
Vladimir Karputov :

Öğenin tanımını buldum. Ne tür bir hayvan olduğunu anladım. Tanımı mql5'te bulamamış olmam üzücü.

Ekonomide, bu gösterge için daha küçük bir değişiklik olmadığında bir göstergedeki minimum değişiklik bir noktadır . Bir nokta , göstergenin en son yayınlanan rakamındaki tek bir değişikliğe karşılık gelir.

Yardım için teşekkürler.

 
pivomoe :

Ekonomide, bu gösterge için daha küçük bir değişiklik olmadığında bir göstergedeki minimum değişiklik bir noktadır . Bir nokta , göstergenin en son yayınlanan rakamındaki tek bir değişikliğe karşılık gelir.

Daha da basit: Nokta = 10^(-Rakamlar) . Açıktır ki, örneğin bir pozisyon açmanın fiyatı, tam puan sayısına eşit olmayabilir.

 
fxsaber :

Açıktır ki, örneğin bir pozisyon açmanın fiyatı, tam puan sayısına eşit olmayabilir.

Bunun gibi ? örnek olabilir mi?

 
pivomoe :

Bunun gibi ? örnek olabilir mi?

Netleştirmede 1 lot ALIŞ yapın ve Satış fiyatı değiştiğinde 6 lot ALIŞ yapın.

 #include <MT4Orders.mqh>

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnInit ()
{
   OrderSend ( _Symbol , OP_BUY , 1 , Ask , 100 , 0 , 0 );
   Sleep ( 1 e4);
   OrderSend ( _Symbol , OP_BUY , 6 , Ask , 100 , 0 , 0 );

   if ( PositionSelect ( _Symbol ))
     Print ( PositionGetDouble ( POSITION_PRICE_OPEN ));
}
 
fxsaber :

Netleştirmede 1 lot ALIŞ yapın ve Satış fiyatı değiştiğinde 6 lot ALIŞ yapın.

İlginç bilgi.
 

MT4'ten iHighest işlevinin analogu hakkında yardım istiyorum - Danışmanın sorusuyla ilgileniyorum, en doğru şekilde nasıl yapılır?

Anladığım kadarıyla değerleri diziye kopyalamanız gerekiyor, ancak dizinin boyutunu belirlemek için çubuk sayısını saymanız gerektiği ortaya çıktı ...

Maksimum çubuğu bulmak için iki tarih bilen bir görevim var.

Lütfen bana belirli bir zaman dilimindeki çubuk sayısını nasıl hesaplayacağımı söyle?

 
Aleksey Vyazmikin :

MT4'ten iHighest işlevinin analogu hakkında yardım istiyorum - Danışmanın sorusuyla ilgileniyorum, en doğru şekilde nasıl yapılır?

Anladığım kadarıyla değerleri diziye kopyalamanız gerekiyor, ancak dizinin boyutunu belirlemek için çubuk sayısını saymanız gerektiği ortaya çıktı ...

Maksimum çubuğu bulmak için iki tarih bilen bir görevim var.

Lütfen bana belirli bir zaman dilimindeki çubuk sayısını nasıl hesaplayacağımı söyle?

3. parametreyi kullanmanız gerekir

Ayrıca, diziyi oluşturduktan sonra ArrayMaximum işlevini kullanarak maksimumu bulun.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyHigh
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyHigh
  • www.mql5.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Vitaly Muzichenko :

3. parametreyi kullanmanız gerekir

Ayrıca, diziyi oluşturduktan sonra ArrayMaximum işlevini kullanarak maksimumu bulun.


Bu anlaşılabilir, ancak çubuk sayısını bilmeden ArrayMaximum işlevini kullanamıyorum çünkü dizinin boyutunu bilmiyorum - maksimumu ayarlamak aptalca ama doğru çözümü istedim.

 

Böyle mi yaptı:

 MqlDateTime strDt;  
datetime          StartDt= TimeTradeServer ();
datetime          StopDt= TimeTradeServer ();
double           arrTimeD[];
TimeToStruct (StartDt,strDt);
   strDt.hour= 0 ;
   strDt.min= 0 ;
   strDt.sec= 0 ;
StartDt= StructToTime (strDt);   
int BarsGo= iBarShift ( _Symbol , 0 ,StartDt, false ); //Узнаем, индекс бара с начала временного периода (открытия дня)
ArrayFree (arrTimeD);
ArrayResize (arrTimeD,BarsGo);
CopyHigh ( _Symbol , _Period ,StartDt,StopDt,arrTimeD);
double Max=arrTimeD[ ArrayMaximum (arrTimeD, 0 ,BarsGo)];
Print ( "StartDt=" , TimeToString (StartDt, TIME_DATE | TIME_MINUTES ), " Max=" ,Max, " BarsGo=" ,BarsGo);

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int iBarShift ( string symbol, int tf, datetime time, bool exact= false )
  {
   if (time< 0 ) return (- 1 );
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime (symbol,timeframe, 0 , 1 ,Arr);
   time1=Arr[ 0 ];
   if ( CopyTime (symbol,timeframe,time,time1,Arr)> 0 )
     {
       if ( ArraySize (Arr)> 2 ) return ( ArraySize (Arr)- 1 );
       if (time<time1) return ( 1 );
       else return ( 0 );
     }
   else return (- 1 );
  }

Ama bunun en iyi seçenek olup olmadığından emin değilim.

 
//+------------------------------------------------------------------+
//|                                                          max.mq5 |
//|                                                   Copyright 2017 |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_plots 0
#property indicator_chart_window

double high_array[];
int CountBars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
  datetime start_time = D'2017.11.03 04:00', 
           stop_time  = D'2017.11.03 12:00';
   
  if(CopyHigh(Symbol(),PERIOD_CURRENT,start_time,stop_time,high_array) < 0) return(0);
  
  CountBars = Bars(Symbol(),PERIOD_CURRENT,start_time,stop_time);
  
   Print( "high_array=",high_array[ArrayMaximum(high_array)],", CountBars=",CountBars ); // максимум во временном диапазоне, и количество баров
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+