yürütme ilkesini döndürür. - sayfa 8

 

Mevcut hareketli ortalama verilerini bu şekilde alıyorum, doğru mu?

 input int       ma_period = 10 ;
 int ma_handle = 0 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
    ma_handle = iMA ( _Symbol , _Period ,ma_period, 0 , MODE_SMA , PRICE_MEDIAN );
   if (ma_handle == INVALID_HANDLE )
     {
       Print ( "ma_handle == INVALID_HANDLE" );
       return ( INIT_FAILED );
     }

   return ( INIT_SUCCEEDED );


  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  { 
   double    ma[ 1 ] ;
   if ( CopyBuffer (ma_handle, 0 , 0 , 1 ,ma)== 1 )
     {
     
     
     }
 }

İki soru.

1. Gösterge arabellek numarasının göstergeyle ilişkili olmadığı hiçbir şey. Bir kez bir gösterge olduğunda, otomatik olarak 0 arabelleği aldı ve ben onu belirttim.

2. Başlatmada gösterge tutamacım varsa, göstergeye iletilen parametreleri değiştirdiğimde, başlatma olayının gerçekleşmesi ve yeni parametrelerin uygulanması için danışmanı grafiğe yeniden yüklemem gerekir mi?

 
Ivan_Invanov :

Mevcut hareketli ortalama verilerini bu şekilde alıyorum, doğru mu?

İki soru.

1. Gösterge arabellek numarasının göstergeyle ilişkili olmadığı hiçbir şey. Bir kez bir gösterge olduğunda, otomatik olarak 0 arabelleği aldı ve ben onu belirttim.

2. Başlatmada gösterge tutamacım varsa, göstergeye iletilen parametreleri değiştirdiğimde, başlatma olayının gerçekleşmesi ve yeni parametrelerin uygulanması için danışmanı grafiğe yeniden yüklemem gerekir mi?

1. "Dernek" yoktur. Ve asla olmadı.

CopyBuffer'da yardım okuma

 int    CopyBuffer (
   int        indicator_handle,     // handle индикатора
   int        buffer_num,           // номер буфера индикатора
   int        start_pos,             // откуда начнем 
   int        count,                 // сколько копируем
   double     buffer[]               // массив, куда будут скопированы данные
   );

Gösterge tanıtıcısının iletildiği bir işlev vardır (sizin durumunuzda bu, ma_handle değişkenidir ve Hareketli Ortalama göstergesinin yalnızca bir arabelleği olduğundan, arabellek numarası '0' sıfırdır).


2. Expert Advisor'daki giriş parametrelerini değiştirirseniz, Expert Advisor'ın yeni bir başlatması olacak ve OnInit'te girdiğiniz parametrelerle bir gösterge tutacağı oluşturulacaktır.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
Vladimir Karputov :

1. "Dernek" yoktur. Ve asla olmadı.

...

SetIndexBuffer()' ı çağırmayı kastediyorum

 
Dmitry Fedoseev :

SetIndexBuffer()'ı çağırmayı kastediyorum

Evet. Gösterge arabellek numarasının ne olduğu, bu arabelleklerin nasıl oluşturulduğu, belirli bir göstergeye mi ait oldukları veya ortak bir numaralandırmaya sahip olup olmadıkları çok net değil. Belgeler, SetIndexBuffer() yazmanız gerektiğini söylüyor, ancak Hareketli Ortalama Uzman Danışmanı örneğinde yazılmamış. Yardımı okudum ve ek makaleler aradım ve yalnızca daha anlaşılmaz hale geldim. Önişlemciye arabellek belirtmek gerekli mi ve neden önişlemci yönergesindekinden bir tane daha az arabellek olmalı ve aynı sayıda değil.
 
Ivan_Invanov :
Evet. Gösterge arabellek numarasının ne olduğu, bu arabelleklerin nasıl oluşturulduğu, belirli bir göstergeye ait olup olmadığı veya ortak bir numaralandırmaya sahip olup olmadığı çok net değildir. Belgeler, SetIndexBuffer() yazmanız gerektiğini söylüyor, ancak Hareketli Ortalama Uzman Danışmanı örneğinde yazılmamış. Yardımı okudum ve ek makaleler aradım ve yalnızca daha anlaşılmaz hale geldim. Önişlemciye arabellek belirtmek gerekli mi ve neden önişlemci yönergesindekinden bir tane daha az arabellek olmalı ve aynı sayıda değil.

Eğer metafizik bir anlam ararsan... o zaman pek çok şey anlaşılmaz hale gelir. Bu sadece bir sayı. Belirli bir göstergeye aittir.

Uzman Danışmanların hiç gösterge arabelleği yoktur, bu nedenle SetIndexBufer() çağrısı olamaz.

Bir eksik değil, tamamen aynı. Sıfırdan sayarken, son sayı toplam sayıdan 1 eksiktir.

 
Teşekkür ederim.
 

Sakıncası yoksa birkaç soru daha cevaplayın lütfen.

1. Daha sonra hala bir şey atayacaksanız, neden bildirilen bir değişkene 0 atadığınızı anlamıyorum? Üstelik bazen 0 atanmaz, bazen atanır.

2. Deinitialization'da nesneleri silmeniz gerektiğini söylüyorlar (nedeni belli değil), ancak gösterge tutamacı bir nesnedir, ancak bir nedenden dolayı onu silmek geleneksel değildir, neden?

3.   MqlTradeRequest isteği={0}; Bu ne anlama geliyor? Eh, muhtemelen tüm yapıya 0 atanır, ancak sonuçta sadece sayısal türler değil.

4. Ve burada mantıksal işlem için ne var?

 bool    OrderSend (
   MqlTradeRequest &  request,       // структура запроса
   MqlTradeResult &   result         // структура ответа
   );
 
Ivan_Invanov :

Sakıncası yoksa birkaç soru daha cevaplayın lütfen.

1. Daha sonra hala bir şey atayacaksanız, neden bildirilen bir değişkene 0 atadığınızı anlamıyorum? Üstelik bazen 0 atanmaz, bazen atanır.

2. Deinitialization'da nesneleri silmeniz gerektiğini söylüyorlar (nedeni belli değil), ancak gösterge tutamacı bir nesnedir, ancak bir nedenden dolayı onu silmek geleneksel değildir, neden?

3.   MqlTradeRequest isteği={0}; Bu ne anlama geliyor? Eh, muhtemelen tüm yapıya 0 atanır, ancak sonuçta sadece sayısal türler değil.

4. Ve burada mantıksal işlem için ne var?

1. Alışkanlık dışı.

2. Bu farklı bir nesnedir. Daha sonra kendini boşaltacaktır, ancak bunu IndicatorRelease() işleviyle hızlandırabilirsiniz.

3. Temizlendi ve hepsi.

4. Bu mantıksal bir işlem değil, bir değişkeni referans olarak iletmektir.

 
Dmitry Fedoseev :

1. Alışkanlık dışı.

2. Bu farklı bir nesnedir. Daha sonra kendini boşaltacaktır, ancak bunu IndicatorRelease() işleviyle hızlandırabilirsiniz.

3. Temizlendi ve hepsi.

4. Bu mantıksal bir işlem değil, bir değişkeni referans olarak geçirmektir.

teşekkür etmek)
 
Bir şey karıştı. SYMBOL_TRADE_EXECUTION_MARKET yürütülürken. Anında icrada olduğu gibi emirlerin belirli bir fiyattan açılması için bir şey yapabilir miyim? Bekleyen bir siparişe ihtiyacım var mı? Bekleyen bir emir için piyasa alım satım talep formatı lütfen yazınız.